Skip to content

Commit 13cbc98

Browse files
lsy1968shanye997
authored andcommitted
201-use-case-slb-quickly-implements-load-balancing-for-ipv4-service
1 parent 6f64116 commit 13cbc98

File tree

2 files changed

+41
-22
lines changed
  • quickstarts/Classic_Load_Balancer(SLB)/201-use-case-slb-quickly-implements-load-balancing-for-ipv4-service

2 files changed

+41
-22
lines changed

quickstarts/Classic_Load_Balancer(SLB)/201-use-case-slb-quickly-implements-load-balancing-for-ipv4-service/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,16 @@ No modules.
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 |
4949
| [time_sleep.example](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |
50+
| [alicloud_slb_zones.example](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/slb_zones) | data source |
5051
| [alicloud_zones.example](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/zones) | data source |
5152

5253
## Inputs
5354

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

quickstarts/Classic_Load_Balancer(SLB)/201-use-case-slb-quickly-implements-load-balancing-for-ipv4-service/main.tf

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +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-
}
165
# ECS登录密码
17-
variable "password" {
6+
variable "ecs_password" {
187
type = string
198
default = "Terraform@Example"
209
}
@@ -26,6 +15,26 @@ variable "host_name" {
2615
description = "your domain name"
2716
}
2817

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+
# 查询支持CLB的可用区
30+
data "alicloud_slb_zones" "example" {}
31+
32+
# 可用区
33+
data "alicloud_zones" "example" {
34+
available_resource_creation = "VSwitch"
35+
available_disk_category = local.available_disk_category
36+
}
37+
2938
locals {
3039
available_disk_category = "cloud_essd"
3140
# ECS系统镜像
@@ -38,7 +47,8 @@ locals {
3847
backup_vsw_cidr_block = "172.16.2.0/24"
3948
# master交换机网段
4049
master_vsw_cidr_block = "172.16.0.0/24"
41-
50+
# 提取地区交集
51+
intersection_zones = tolist(setintersection(data.alicloud_slb_zones.example.ids, data.alicloud_zones.example.ids))
4252
# ECS中部署服务脚本
4353
master_ecs_command = <<EOS
4454
yum install -y nginx
@@ -70,15 +80,15 @@ resource "alicloud_vpc" "example" {
7080
resource "alicloud_vswitch" "master_vswitch" {
7181
vpc_id = alicloud_vpc.example.id
7282
cidr_block = local.master_vsw_cidr_block
73-
zone_id = data.alicloud_zones.example.zones[0].id
83+
zone_id = local.intersection_zones[0]
7484
vswitch_name = "master_vswitch_test_${random_integer.example.result}"
7585
}
7686

7787
# backup交换机
7888
resource "alicloud_vswitch" "backup_vswitch" {
7989
vpc_id = alicloud_vpc.example.id
8090
cidr_block = local.backup_vsw_cidr_block
81-
zone_id = data.alicloud_zones.example.zones[1].id
91+
zone_id = local.intersection_zones[1]
8292
vswitch_name = "backup_vswitch_test_${random_integer.example.result}"
8393
}
8494

@@ -106,15 +116,15 @@ resource "alicloud_security_group_rule" "egress" {
106116
ip_protocol = "tcp" # TCP协议
107117
nic_type = "intranet" # 内网网卡类型(VPC环境)
108118
policy = "accept" # 允许策略
109-
port_range = "8/80" # 允许80端口
119+
port_range = "80/80" # 允许80端口
110120
priority = 1 # 优先级设置
111121
security_group_id = alicloud_security_group.example.id # 关联的安全组ID
112122
cidr_ip = "10.0.0.0/8" # 允许的IP地址范围,示例为10.0.0.0/8
113123
}
114124

115125
# mster ECS实例
116126
resource "alicloud_instance" "master_example" {
117-
availability_zone = data.alicloud_zones.example.zones[0].id
127+
availability_zone = local.intersection_zones[0]
118128
security_groups = alicloud_security_group.example.*.id
119129
instance_type = local.instance_type
120130
system_disk_category = local.available_disk_category
@@ -124,12 +134,12 @@ resource "alicloud_instance" "master_example" {
124134
instance_name = "master_instance_name_${random_integer.example.result}"
125135
vswitch_id = alicloud_vswitch.master_vswitch.id
126136
internet_max_bandwidth_out = 10
127-
password = var.password
137+
password = var.ecs_password
128138
}
129139

130140
# backup ECS实例
131141
resource "alicloud_instance" "backup_example" {
132-
availability_zone = data.alicloud_zones.example.zones[1].id
142+
availability_zone = local.intersection_zones[1]
133143
security_groups = alicloud_security_group.example.*.id
134144
instance_type = local.instance_type
135145
system_disk_category = local.available_disk_category
@@ -139,7 +149,7 @@ resource "alicloud_instance" "backup_example" {
139149
instance_name = "backup_instance_name_${random_integer.example.result}"
140150
vswitch_id = alicloud_vswitch.backup_vswitch.id
141151
internet_max_bandwidth_out = 10
142-
password = var.password
152+
password = var.ecs_password
143153
}
144154

145155
# master ECS命令
@@ -151,6 +161,9 @@ resource "alicloud_ecs_command" "master_ecs_command" {
151161
command_content = base64encode(local.master_ecs_command)
152162
timeout = 3600
153163
working_dir = "/root"
164+
lifecycle {
165+
ignore_changes = [command_content]
166+
}
154167
}
155168

156169
# 在master ECS中执行命令
@@ -171,6 +184,9 @@ resource "alicloud_ecs_command" "backup_ecs_command" {
171184
command_content = base64encode(local.backup_ecs_command)
172185
timeout = 3600
173186
working_dir = "/root"
187+
lifecycle {
188+
ignore_changes = [command_content]
189+
}
174190
}
175191

176192
# 在backup ECS中执行命令
@@ -226,6 +242,7 @@ resource "alicloud_slb_server_group_server_attachment" "backup_attachment_master
226242
description = "backup"
227243
}
228244

245+
# 创建监听
229246
resource "alicloud_slb_listener" "example" {
230247
description = "description_${random_integer.example.result}"
231248
load_balancer_id = alicloud_slb_load_balancer.example.id
@@ -240,7 +257,7 @@ resource "alicloud_slb_listener" "example" {
240257
resource "alicloud_dns_record" "example" {
241258
name = var.host_name
242259
type = "A"
243-
host_record = "WWWW"
260+
host_record = var.host_record
244261
value = alicloud_slb_load_balancer.example.address
245262
ttl = 600
246263
}

0 commit comments

Comments
 (0)