Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions solution/tech-solution/alb-acrlb/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
## Introduction
<!-- DOCS_DESCRIPTION_CN -->
本示例用于实现解决方案[ALB 实现跨地域负载均衡](https://www.aliyun.com/solution/tech-solution/alb-acrlb), 涉及到涉及到专有网络(VPC)、交换机(VSwitch)、云服务器(ECS)、云企业网(CEN)、应用型负载均衡(ALB)等资源的创建。
<!-- DOCS_DESCRIPTION_CN -->

<!-- DOCS_DESCRIPTION_EN -->
This example demonstrates the implementation of the solution [Implementing Cross-Region Load Balancing with ALB](https://www.aliyun.com/solution/tech-solution/alb-acrlb). It involves the creation, configuration, and deployment of resources such as Virtual Private Cloud (VPC), VSwitch, Elastic Compute Service (ECS), Cloud Enterprise Network (CEN), Application Load Balancer (ALB).
<!-- DOCS_DESCRIPTION_EN -->

<!-- BEGIN_TF_DOCS -->
## Providers

No providers.

## Modules

No modules.

## Resources

No resources.

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_alb_chengdu_back_to_source_routing_cidr1"></a> [alb\_chengdu\_back\_to\_source\_routing\_cidr1](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr1) | n/a | `string` | `"100.117.130.0/25"` | no |
| <a name="input_alb_chengdu_back_to_source_routing_cidr2"></a> [alb\_chengdu\_back\_to\_source\_routing\_cidr2](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr2) | n/a | `string` | `"100.117.130.128/25"` | no |
| <a name="input_alb_chengdu_back_to_source_routing_cidr3"></a> [alb\_chengdu\_back\_to\_source\_routing\_cidr3](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr3) | n/a | `string` | `"100.117.131.0/25"` | no |
| <a name="input_alb_chengdu_back_to_source_routing_cidr4"></a> [alb\_chengdu\_back\_to\_source\_routing\_cidr4](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr4) | n/a | `string` | `"100.117.131.128/25"` | no |
| <a name="input_alb_chengdu_back_to_source_routing_cidr5"></a> [alb\_chengdu\_back\_to\_source\_routing\_cidr5](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr5) | n/a | `string` | `"100.122.175.64/26"` | no |
| <a name="input_alb_chengdu_back_to_source_routing_cidr6"></a> [alb\_chengdu\_back\_to\_source\_routing\_cidr6](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr6) | n/a | `string` | `"100.122.175.128/26"` | no |
| <a name="input_alb_chengdu_back_to_source_routing_cidr7"></a> [alb\_chengdu\_back\_to\_source\_routing\_cidr7](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr7) | n/a | `string` | `"100.122.175.192/26"` | no |
| <a name="input_alb_chengdu_back_to_source_routing_cidr8"></a> [alb\_chengdu\_back\_to\_source\_routing\_cidr8](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr8) | n/a | `string` | `"100.122.176.0/26"` | no |
| <a name="input_ecs_password"></a> [ecs\_password](#input\_ecs\_password) | Password for ECS instances | `string` | `"Test12345!"` | no |
| <a name="input_region"></a> [region](#input\_region) | 地域 | `string` | `"cn-hangzhou"` | no |
| <a name="input_region1"></a> [region1](#input\_region1) | n/a | `string` | `"cn-chengdu"` | no |
| <a name="input_region2"></a> [region2](#input\_region2) | n/a | `string` | `"cn-shanghai"` | no |
| <a name="input_region3"></a> [region3](#input\_region3) | n/a | `string` | `"cn-qingdao"` | no |
| <a name="input_system_disk_category"></a> [system\_disk\_category](#input\_system\_disk\_category) | n/a | `string` | `"cloud_essd"` | no |
| <a name="input_vpc1_cidr"></a> [vpc1\_cidr](#input\_vpc1\_cidr) | n/a | `string` | `"172.16.0.0/16"` | no |
| <a name="input_vpc2_cidr"></a> [vpc2\_cidr](#input\_vpc2\_cidr) | n/a | `string` | `"10.0.0.0/16"` | no |
| <a name="input_vpc3_cidr"></a> [vpc3\_cidr](#input\_vpc3\_cidr) | n/a | `string` | `"192.168.0.0/16"` | no |
| <a name="input_vsw11_cidr"></a> [vsw11\_cidr](#input\_vsw11\_cidr) | n/a | `string` | `"172.16.20.0/24"` | no |
| <a name="input_vsw12_cidr"></a> [vsw12\_cidr](#input\_vsw12\_cidr) | n/a | `string` | `"172.16.21.0/24"` | no |
| <a name="input_vsw21_cidr"></a> [vsw21\_cidr](#input\_vsw21\_cidr) | n/a | `string` | `"10.0.20.0/24"` | no |
| <a name="input_vsw22_cidr"></a> [vsw22\_cidr](#input\_vsw22\_cidr) | n/a | `string` | `"10.0.21.0/24"` | no |
| <a name="input_vsw31_cidr"></a> [vsw31\_cidr](#input\_vsw31\_cidr) | n/a | `string` | `"192.168.20.0/24"` | no |
| <a name="input_vsw32_cidr"></a> [vsw32\_cidr](#input\_vsw32\_cidr) | n/a | `string` | `"192.168.21.0/24"` | no |
| <a name="input_zone11_id"></a> [zone11\_id](#input\_zone11\_id) | n/a | `string` | `"cn-chengdu-a"` | no |
| <a name="input_zone12_id"></a> [zone12\_id](#input\_zone12\_id) | n/a | `string` | `"cn-chengdu-b"` | no |
| <a name="input_zone21_id"></a> [zone21\_id](#input\_zone21\_id) | n/a | `string` | `"cn-shanghai-e"` | no |
| <a name="input_zone22_id"></a> [zone22\_id](#input\_zone22\_id) | n/a | `string` | `"cn-shanghai-f"` | no |
| <a name="input_zone31_id"></a> [zone31\_id](#input\_zone31\_id) | n/a | `string` | `"cn-qingdao-c"` | no |
| <a name="input_zone32_id"></a> [zone32\_id](#input\_zone32\_id) | n/a | `string` | `"cn-qingdao-b"` | no |
<!-- END_TF_DOCS -->
65 changes: 65 additions & 0 deletions solution/tech-solution/alb-acrlb/alb.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# ALB 相关资源
resource "alicloud_alb_load_balancer" "alb" {
provider = alicloud.region1
vpc_id = alicloud_vpc.vpc1.id
address_type = "Intranet"
address_allocated_mode = "Fixed"
load_balancer_name = "alb_name"
load_balancer_edition = "Basic"
load_balancer_billing_config {
pay_type = "PayAsYouGo"
}
zone_mappings {
vswitch_id = alicloud_vswitch.vsw11.id
zone_id = var.zone11_id
}
zone_mappings {
vswitch_id = alicloud_vswitch.vsw12.id
zone_id = var.zone12_id
}
}

resource "alicloud_alb_server_group" "alb_rs" {
provider = alicloud.region1
protocol = "HTTP"
vpc_id = alicloud_vpc.vpc1.id
server_group_name = "rs_test"
server_group_type = "Ip"
health_check_config {
health_check_enabled = false
}
sticky_session_config {
sticky_session_enabled = false
}
servers {
port = 80
server_id = alicloud_instance.ecs2.private_ip
server_ip = alicloud_instance.ecs2.private_ip
server_type = "Ip"
remote_ip_enabled = true
weight = 100
}
servers {
port = 80
server_id = alicloud_instance.ecs3.private_ip
server_ip = alicloud_instance.ecs3.private_ip
server_type = "Ip"
remote_ip_enabled = true
weight = 100
}
}

resource "alicloud_alb_listener" "alb_listener" {
provider = alicloud.region1
load_balancer_id = alicloud_alb_load_balancer.alb.id
listener_protocol = "HTTP"
listener_port = 80
default_actions {
type = "ForwardGroup"
forward_group_config {
server_group_tuples {
server_group_id = alicloud_alb_server_group.alb_rs.id
}
}
}
}
210 changes: 210 additions & 0 deletions solution/tech-solution/alb-acrlb/cen.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
# CEN 相关资源
resource "alicloud_cen_instance" "cen" {
provider = alicloud.region1
cen_instance_name = "cen-test"
}

data "alicloud_cen_transit_router_service" "open" {
enable = "On"
}

# Transit Router 实例
resource "alicloud_cen_transit_router" "tr1" {
provider = alicloud.region1
transit_router_name = "TR1"
cen_id = alicloud_cen_instance.cen.id
depends_on = [data.alicloud_cen_transit_router_service.open]
}

resource "alicloud_cen_transit_router" "tr2" {
provider = alicloud.region2
transit_router_name = "TR2"
cen_id = alicloud_cen_instance.cen.id
depends_on = [data.alicloud_cen_transit_router_service.open]
}

resource "alicloud_cen_transit_router" "tr3" {
provider = alicloud.region3
transit_router_name = "TR3"
cen_id = alicloud_cen_instance.cen.id
depends_on = [data.alicloud_cen_transit_router_service.open]
}

# VPC 连接至 Transit Router
resource "alicloud_cen_transit_router_vpc_attachment" "vpc_att1" {
provider = alicloud.region1
cen_id = alicloud_cen_instance.cen.id
transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
vpc_id = alicloud_vpc.vpc1.id
zone_mappings {
zone_id = var.zone11_id
vswitch_id = alicloud_vswitch.vsw11.id
}
zone_mappings {
zone_id = var.zone12_id
vswitch_id = alicloud_vswitch.vsw12.id
}
}

resource "alicloud_cen_transit_router_vpc_attachment" "vpc_att2" {
provider = alicloud.region2
cen_id = alicloud_cen_instance.cen.id
transit_router_id = alicloud_cen_transit_router.tr2.transit_router_id
vpc_id = alicloud_vpc.vpc2.id
zone_mappings {
zone_id = var.zone21_id
vswitch_id = alicloud_vswitch.vsw21.id
}
zone_mappings {
zone_id = var.zone22_id
vswitch_id = alicloud_vswitch.vsw22.id
}
}

resource "alicloud_cen_transit_router_vpc_attachment" "vpc_att3" {
provider = alicloud.region3
cen_id = alicloud_cen_instance.cen.id
transit_router_id = alicloud_cen_transit_router.tr3.transit_router_id
vpc_id = alicloud_vpc.vpc3.id
zone_mappings {
zone_id = var.zone31_id
vswitch_id = alicloud_vswitch.vsw31.id
}
zone_mappings {
zone_id = var.zone32_id
vswitch_id = alicloud_vswitch.vsw32.id
}
}

# Transit Router 路由表
resource "alicloud_cen_transit_router_route_table" "tr1_route_table" {
provider = alicloud.region1
transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
}

resource "alicloud_cen_transit_router_route_table_association" "tr1_table_association" {
provider = alicloud.region1
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr1_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.vpc_att1.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table_propagation" "tr1_table_propagation" {
provider = alicloud.region1
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr1_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.vpc_att1.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table" "tr2_route_table" {
provider = alicloud.region2
transit_router_id = alicloud_cen_transit_router.tr2.transit_router_id
}

resource "alicloud_cen_transit_router_route_table_association" "tr2_table_association" {
provider = alicloud.region2
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr2_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.vpc_att2.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table_propagation" "tr2_table_propagation" {
provider = alicloud.region2
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr2_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.vpc_att2.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table" "tr3_route_table" {
provider = alicloud.region3
transit_router_id = alicloud_cen_transit_router.tr3.transit_router_id
}

resource "alicloud_cen_transit_router_route_table_association" "tr3_table_association" {
provider = alicloud.region3
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr3_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.vpc_att3.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table_propagation" "tr3_table_propagation" {
provider = alicloud.region3
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr3_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.vpc_att3.transit_router_attachment_id
}

# Transit Router 路由条目
resource "alicloud_cen_transit_router_route_entry" "tr1_route_entry" {
provider = alicloud.region1
for_each = toset([var.alb_chengdu_back_to_source_routing_cidr1, var.alb_chengdu_back_to_source_routing_cidr2, var.alb_chengdu_back_to_source_routing_cidr3, var.alb_chengdu_back_to_source_routing_cidr4, var.alb_chengdu_back_to_source_routing_cidr5, var.alb_chengdu_back_to_source_routing_cidr6, var.alb_chengdu_back_to_source_routing_cidr7, var.alb_chengdu_back_to_source_routing_cidr8])
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr1_route_table.transit_router_route_table_id
transit_router_route_entry_destination_cidr_block = each.key
transit_router_route_entry_next_hop_type = "Attachment"
transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.vpc_att1.transit_router_attachment_id
}

# Transit Router 对等连接
resource "alicloud_cen_transit_router_peer_attachment" "peer12_attachment" {
provider = alicloud.region1
transit_router_peer_attachment_name = "TR1-TR2-Cross-Region-Test"
cen_id = alicloud_cen_instance.cen.id
transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
peer_transit_router_region_id = var.region2
peer_transit_router_id = alicloud_cen_transit_router.tr2.transit_router_id
auto_publish_route_enabled = true
}

# tr12之间配置路由及学习关系
resource "alicloud_cen_transit_router_route_table_association" "tr1_association12" {
provider = alicloud.region1
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr1_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer12_attachment.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table_propagation" "tr1_propagation12" {
provider = alicloud.region1
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr1_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer12_attachment.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table_association" "tr1_association21" {
provider = alicloud.region2
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr2_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer12_attachment.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table_propagation" "tr1_propagation21" {
provider = alicloud.region2
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr2_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer12_attachment.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_peer_attachment" "peer13_attachment" {
provider = alicloud.region1
transit_router_peer_attachment_name = "TR1-TR3-Cross-Region-Test"
cen_id = alicloud_cen_instance.cen.id
transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
peer_transit_router_region_id = var.region3
peer_transit_router_id = alicloud_cen_transit_router.tr3.transit_router_id
auto_publish_route_enabled = true
}

# tr13之间配置路由及学习关系
resource "alicloud_cen_transit_router_route_table_association" "tr1_association13" {
provider = alicloud.region1
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr1_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer13_attachment.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table_propagation" "tr1_propagation13" {
provider = alicloud.region1
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr1_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer13_attachment.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table_association" "tr1_association31" {
provider = alicloud.region3
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr3_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer13_attachment.transit_router_attachment_id
}

resource "alicloud_cen_transit_router_route_table_propagation" "tr1_propagation31" {
provider = alicloud.region3
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr3_route_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer13_attachment.transit_router_attachment_id
}
Loading