我正在尝试创建和配置负载均衡器。可用区部分只有一个子网和一个区域。
我遇到了错误:
必须指定至少两个子网。
简单问题 - 我该怎么做?谢谢。
我正在尝试创建和配置负载均衡器。可用区部分只有一个子网和一个区域。
我遇到了错误:
必须指定至少两个子网。
简单问题 - 我该怎么做?谢谢。
首先需要在您的VPC中创建两个或更多的子网。通常最好为您的区域中的每个可用区(AZ)创建至少一个子网。请确保根据您的架构选择公共/私有。
AWS文档中没有具体的示例,但请确保先了解VPC概念和子网的创建。有关创建子网的最接近示例演练,请参见场景和示例。
现在在配置ELB时选择子网应该很简单了。
setting {
namespace = "aws:ec2:vpc"
name = "Subnets"
value = "${lookup(var.vpc_subnets, format("%s_%s", var.location, var.availability_zone))}, ${lookup(var.vpc_subnets, format("%s_%s", var.location, var.secondary_availability_zone))}"
}
像这样的variables.tf:
variable "vpc_subnets" {
type = "map"
default = {
"frankfurt_a" = "subnet-12345671"
"frankfurt_b" = "subnet-12345672"
"frankfurt_c" = "subnet-12345673"
"ireland_a" = "subnet-12345674"
"ireland_b" = "subnet-12345675"
"ireland_c" = "subnet-12345676"
}
}
variable "availability_zone" {
default = "a"
}
variable "secondary_availability_zone" {
default = "b"
}
variable "regions" {
type = "map"
default = {
"frankfurt" = "eu-central-1"
"ireland" = "eu-west-1"
"london" = "eu-west-2"
}
}
variable "location" {
default = "ireland"
}
value = "subnet-1, subnet-2, subnet-3"
。 - Jonas有一种更简单的方法来解决这个问题。可以参考下面的文档代码作为示例。
resource "aws_lb" "test" {
name = "test-lb-tf"
internal = false
load_balancer_type = "application"
security_groups = [aws_security_group.lb_sg.id]
subnets = [for subnet in aws_subnet.public : subnet.id]
enable_deletion_protection = true
access_logs {
bucket = aws_s3_bucket.lb_logs.id
prefix = "test-lb"
enabled = true
}
tags = {
Environment = "production"
}
}
subnets = [for subnet in aws_subnet.public : subnet.id]
以避免复杂性。希望这回答了您的问题。 - augusto valdivia