Skip to content

Commit 7b3efab

Browse files
lsy1968shanye997
authored andcommitted
201-use-case-nlb-quickly-implements-load-balancing-for-ipv4-services
1 parent 842eeca commit 7b3efab

File tree

2 files changed

+61
-42
lines changed
  • quickstarts/Network_Load_Balancer(NLB)/201-use-case-nlb-quickly-implements-load-balancing-for-ipv4-services

2 files changed

+61
-42
lines changed

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

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

5051
## Inputs
5152

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

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

Lines changed: 58 additions & 41 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 = "ipv4"
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网段
3240
vpc_cidr_block = "172.16.0.0/16"
@@ -35,10 +43,13 @@ locals {
3543
# backup交换机网段
3644
backup_vsw_cidr_block = "172.16.2.0/24"
3745
# ECS规格
38-
instance_type = "ecs.e-c1m1.large"
46+
ecs_instance_type = "ecs.e-c1m1.large"
3947
# ECS系统镜像
40-
image_id = "aliyun_2_1903_x64_20G_alibase_20240628.vhd"
48+
image_id = "aliyun_2_1903_x64_20G_alibase_20240628.vhd"
49+
# 磁盘类型
4150
available_disk_category = "cloud_essd"
51+
# 提取地区交集
52+
intersection_zones = tolist(setintersection(data.alicloud_nlb_zones.example.ids, data.alicloud_zones.example.ids))
4253
# ECS中部署服务脚本
4354
master_ecs_command = <<EOS
4455
yum install -y nginx
@@ -70,15 +81,15 @@ resource "alicloud_vpc" "example" {
7081
resource "alicloud_vswitch" "master_vswitch" {
7182
vpc_id = alicloud_vpc.example.id
7283
cidr_block = local.master_vsw_cidr_block
73-
zone_id = data.alicloud_zones.example.zones[0].id
84+
zone_id = local.intersection_zones[0]
7485
vswitch_name = "master_vswitch_test_${random_integer.example.result}"
7586
}
7687

7788
# backup交换机
7889
resource "alicloud_vswitch" "backup_vswitch" {
7990
vpc_id = alicloud_vpc.example.id
8091
cidr_block = local.backup_vsw_cidr_block
81-
zone_id = data.alicloud_zones.example.zones[1].id
92+
zone_id = local.intersection_zones[1]
8293
vswitch_name = "backup_vswitch_test_${random_integer.example.result}"
8394
}
8495

@@ -114,32 +125,32 @@ resource "alicloud_security_group_rule" "egress" {
114125

115126
# mster ECS实例
116127
resource "alicloud_instance" "master_example" {
117-
availability_zone = data.alicloud_zones.example.zones[0].id
128+
availability_zone = local.intersection_zones[0]
118129
security_groups = alicloud_security_group.example.*.id
119-
instance_type = local.instance_type
130+
instance_type = local.ecs_instance_type
120131
system_disk_category = local.available_disk_category
121132
system_disk_name = "master_system_disk_name_${random_integer.example.result}"
122133
system_disk_description = "master_system_disk_description_${random_integer.example.result}"
123134
image_id = local.image_id
124135
instance_name = "master_instance_name_${random_integer.example.result}"
125136
vswitch_id = alicloud_vswitch.master_vswitch.id
126137
internet_max_bandwidth_out = 10
127-
password = var.password
138+
password = var.ecs_password
128139
}
129140

130141
# backup ECS实例
131142
resource "alicloud_instance" "backup_example" {
132-
availability_zone = data.alicloud_zones.example.zones[1].id
143+
availability_zone = local.intersection_zones[1]
133144
security_groups = alicloud_security_group.example.*.id
134-
instance_type = local.instance_type
145+
instance_type = local.ecs_instance_type
135146
system_disk_category = local.available_disk_category
136147
system_disk_name = "backup_system_disk_name_${random_integer.example.result}"
137148
system_disk_description = "backup_system_disk_description_${random_integer.example.result}"
138149
image_id = local.image_id
139150
instance_name = "backup_instance_name_${random_integer.example.result}"
140151
vswitch_id = alicloud_vswitch.backup_vswitch.id
141152
internet_max_bandwidth_out = 10
142-
password = var.password
153+
password = var.ecs_password
143154
}
144155

145156
# master ECS命令
@@ -151,6 +162,9 @@ resource "alicloud_ecs_command" "master_ecs_command" {
151162
command_content = base64encode(local.master_ecs_command)
152163
timeout = 3600
153164
working_dir = "/root"
165+
lifecycle {
166+
ignore_changes = [command_content]
167+
}
154168
}
155169

156170
# 在master ECS中执行命令
@@ -171,6 +185,9 @@ resource "alicloud_ecs_command" "backup_ecs_command" {
171185
command_content = base64encode(local.backup_ecs_command)
172186
timeout = 3600
173187
working_dir = "/root"
188+
lifecycle {
189+
ignore_changes = [command_content]
190+
}
174191
}
175192

176193
# 在backup ECS中执行命令
@@ -182,6 +199,23 @@ resource "alicloud_ecs_invocation" "backup_invocation" {
182199
}
183200
}
184201

202+
# nlb 实例
203+
resource "alicloud_nlb_load_balancer" "example" {
204+
load_balancer_name = "load_balancer_name_${random_integer.example.result}"
205+
load_balancer_type = "Network"
206+
address_type = "Internet"
207+
address_ip_version = "Ipv4"
208+
vpc_id = alicloud_vpc.example.id
209+
zone_mappings {
210+
vswitch_id = alicloud_vswitch.master_vswitch.id
211+
zone_id = alicloud_vswitch.master_vswitch.zone_id
212+
}
213+
zone_mappings {
214+
vswitch_id = alicloud_vswitch.backup_vswitch.id
215+
zone_id = alicloud_vswitch.backup_vswitch.zone_id
216+
}
217+
}
218+
185219
# nlb服务器组
186220
resource "alicloud_nlb_server_group" "example" {
187221
server_group_name = "server_group_name_${random_integer.example.result}"
@@ -228,23 +262,6 @@ resource "alicloud_nlb_server_group_server_attachment" "attachment_backup_ecs" {
228262
weight = 100
229263
}
230264

231-
# nlb 实例
232-
resource "alicloud_nlb_load_balancer" "example" {
233-
load_balancer_name = "load_balancer_name_${random_integer.example.result}"
234-
load_balancer_type = "Network"
235-
address_type = "Internet"
236-
address_ip_version = "Ipv4"
237-
vpc_id = alicloud_vpc.example.id
238-
zone_mappings {
239-
vswitch_id = alicloud_vswitch.master_vswitch.id
240-
zone_id = alicloud_vswitch.master_vswitch.zone_id
241-
}
242-
zone_mappings {
243-
vswitch_id = alicloud_vswitch.backup_vswitch.id
244-
zone_id = alicloud_vswitch.backup_vswitch.zone_id
245-
}
246-
}
247-
248265
# nlb监听
249266
resource "alicloud_nlb_listener" "default" {
250267
listener_protocol = "TCP"
@@ -262,7 +279,7 @@ resource "alicloud_nlb_listener" "default" {
262279
resource "alicloud_dns_record" "example" {
263280
name = var.host_name
264281
type = "CNAME"
265-
host_record = "@"
282+
host_record = var.host_record
266283
value = alicloud_nlb_load_balancer.example.dns_name
267284
ttl = 600
268285
}

0 commit comments

Comments
 (0)