diff --git a/solution/tech-solution/alb-acrlb/README.md b/solution/tech-solution/alb-acrlb/README.md new file mode 100644 index 000000000..2b68b11d0 --- /dev/null +++ b/solution/tech-solution/alb-acrlb/README.md @@ -0,0 +1,56 @@ +## Introduction + +本示例用于实现解决方案[ALB 实现跨地域负载均衡](https://www.aliyun.com/solution/tech-solution/alb-acrlb), 涉及到涉及到专有网络(VPC)、交换机(VSwitch)、云服务器(ECS)、云企业网(CEN)、应用型负载均衡(ALB)等资源的创建。 + + + +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). + + + +## Providers + +No providers. + +## Modules + +No modules. + +## Resources + +No resources. + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [alb\_chengdu\_back\_to\_source\_routing\_cidr1](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr1) | n/a | `string` | `"100.117.130.0/25"` | no | +| [alb\_chengdu\_back\_to\_source\_routing\_cidr2](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr2) | n/a | `string` | `"100.117.130.128/25"` | no | +| [alb\_chengdu\_back\_to\_source\_routing\_cidr3](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr3) | n/a | `string` | `"100.117.131.0/25"` | no | +| [alb\_chengdu\_back\_to\_source\_routing\_cidr4](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr4) | n/a | `string` | `"100.117.131.128/25"` | no | +| [alb\_chengdu\_back\_to\_source\_routing\_cidr5](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr5) | n/a | `string` | `"100.122.175.64/26"` | no | +| [alb\_chengdu\_back\_to\_source\_routing\_cidr6](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr6) | n/a | `string` | `"100.122.175.128/26"` | no | +| [alb\_chengdu\_back\_to\_source\_routing\_cidr7](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr7) | n/a | `string` | `"100.122.175.192/26"` | no | +| [alb\_chengdu\_back\_to\_source\_routing\_cidr8](#input\_alb\_chengdu\_back\_to\_source\_routing\_cidr8) | n/a | `string` | `"100.122.176.0/26"` | no | +| [ecs\_password](#input\_ecs\_password) | Password for ECS instances | `string` | `"Test12345!"` | no | +| [region](#input\_region) | 地域 | `string` | `"cn-hangzhou"` | no | +| [region1](#input\_region1) | n/a | `string` | `"cn-chengdu"` | no | +| [region2](#input\_region2) | n/a | `string` | `"cn-shanghai"` | no | +| [region3](#input\_region3) | n/a | `string` | `"cn-qingdao"` | no | +| [system\_disk\_category](#input\_system\_disk\_category) | n/a | `string` | `"cloud_essd"` | no | +| [vpc1\_cidr](#input\_vpc1\_cidr) | n/a | `string` | `"172.16.0.0/16"` | no | +| [vpc2\_cidr](#input\_vpc2\_cidr) | n/a | `string` | `"10.0.0.0/16"` | no | +| [vpc3\_cidr](#input\_vpc3\_cidr) | n/a | `string` | `"192.168.0.0/16"` | no | +| [vsw11\_cidr](#input\_vsw11\_cidr) | n/a | `string` | `"172.16.20.0/24"` | no | +| [vsw12\_cidr](#input\_vsw12\_cidr) | n/a | `string` | `"172.16.21.0/24"` | no | +| [vsw21\_cidr](#input\_vsw21\_cidr) | n/a | `string` | `"10.0.20.0/24"` | no | +| [vsw22\_cidr](#input\_vsw22\_cidr) | n/a | `string` | `"10.0.21.0/24"` | no | +| [vsw31\_cidr](#input\_vsw31\_cidr) | n/a | `string` | `"192.168.20.0/24"` | no | +| [vsw32\_cidr](#input\_vsw32\_cidr) | n/a | `string` | `"192.168.21.0/24"` | no | +| [zone11\_id](#input\_zone11\_id) | n/a | `string` | `"cn-chengdu-a"` | no | +| [zone12\_id](#input\_zone12\_id) | n/a | `string` | `"cn-chengdu-b"` | no | +| [zone21\_id](#input\_zone21\_id) | n/a | `string` | `"cn-shanghai-e"` | no | +| [zone22\_id](#input\_zone22\_id) | n/a | `string` | `"cn-shanghai-f"` | no | +| [zone31\_id](#input\_zone31\_id) | n/a | `string` | `"cn-qingdao-c"` | no | +| [zone32\_id](#input\_zone32\_id) | n/a | `string` | `"cn-qingdao-b"` | no | + \ No newline at end of file diff --git a/solution/tech-solution/alb-acrlb/alb.tf b/solution/tech-solution/alb-acrlb/alb.tf new file mode 100644 index 000000000..82c719876 --- /dev/null +++ b/solution/tech-solution/alb-acrlb/alb.tf @@ -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 + } + } + } +} \ No newline at end of file diff --git a/solution/tech-solution/alb-acrlb/cen.tf b/solution/tech-solution/alb-acrlb/cen.tf new file mode 100644 index 000000000..2330e52f9 --- /dev/null +++ b/solution/tech-solution/alb-acrlb/cen.tf @@ -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 +} \ No newline at end of file diff --git a/solution/tech-solution/alb-acrlb/ecs.tf b/solution/tech-solution/alb-acrlb/ecs.tf new file mode 100644 index 000000000..13182006f --- /dev/null +++ b/solution/tech-solution/alb-acrlb/ecs.tf @@ -0,0 +1,130 @@ +# ECS 相关资源 +data "alicloud_instance_types" "types1" { + provider = alicloud.region1 + availability_zone = var.zone11_id + system_disk_category = var.system_disk_category +} + +data "alicloud_instance_types" "types2" { + provider = alicloud.region2 + availability_zone = var.zone21_id + system_disk_category = var.system_disk_category +} + +data "alicloud_instance_types" "types3" { + provider = alicloud.region3 + availability_zone = var.zone31_id + system_disk_category = var.system_disk_category +} + +# 安全组 +resource "alicloud_security_group" "group1" { + provider = alicloud.region1 + vpc_id = alicloud_vpc.vpc1.id +} + +resource "alicloud_security_group_rule" "rule1" { + provider = alicloud.region1 + type = "ingress" + ip_protocol = "all" + nic_type = "intranet" + policy = "accept" + port_range = "-1/-1" + priority = 1 + security_group_id = alicloud_security_group.group1.id + cidr_ip = "0.0.0.0/0" +} + +resource "alicloud_security_group" "group2" { + provider = alicloud.region2 + vpc_id = alicloud_vpc.vpc2.id +} + +resource "alicloud_security_group_rule" "rule2" { + provider = alicloud.region2 + type = "ingress" + ip_protocol = "all" + nic_type = "intranet" + policy = "accept" + port_range = "-1/-1" + priority = 1 + security_group_id = alicloud_security_group.group2.id + cidr_ip = "0.0.0.0/0" +} + +resource "alicloud_security_group" "group3" { + provider = alicloud.region3 + vpc_id = alicloud_vpc.vpc3.id +} + +resource "alicloud_security_group_rule" "rule3" { + provider = alicloud.region3 + type = "ingress" + ip_protocol = "all" + nic_type = "intranet" + policy = "accept" + port_range = "-1/-1" + priority = 1 + security_group_id = alicloud_security_group.group3.id + cidr_ip = "0.0.0.0/0" +} + +# ECS 实例 +locals { + ecs1_user_data = <<-EOF +#!/bin/sh +echo "Hello World ! This is ECS01." > index.html +nohup python3 -m http.server 80 & +EOF + + ecs2_user_data = <<-EOF +#!/bin/sh +echo "Hello World ! This is ECS02." > index.html +nohup python3 -m http.server 80 & +EOF + + ecs3_user_data = <<-EOF +#!/bin/sh +echo "Hello World ! This is ECS03." > index.html +nohup python3 -m http.server 80 & +EOF +} + +resource "alicloud_instance" "ecs1" { + provider = alicloud.region1 + availability_zone = var.zone11_id + security_groups = [alicloud_security_group.group1.id] + instance_type = data.alicloud_instance_types.types1.ids[0] + system_disk_category = var.system_disk_category + image_id = "aliyun_3_x64_20G_alibase_20230727.vhd" + instance_name = "ECS1" + vswitch_id = alicloud_vswitch.vsw11.id + password = var.ecs_password + user_data = local.ecs1_user_data +} + +resource "alicloud_instance" "ecs2" { + provider = alicloud.region2 + availability_zone = var.zone21_id + security_groups = [alicloud_security_group.group2.id] + instance_type = data.alicloud_instance_types.types2.ids[0] + system_disk_category = var.system_disk_category + image_id = "aliyun_3_x64_20G_alibase_20230727.vhd" + instance_name = "ECS2" + vswitch_id = alicloud_vswitch.vsw21.id + password = var.ecs_password + user_data = local.ecs2_user_data +} + +resource "alicloud_instance" "ecs3" { + provider = alicloud.region3 + availability_zone = var.zone31_id + security_groups = [alicloud_security_group.group3.id] + instance_type = data.alicloud_instance_types.types3.ids[0] + system_disk_category = var.system_disk_category + image_id = "aliyun_3_x64_20G_alibase_20230727.vhd" + instance_name = "ECS3" + vswitch_id = alicloud_vswitch.vsw31.id + password = var.ecs_password + user_data = local.ecs3_user_data +} \ No newline at end of file diff --git a/solution/tech-solution/alb-acrlb/main.tf b/solution/tech-solution/alb-acrlb/main.tf new file mode 100644 index 000000000..abce8412e --- /dev/null +++ b/solution/tech-solution/alb-acrlb/main.tf @@ -0,0 +1,15 @@ +# Provider 配置 +provider "alicloud" { + alias = "region1" + region = var.region1 +} + +provider "alicloud" { + alias = "region2" + region = var.region2 +} + +provider "alicloud" { + alias = "region3" + region = var.region3 +} \ No newline at end of file diff --git a/solution/tech-solution/alb-acrlb/outputs.tf b/solution/tech-solution/alb-acrlb/outputs.tf new file mode 100644 index 000000000..a61124fbb --- /dev/null +++ b/solution/tech-solution/alb-acrlb/outputs.tf @@ -0,0 +1,52 @@ +output "vpc1_id" { + value = alicloud_vpc.vpc1.id +} + +output "vpc2_id" { + value = alicloud_vpc.vpc2.id +} + +output "vpc3_id" { + value = alicloud_vpc.vpc3.id +} + +output "vsw11_id" { + value = alicloud_vswitch.vsw11.id +} + +output "vsw12_id" { + value = alicloud_vswitch.vsw12.id +} + +output "vsw21_id" { + value = alicloud_vswitch.vsw21.id +} + +output "vsw22_id" { + value = alicloud_vswitch.vsw22.id +} + +output "vsw31_id" { + value = alicloud_vswitch.vsw31.id +} + +output "vsw32_id" { + value = alicloud_vswitch.vsw32.id +} + +output "ecs1_ip" { + value = alicloud_instance.ecs1.private_ip +} + +output "ecs2_ip" { + value = alicloud_instance.ecs2.private_ip +} + +output "ecs3_ip" { + value = alicloud_instance.ecs3.private_ip +} + +output "alb_dns_name" { + value = alicloud_alb_load_balancer.alb.dns_name + description = "ALB域名" +} \ No newline at end of file diff --git a/solution/tech-solution/alb-acrlb/provider.tf b/solution/tech-solution/alb-acrlb/provider.tf new file mode 100644 index 000000000..5e236864d --- /dev/null +++ b/solution/tech-solution/alb-acrlb/provider.tf @@ -0,0 +1,3 @@ +provider "alicloud" { + region = var.region +} \ No newline at end of file diff --git a/solution/tech-solution/alb-acrlb/variables.tf b/solution/tech-solution/alb-acrlb/variables.tf new file mode 100644 index 000000000..81209e172 --- /dev/null +++ b/solution/tech-solution/alb-acrlb/variables.tf @@ -0,0 +1,147 @@ +variable "region" { + description = "地域" + type = string + default = "cn-hangzhou" +} + +variable "region1" { + type = string + default = "cn-chengdu" +} + +variable "region2" { + type = string + default = "cn-shanghai" +} + +variable "region3" { + type = string + default = "cn-qingdao" +} + +variable "zone11_id" { + type = string + default = "cn-chengdu-a" +} + +variable "zone12_id" { + type = string + default = "cn-chengdu-b" +} + +variable "zone21_id" { + type = string + default = "cn-shanghai-e" +} + +variable "zone22_id" { + type = string + default = "cn-shanghai-f" +} + +variable "zone31_id" { + type = string + default = "cn-qingdao-c" +} + +variable "zone32_id" { + type = string + default = "cn-qingdao-b" +} + +variable "vpc1_cidr" { + type = string + default = "172.16.0.0/16" +} + +variable "vsw11_cidr" { + type = string + default = "172.16.20.0/24" +} + +variable "vsw12_cidr" { + type = string + default = "172.16.21.0/24" +} + +variable "vpc2_cidr" { + type = string + default = "10.0.0.0/16" +} + +variable "vsw21_cidr" { + type = string + default = "10.0.20.0/24" +} + +variable "vsw22_cidr" { + type = string + default = "10.0.21.0/24" +} + +variable "vpc3_cidr" { + type = string + default = "192.168.0.0/16" +} + +variable "vsw31_cidr" { + type = string + default = "192.168.20.0/24" +} + +variable "vsw32_cidr" { + type = string + default = "192.168.21.0/24" +} + +variable "system_disk_category" { + type = string + default = "cloud_essd" +} + +variable "ecs_password" { + type = string + description = "Password for ECS instances" + sensitive = true + default = "Test12345!" +} + +variable "alb_chengdu_back_to_source_routing_cidr1" { + type = string + default = "100.117.130.0/25" +} + +variable "alb_chengdu_back_to_source_routing_cidr2" { + type = string + default = "100.117.130.128/25" +} + +variable "alb_chengdu_back_to_source_routing_cidr3" { + type = string + default = "100.117.131.0/25" +} + +variable "alb_chengdu_back_to_source_routing_cidr4" { + type = string + default = "100.117.131.128/25" +} + +variable "alb_chengdu_back_to_source_routing_cidr5" { + type = string + default = "100.122.175.64/26" +} + +variable "alb_chengdu_back_to_source_routing_cidr6" { + type = string + default = "100.122.175.128/26" +} + +variable "alb_chengdu_back_to_source_routing_cidr7" { + type = string + default = "100.122.175.192/26" +} + +variable "alb_chengdu_back_to_source_routing_cidr8" { + type = string + default = "100.122.176.0/26" +} \ No newline at end of file diff --git a/solution/tech-solution/alb-acrlb/vpc.tf b/solution/tech-solution/alb-acrlb/vpc.tf new file mode 100644 index 000000000..d381ceceb --- /dev/null +++ b/solution/tech-solution/alb-acrlb/vpc.tf @@ -0,0 +1,88 @@ +# VPC 资源 +resource "alicloud_vpc" "vpc1" { + provider = alicloud.region1 + vpc_name = "vpc1_test" + cidr_block = var.vpc1_cidr +} + +resource "alicloud_vswitch" "vsw11" { + provider = alicloud.region1 + vpc_id = alicloud_vpc.vpc1.id + cidr_block = var.vsw11_cidr + zone_id = var.zone11_id +} + +resource "alicloud_vswitch" "vsw12" { + provider = alicloud.region1 + vpc_id = alicloud_vpc.vpc1.id + cidr_block = var.vsw12_cidr + zone_id = var.zone12_id +} + +resource "alicloud_vpc" "vpc2" { + provider = alicloud.region2 + vpc_name = "vpc2_test" + cidr_block = var.vpc2_cidr +} + +resource "alicloud_vswitch" "vsw21" { + provider = alicloud.region2 + vpc_id = alicloud_vpc.vpc2.id + cidr_block = var.vsw21_cidr + zone_id = var.zone21_id +} + +resource "alicloud_vswitch" "vsw22" { + provider = alicloud.region2 + vpc_id = alicloud_vpc.vpc2.id + cidr_block = var.vsw22_cidr + zone_id = var.zone22_id +} + +resource "alicloud_vpc" "vpc3" { + provider = alicloud.region3 + vpc_name = "vpc3_test" + cidr_block = var.vpc3_cidr +} + +resource "alicloud_vswitch" "vsw31" { + provider = alicloud.region3 + vpc_id = alicloud_vpc.vpc3.id + cidr_block = var.vsw31_cidr + zone_id = var.zone31_id +} + +resource "alicloud_vswitch" "vsw32" { + provider = alicloud.region3 + vpc_id = alicloud_vpc.vpc3.id + cidr_block = var.vsw32_cidr + zone_id = var.zone32_id +} + +# VPC 路由条目 +resource "alicloud_route_entry" "vpc1_route_entry" { + provider = alicloud.region1 + for_each = toset([var.vpc1_cidr, var.vpc2_cidr, var.vpc3_cidr, var.vsw21_cidr, var.vsw31_cidr]) + route_table_id = alicloud_vpc.vpc1.route_table_id + destination_cidrblock = each.key + nexthop_type = "Attachment" + nexthop_id = alicloud_cen_transit_router_vpc_attachment.vpc_att1.transit_router_attachment_id +} + +resource "alicloud_route_entry" "vpc2_route_entry" { + provider = alicloud.region2 + for_each = toset([var.vpc1_cidr, var.vpc2_cidr, var.vpc3_cidr, 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]) + route_table_id = alicloud_vpc.vpc2.route_table_id + destination_cidrblock = each.key + nexthop_type = "Attachment" + nexthop_id = alicloud_cen_transit_router_vpc_attachment.vpc_att2.transit_router_attachment_id +} + +resource "alicloud_route_entry" "vpc3_route_entry" { + provider = alicloud.region3 + for_each = toset([var.vpc1_cidr, var.vpc2_cidr, var.vpc3_cidr, 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]) + route_table_id = alicloud_vpc.vpc3.route_table_id + destination_cidrblock = each.key + nexthop_type = "Attachment" + nexthop_id = alicloud_cen_transit_router_vpc_attachment.vpc_att3.transit_router_attachment_id +} \ No newline at end of file