Skip to content

Commit 6f64116

Browse files
lsy1968shanye997
authored andcommitted
201-use-case-nlb-quickly-implements-load-balancing-for-ipv6-services
1 parent 7b3efab commit 6f64116

File tree

2 files changed

+40
-22
lines changed
  • quickstarts/Network_Load_Balancer(NLB)/201-use-case-nlb-quickly-implements-load-balancing-for-ipv6-services

2 files changed

+40
-22
lines changed

quickstarts/Network_Load_Balancer(NLB)/201-use-case-nlb-quickly-implements-load-balancing-for-ipv6-services/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,16 @@ No modules.
4646
| [alicloud_vswitch.backup_vswitch](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
4747
| [alicloud_vswitch.master_vswitch](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
4848
| [random_integer.example](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/integer) | resource |
49+
| [alicloud_nlb_zones.example](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/nlb_zones) | data source |
4950
| [alicloud_zones.example](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/zones) | data source |
5051

5152
## Inputs
5253

5354
| Name | Description | Type | Default | Required |
5455
|------|-------------|------|---------|:--------:|
56+
| <a name="input_ecs_password"></a> [ecs\_password](#input\_ecs\_password) | ECS登录密码 | `string` | `"Terraform@Example"` | no |
5557
| <a name="input_host_name"></a> [host\_name](#input\_host\_name) | your domain name | `string` | `"tf-example.com"` | no |
56-
| <a name="input_password"></a> [password](#input\_password) | ECS登录密码 | `string` | `"Terraform@Example"` | no |
58+
| <a name="input_host_record"></a> [host\_record](#input\_host\_record) | Host Record,like image | `string` | `"image"` | no |
5759
| <a name="input_region"></a> [region](#input\_region) | n/a | `string` | `"cn-beijing"` | no |
5860
<!-- END_TF_DOCS -->
5961

quickstarts/Network_Load_Balancer(NLB)/201-use-case-nlb-quickly-implements-load-balancing-for-ipv6-services/main.tf

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,8 @@ variable "region" {
22
default = "cn-beijing"
33
}
44

5-
provider "alicloud" {
6-
region = var.region
7-
}
8-
9-
# 可用区
10-
data "alicloud_zones" "example" {
11-
available_resource_creation = "VSwitch"
12-
available_disk_category = local.available_disk_category
13-
available_slb_address_ip_version = "ipv6"
14-
available_slb_address_type = "classic_internet"
15-
}
16-
175
# ECS登录密码
18-
variable "password" {
6+
variable "ecs_password" {
197
type = string
208
default = "Terraform@Example"
219
}
@@ -27,6 +15,26 @@ variable "host_name" {
2715
description = "your domain name"
2816
}
2917

18+
# 主机记录
19+
variable "host_record" {
20+
type = string
21+
default = "image"
22+
description = "Host Record,like image"
23+
}
24+
25+
provider "alicloud" {
26+
region = var.region
27+
}
28+
29+
# 查询支持NLB的可用区
30+
data "alicloud_nlb_zones" "example" {}
31+
32+
# 可用区
33+
data "alicloud_zones" "example" {
34+
available_resource_creation = "VSwitch"
35+
available_disk_category = local.available_disk_category
36+
}
37+
3038
locals {
3139
# 专有网络VPC ipv4网段
3240
vpc_cidr_ipv4_block = "172.16.0.0/16"
@@ -39,6 +47,8 @@ locals {
3947
backup_vsw_cidr_ipv4_block = "172.16.2.0/24"
4048
# ECS规格
4149
instance_type = "ecs.e-c1m1.large"
50+
# 提取地区交集
51+
intersection_zones = tolist(setintersection(data.alicloud_nlb_zones.example.ids, data.alicloud_zones.example.ids))
4252
# ECS中部署服务脚本
4353
master_ecs_command = <<EOS
4454
yum install -y nginx
@@ -83,7 +93,7 @@ resource "alicloud_vswitch" "master_vswitch" {
8393
vpc_id = alicloud_vpc.example.id
8494
enable_ipv6 = true
8595
cidr_block = local.master_vsw_cidr_ipv4_block
86-
zone_id = data.alicloud_zones.example.zones[0].id
96+
zone_id = local.intersection_zones[0]
8797
ipv6_cidr_block_mask = 64
8898
vswitch_name = "master_vswitch_test_${random_integer.example.result}"
8999
}
@@ -93,7 +103,7 @@ resource "alicloud_vswitch" "backup_vswitch" {
93103
vpc_id = alicloud_vpc.example.id
94104
enable_ipv6 = true
95105
cidr_block = local.backup_vsw_cidr_ipv4_block
96-
zone_id = data.alicloud_zones.example.zones[1].id
106+
zone_id = local.intersection_zones[1]
97107
ipv6_cidr_block_mask = 54
98108
vswitch_name = "backup_vswitch_test_${random_integer.example.result}"
99109
}
@@ -122,15 +132,15 @@ resource "alicloud_security_group_rule" "egress" {
122132
ip_protocol = "tcp" # TCP协议
123133
nic_type = "intranet" # 内网网卡类型(VPC环境)
124134
policy = "accept" # 允许策略
125-
port_range = "8/80" # 允许80端口
135+
port_range = "80/80" # 允许80端口
126136
priority = 1 # 优先级设置
127137
security_group_id = alicloud_security_group.example.id # 关联的安全组ID
128138
cidr_ip = "10.0.0.0/8" # 允许的IP地址范围,示例为10.0.0.0/8
129139
}
130140

131141
# mster ECS实例
132142
resource "alicloud_instance" "master_example" {
133-
availability_zone = data.alicloud_zones.example.zones[0].id
143+
availability_zone = local.intersection_zones[0]
134144
security_groups = alicloud_security_group.example.*.id
135145
instance_type = local.instance_type
136146
system_disk_category = local.available_disk_category
@@ -140,13 +150,13 @@ resource "alicloud_instance" "master_example" {
140150
instance_name = "master_instance_name_${random_integer.example.result}"
141151
vswitch_id = alicloud_vswitch.master_vswitch.id
142152
internet_max_bandwidth_out = 10
143-
password = var.password
153+
password = var.ecs_password
144154
ipv6_address_count = 1
145155
}
146156

147157
# backup ECS实例
148158
resource "alicloud_instance" "backup_example" {
149-
availability_zone = data.alicloud_zones.example.zones[1].id
159+
availability_zone = local.intersection_zones[1]
150160
security_groups = alicloud_security_group.example.*.id
151161
instance_type = local.instance_type
152162
system_disk_category = local.available_disk_category
@@ -156,7 +166,7 @@ resource "alicloud_instance" "backup_example" {
156166
instance_name = "backup_instance_name_${random_integer.example.result}"
157167
vswitch_id = alicloud_vswitch.backup_vswitch.id
158168
internet_max_bandwidth_out = 10
159-
password = var.password
169+
password = var.ecs_password
160170
}
161171

162172
# master ECS命令
@@ -168,6 +178,9 @@ resource "alicloud_ecs_command" "master_ecs_command" {
168178
command_content = base64encode(local.master_ecs_command)
169179
timeout = 3600
170180
working_dir = "/root"
181+
lifecycle {
182+
ignore_changes = [command_content]
183+
}
171184
}
172185

173186
# 在master ECS中执行命令
@@ -188,6 +201,9 @@ resource "alicloud_ecs_command" "backup_ecs_command" {
188201
command_content = base64encode(local.backup_ecs_command)
189202
timeout = 3600
190203
working_dir = "/root"
204+
lifecycle {
205+
ignore_changes = [command_content]
206+
}
191207
}
192208

193209
# 在backup ECS中执行命令
@@ -282,7 +298,7 @@ resource "alicloud_nlb_listener" "default" {
282298
resource "alicloud_dns_record" "example" {
283299
name = var.host_name
284300
type = "CNAME"
285-
host_record = "@"
301+
host_record = var.host_record
286302
value = alicloud_nlb_load_balancer.example.dns_name
287303
ttl = 600
288304
}

0 commit comments

Comments
 (0)