google-cloud-platform - Terraform 和 GCS : how to create a multi zone LB

标签 google-cloud-platform terraform

我想创建一个负载均衡器来处理 GCP 中同一区域的多个区域中的两个或多个实例

我是这样开始的: - 创建一个针对两个实例组的后端服务:

resource "google_compute_backend_service" "www-service" {
  name     = "${var.environment}-www-service"
  protocol = "HTTP"
  port_name   = "http"

  backend {
    group = "${google_compute_instance_group.instance-group-0.self_link}"
  }

  backend {
    group = "${google_compute_instance_group.instance-group-1.self_link}"
  }

  health_checks = ["${google_compute_health_check.health-check1.self_link}"]
}

然后我有两个实例组,每个实例组都有一个具有该语法的实例:

resource "google_compute_instance_group" "instance-group-0" {
  count        = "${var.web_count}"
  name = "${var.environment}-instance-group-0"

  instances = ["${google_compute_instance.www.self_link}"]

  named_port {
    name = "http"
    port = "80"
  }
  network = "${google_compute_network.platform-network.self_link}"
}

我收到一个错误:

google_compute_backend_service.www-service: Resource 'google_compute_instance_group.instance-group-0' not found for variable 'google_compute_instance_group.instance-group-0.self_link'

我看到在 backend_service 中切换后端/组声明会将错误移至 group-1,因此我猜这不是正确的语法,尽管您可以在 Google GUI 中创建具有多个实例组的 ba​​ckend_service。

我有两个问题:

Q1。如何创建具有多个实例组的后端服务? 什么是正确的语法?

Q2。是否可以通过如下语法在 compute_instance_group 中引用 compute_instance:

instances = ["${google_compute_instance.www.[count.index].self_link}"]

(以上语法无效)

最佳答案

感谢您的回答

最后我在多个 Github 票证中找到了语法:

resource "google_compute_instance_group" "instance-group-0" {
  name = "${var.environment}-instance-group-0"
  zone = "${data.google_compute_zones.available.names[0]}" 

  instances = ["${slice(google_compute_instance.www.*.self_link, 0, floor(var.web_count/2)-1)}"]

  named_port {
    name = "http"
    port = "80"
  }
  network = "${google_compute_network.platform-network.self_link}"
} 

实例组 1 相同,但切片不同

然后:

resource "google_compute_instance" "www" {
  count        = "${var.web_count}"
  zone         =  "${data.google_compute_zones.available.names[floor((2*count.index)/var.web_count)]"}

我必须说,可以采取不同的设计决策: - 使用区域托管实例组更简单,除了模板是静态的 - 使用 Kubernetes

关于google-cloud-platform - Terraform 和 GCS : how to create a multi zone LB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49198032/

相关文章:

google-cloud-platform - 为什么 Google Compute Engine 没有运行我的容器?

kubernetes - 将现有实例添加到kubernetes集群

amazon-web-services - Terraform启用vpc流日志到亚马逊s3

terraform - 使用 terraform 添加 azure SQL 用户

dictionary - Terraform 多层 map

azure - terraform azurerm_virtual_machine_extension 设置上的动态 block

node.js - Google Cloud Endpoints 安全

google-cloud-platform - 如何从前端移动客户端发布到 Google Pub/Sub?

mongodb - 无法在 Ubuntu 中启动副本集

terraform - 如何通过 terraform 设置 GCP CloudSQL