Bu konu, Sanal Özel Cloud (VPC) içindeki Elastic Compute Service (ECS) örneklerinin bölgeler arası Object Storage Service (OSS) hizmetine özel olarak erişmesini sağlamak için Enterprise Edition transit router'ın nasıl kullanılacağını açıklar.
Bu öğreticideki örnek kod tek tıkla çalıştırmayı destekler. Kodu doğrudan çalıştırabilirsiniz. Tek tıkla çalıştır
Örnek kullanım senaryosu
Bu konuda yukarıdaki şekilde gösterilen senaryo örnek alınmıştır. Bir işletmenin Çin (Şanghay) bölgesinde VPC1 adında bir VPC'si bulunur ve uygulamalar bu VPC içindeki ECS örneklerinde dağıtılır. İşletme, Çin (Hangzhou) bölgesinde OSS dağıtmıştır ve VPC1 içindeki ECS örneklerinin gerekli kaynakları elde etmek amacıyla Çin (Hangzhou) bölgesindeki OSS hizmetine özel olarak erişmesini ister.
OSS bölge düzeyinde bir cloud hizmetidir ve herhangi bir VPC'ye ait değildir; ancak aynı bölgedeki bir VPC, OSS dahili uç noktası aracılığıyla OSS'e erişebilir. Bu nedenle, işletme OSS'in dağıtıldığı Çin (Hangzhou) bölgesinde VPC2 adında bir VPC oluşturmalı ve VPC2'yi geçiş ağı olarak kullanmalıdır. Daha sonra işletme, VPC1 ve VPC2'yi ilgili bölgelerdeki Enterprise Edition transit router'lara bağlar ve iki transit router arasında bölgeler arası bağlantı oluşturur. Aynı zamanda, VPC1'de ve Çin (Hangzhou) bölgesindeki transit router'da OSS dahili CIDR blokları için yollar manuel olarak eklenir. Yapılandırma tamamlandığında, VPC1'deki bir ECS örneğinden OSS'e giden trafik şu akışı izler: ECS örneği → Çin (Şanghay) bölgesindeki transit router → bölgeler arası bağlantı → Çin (Hangzhou) bölgesindeki transit router → VPC2 → OSS dahili uç noktası.
Bu çözümde VPC2 yalnızca bölgeler arası trafiğin OSS dahili uç noktasına ulaşması için yol sağlayan bir geçiş ağı olarak hizmet eder. Çin (Hangzhou) bölgesinde zaten bir VPC'niz varsa, bu VPC'yi geçiş ağı olarak doğrudan Enterprise Edition transit router'a bağlayabilir ve VPC2 oluşturmanıza gerek kalmaz.
Ağ planlaması
CIDR bloklarını planlarken, birbirleriyle iletişim kurması gereken VPC'lerin CIDR bloklarının örtüşmediğinden emin olun.
Kaynak | VPC bölgesi | CIDR bloğu ve IP adresi |
VPC1 | Çin (Şanghay) | Birincil CIDR bloğu: 192.168.0.0/16
|
VPC2 | Çin (Hangzhou) | Birincil CIDR bloğu: 172.16.0.0/16
|
Prosedür
Bu konuda konsol ve Terraform olmak üzere iki yapılandırma yöntemi sunulmaktadır. İhtiyaçlarınıza uygun yöntemi seçin.
Konsol
Hazırlıklar
Yapılandırmaya başlamadan önce aşağıdaki hazırlıkları tamamladığınızdan emin olun. Her kaynağın CIDR blokları hakkında bilgi için yukarıdaki Ağ planlaması bölümüne bakın.
Çin (Şanghay) bölgesi: Birincil CIDR bloğu 192.168.0.0/16 olan VPC1 oluşturulmuştur. VPC1 içinde iki alanda vSwitch'ler oluşturulmuş, her vSwitch'te en az bir kullanılabilir IP adresi bulunmaktadır ve vSwitch'lerden birinde bir ECS örneği dağıtılmıştır. Daha fazla bilgi için bkz. IPv4 CIDR bloğu içeren bir VPC oluşturma.
Çin (Hangzhou) bölgesi: OSS dağıtılmıştır, yani bir OSS paketi oluşturulmuştur. Henüz bir paket oluşturmadıysanız bkz. Hızlı başlangıç.
VPC1'in güvenlik grubu kuralları gerekli trafiğe izin verir. Daha fazla bilgi için bkz. Güvenlik grubu kurallarını görüntüleme ve Güvenlik grubu kuralı ekleme.
Adım 1: Geçiş VPC'si oluşturma
Çin (Hangzhou) bölgesinde, birincil CIDR bloğu 172.16.0.0/16 olan VPC2'yi oluşturun ve ardından iki alanda vSwitch'ler oluşturun. Her vSwitch'te en az bir kullanılabilir IP adresi bulunduğundan emin olun. Bu çözümde VPC2, OSS hizmetine erişim için geçiş ağı olarak hizmet eder. Çin (Hangzhou) bölgesinde zaten bir VPC'niz varsa bu adımı atlayabilir ve 2. Adımda bu VPC'yi seçebilirsiniz. Daha fazla bilgi için bkz. VPC oluşturma ve yönetme.
VPC2 oluşturulduktan sonra, güvenlik grubu kurallarının gerekli trafiğe izin verdiğinden emin olun; böylece VPC1'den gelen bölgeler arası erişim trafiği engellenmez. Daha fazla bilgi için bkz. Güvenlik grubu kurallarını görüntüleme ve Güvenlik grubu kuralı ekleme.
Adım 2: Senaryo tabanlı ağ oluşturma kullanarak ağ bağlantısı kurma
Cloud Enterprise Network (CEN) senaryo tabanlı ağ oluşturma aracını kullanarak toplu iş halinde bir CEN örneği, Enterprise Edition transit router'lar, VPC bağlantıları ve bölgeler arası bağlantı oluşturun ve bunlar için yolları otomatik olarak yapılandırın.
CEN konsolu adresinde oturum açın. CEN Instance sayfasında Create CEN Instance seçeneğine tıklayın.
Create CEN Instance iletişim kutusunda Create Scenario-specific CEN (Recommended) seçeneğini belirleyin, senaryo olarak VPC Interconnection seçeneğini belirleyin ve ardından Start Scenario-Based Creation seçeneğine tıklayın.
-
İlk bölge sekmesinde ağ yapılandırmalarını ekleyin:
Region: China (Hangzhou) seçeneğini belirleyin.
Zone: J Alanı ve K Alanı seçeneklerini belirleyin.
VPC: VPC2'yi ve VPC2'nin iki vSwitch'ini seçin.
-
Sekmenin sağ tarafındaki + simgesine tıklayarak bir bölge sekmesi oluşturun ve ardından ağ yapılandırmalarını ekleyin:
Region: China (Shanghai) seçeneğini belirleyin.
Zone: M Alanı ve N Alanı seçeneklerini belirleyin.
VPC: VPC1'i ve VPC1'in iki vSwitch'ini seçin.
Next seçeneğine tıklayın. Sistemin yapılandırma özetini oluşturması birkaç dakika sürer. Confirm Networking Settings and Fees sayfasında otomatik olarak oluşturulacak kaynakları ve maliyet ayrıntılarını gözden geçirin. Bilgilerin doğru olduğunu onayladıktan sonra Start deployment seçeneğine tıklayın.
-
Dağıtım yaklaşık 10 dakika sürer. Dağıtım tamamlanana kadar bekleyin. Sistem ardından aşağıdaki kaynakları otomatik olarak oluşturur:
Bir CEN örneği.
Çin (Hangzhou) bölgesinde bir tane ve Çin (Şanghay) bölgesinde bir tane olmak üzere Enterprise Edition transit router'lar.
VPC1 ve VPC2'den ilgili bölgelerindeki transit router'lara yapılan VPC bağlantıları.
İki transit router arasında bölgeler arası bağlantı.
Senaryo tabanlı ağ oluşturma işlemi tamamlandıktan sonra, VPC1 ve VPC2 arasında özel ağ eşlemesi zaten kurulmuş olur ancak VPC1'deki ECS örnekleri hala OSS hizmetine erişemez. OSS dahili CIDR blokları için yolları manuel olarak eklemek üzere aşağıdaki adımlara devam etmeniz gerekir.
Adım 3: VPC'de OSS hizmetine yönelik yolları yapılandırma
Bölgeler arası bağlantı oluşturulduktan sonra, VPC1 ve VPC2 Enterprise Edition transit router'lar aracılığıyla özel ağ üzerinden birbirleriyle iletişim kurabilir. Ancak, VPC1'deki ECS örnekleri hala Enterprise Edition transit router'lar ve VPC2 üzerinden OSS hizmetine özel olarak erişemez. OSS hizmetine yönelik trafiği Enterprise Edition transit router'a yönlendirmek için VPC1'in yol tablosuna OSS hizmetine yönelik yollar eklemeniz gerekir.
VPC konsolu adresinde oturum açın.
-
Üst menü çubuğunda, VPC1 örneğinin dağıtıldığı bölgeyi seçin.
Bu konuda China (Shanghai) bölgesi seçilmiştir.
Sol gezinme bölmesinde Route Tables seçeneğine tıklayın.
-
Route Tables sayfasında VPC1 örneğinin yol tablosunu bulun ve yol tablosu örnek kimliğine tıklayın.
Bu konuda VPC1'in yalnızca bir sistem yol tablosu bulunmaktadır. VPC'nizde birden fazla yol tablosu varsa, ECS örneğinin dağıtıldığı vSwitch ile ilişkili yol tablosunu seçin.
Route Entry List sekmesinde Custom Route sekmesine tıklayın ve ardından Add Route Entry seçeneğine tıklayın.
-
Add Route Entry panelinde aşağıdaki parametreleri belirtin ve ardından OK seçeneğine tıklayın.
Aşağıdaki bilgilere dayanarak, Çin (Hangzhou) bölgesindeki OSS hizmetinin tüm CIDR bloklarına yönelik yolları VPC1'in yol tablosuna ekleyin.
Çin (Hangzhou) bölgesindeki OSS hizmetinin tüm CIDR blokları hakkında bilgi için bkz. Uç noktalar ve paket alan adları aracılığıyla OSS'e erişim.
Parametre
Açıklama
Yol girişi 1
Yol girişi 2
Yol girişi 3
Yol girişi 4
Name
Özel yol girişi için bir ad girin.
OSS CIDR bloğu 1
OSS CIDR bloğu 2
OSS CIDR bloğu 3
OSS CIDR bloğu 4
Destination CIDR Block
Hedef CIDR bloğunu girin.
100.118.28.0/24
100.114.102.0/24
100.98.170.0/24
100.118.31.0/24
Next Hop Type
Özel yol girişinin sonraki atlama türünü seçin ve ardından sonraki atlamayı seçin.Transit Router seçeneğini belirleyin ve ardından VPC1 bağlantısını seçin.
Transit Router seçeneğini belirleyin ve ardından VPC1 bağlantısını seçin.
Transit Router seçeneğini belirleyin ve ardından VPC1 bağlantısını seçin.
Transit Router seçeneğini belirleyin ve ardından VPC1 bağlantısını seçin.
Adım 4: Transit router'da OSS hizmetine yönelik yolları yapılandırma
Çin (Hangzhou) bölgesindeki Enterprise Edition transit router'ın yol tablosuna da OSS hizmetine yönelik yollar eklemeniz gerekir. OSS hizmetine yönelik trafik VPC1'deki ECS örneklerinden Enterprise Edition transit router'a girdiğinde, transit router bu trafiği OSS hizmetine yönelik yollara göre VPC2'ye yönlendirir. Böylece ECS örnekleri VPC2 üzerinden OSS hizmetine özel olarak erişebilir.
CEN konsolu adresinde oturum açın.
Cloud Enterprise Network sayfasında hedef CEN örneğini bulun ve CEN örnek kimliğine tıklayın.
sekmesinde Çin (Hangzhou) bölgesindeki transit router örneğini bulun ve örnek kimliğine tıklayın.
-
Transit router örneğinin ayrıntılar sayfasında Route Table sekmesine tıklayın. Sekmenin sol tarafında hedef transit router yol tablosunu seçin.
VPC1 bağlantısı ve VPC2 bağlantısı varsayılan gelişmiş yapılandırmaları kullanır ve ikisi de transit router'ın varsayılan yol tablosuyla ilişkilendirilir. Bu nedenle, bu konuda transit router'ın varsayılan yol tablosu, yani sistem yol tablosu seçilir.
Route Entry sekmesinde Add Route Entry seçeneğine tıklayın.
-
Add Route Entry iletişim kutusunda aşağıdaki parametreleri belirtin ve ardından OK seçeneğine tıklayın.
Aşağıdaki bilgilere dayanarak, Çin (Hangzhou) bölgesindeki OSS hizmetinin tüm CIDR bloklarına yönelik yolları transit router'ın yol tablosuna ekleyin.
Parametre
Açıklama
Yol girişi 1
Yol girişi 2
Yol girişi 3
Yol girişi 4
Name
Yol girişi için bir ad girin.
OSS CIDR bloğu 1
OSS CIDR bloğu 2
OSS CIDR bloğu 3
OSS CIDR bloğu 4
Destination CIDR
Yol girişinin hedef CIDR bloğunu girin.
100.118.28.0/24
100.114.102.0/24
100.98.170.0/24
100.118.31.0/24
Blackhole Route
Geçerli yol girişinin bir blackhole yolu olup olmadığını belirtir.
Yes: Yol bir blackhole yoludur. Bu yola yönelik tüm trafik düşürülür.
No: Yol bir blackhole yolu değildir. Yolun sonraki atlama bağlantısını belirtmeniz gerekir.
No seçeneğini belirleyin.
No seçeneğini belirleyin.
No seçeneğini belirleyin.
No seçeneğini belirleyin.
Next Hop
Yol girişinin sonraki atlama bağlantısını seçin.
VPC2 bağlantısını seçin.
VPC2 bağlantısını seçin.
VPC2 bağlantısını seçin.
VPC2 bağlantısını seçin.
Adım 5: Bağlantıyı test etme
Önceki yapılandırmaları tamamladıktan sonra, VPC1'deki ECS örnekleri bölgeler arası OSS hizmetine özel olarak erişebilir. Bu konuda, VPC1'deki ECS örneği ile OSS hizmeti arasındaki bağlantıyı test etmek amacıyla OSS hizmetinden bir görüntü indiren bir ECS örneği örnek alınmıştır.
VPC1'deki ECS örneğinde oturum açın. Daha fazla bilgi için bkz. Bağlantı yöntemi seçme.
-
ECS örneğinde, OSS hizmetinden OSStest.jpg adlı bir görüntü indirmeyi deneyin.
NotTesti çalıştırmadan önce, hedef dosyadaki okuma ve yazma izinlerinin ECS örneğinin dosyaya erişmesine izin verdiğinden emin olun. Daha fazla bilgi için bkz. İzinler ve erişim kontrolüne genel bakış.
wget https://zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com/OSStest.jpg # zxtXXXXX.oss-cn-hangzhou-internal.aliyuncs.com is the access domain name of the OSS service. # OSStest.jpg is the name of the target file.OSS erişim alan adları hakkında daha fazla bilgi için bkz. IPv6'yı destekleyen bir uç nokta kullanarak OSS'e erişim.
ECS örneği aşağıdakine benzer bir yanıt alırsa, ECS örneği bölgeler arası OSS hizmetine özel olarak erişebilir.
[root@iZuf6bxxx hblZ ~]# wget https://zxxx2.oss-cn-hangzhou-internal.aliyuncs.com/OSStest.jpg --2023-01-29 16:54:46-- https://zxtxxx2.oss-cn-hangzhou-internal.aliyuncs.com/OSStest.jpg Resolving zxtxxx2.oss-cn-hangzhou-internal.aliyuncs.com (zxtxxx2.oss-cn-hangzhou-internal.aliyuncs.com)... 100.xxx.50, 100.xxx.49, 100. 45, ... Connecting to zxtxxx2.oss-cn-hangzhou-internal.aliyuncs.com (zxxxx s2.oss-cn-hangzhou-internal.aliyuncs.com)|100.xxx.50|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 611894 (598K) [image/jpeg] Saving to: 'OSStest.jpg.5' OSStest.jpg.5 100%[=================================================>] 597.55K 132KB/s in 4.5s 2023-01-29 16:54:51 (132 KB/s) - 'OSStest.jpg.5' saved [611894/611894]
Terraform
Bu konudaki örnek ortamı oluşturmak için Terraform kullanabilirsiniz. Terraform'u yükleme ve yapılandırma hakkında bilgi için bkz. Terraform Yükleme.
Aşağıdaki adımlarda Terraform v1.9.8 çalıştıran bir Linux ana bilgisayarı örnek alınmıştır. Başlamadan önce Kimlik Doğrulama işlemini tamamladığınızdan emin olun.
Bu öğretimdeki bazı kaynaklar maliyet oluşturur. Artık ihtiyaç duymadığınızda kaynakları serbest bırakın veya abonelikten çıkın.
1. Adım: Kaynakları oluşturma
-
Bu konu için bir dizin oluşturun ve ardından dizine gidin.
mkdir tf-cen-oss && cd tf-cen-oss -
Kaynak bilgilerini tanımlamak için bir
main.tfdosyası oluşturun.touch main.tf -
main.tfdosyasını açın, aşağıdaki kodu kopyalayın, dosyaya yapıştırın ve dosyayı kaydedin. Bu dosya, bu konudaki senaryo için gereken kaynakları ve yapılandırmaları içerir.variable "pname" { description = "The prefix name for resources" type = string default = "tf-cen-oss" } variable "region_id_hangzhou" { description = "The region id of hangzhou" type = string default = "cn-hangzhou" } variable "region_id_shanghai" { # description = "The region id of shanghai" type = string default = "cn-shanghai" } variable "az_hangzhou" { description = "List of availability zones to use" type = list(string) default = ["cn-hangzhou-j", "cn-hangzhou-k"] } variable "az_shanghai" { description = "List of availability zones to use" type = list(string) default = ["cn-shanghai-m", "cn-shanghai-n"] } variable "cidr_list" { description = "List of VPC CIDR block" type = list(string) default = ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"] } # --- provider --- provider "alicloud" { # default region hangzhou region = var.region_id_hangzhou } provider "alicloud" { alias = "hangzhou" region = var.region_id_hangzhou } provider "alicloud" { alias = "shanghai" region = var.region_id_shanghai } # --- oss --- resource "random_uuid" "default" { } resource "alicloud_oss_bucket" "bucket1" { provider = alicloud.hangzhou bucket = substr("${var.pname}-${replace(random_uuid.default.result, "-", "")}", 0, 32) } resource "alicloud_oss_bucket_policy" "default" { provider = alicloud.hangzhou policy = jsonencode({ "Version" : "1", "Statement" : [{ "Action" : ["oss:GetObject"], "Effect" : "Allow", "Resource" : ["acs:oss:*:*:${alicloud_oss_bucket.bucket1.bucket}"] }] }) bucket = alicloud_oss_bucket.bucket1.bucket } resource "alicloud_oss_bucket_object" "obj1" { provider = alicloud.hangzhou bucket = alicloud_oss_bucket.bucket1.bucket key = "example.txt" # Name of the file in the bucket content = "this is example text content \n" # Content of the file acl = "public-read" } # --- vpc --- resource "alicloud_vpc" "vpc1" { provider = alicloud.shanghai vpc_name = "${var.pname}-1" cidr_block = "192.168.0.0/16" } resource "alicloud_vpc" "vpc2" { provider = alicloud.hangzhou vpc_name = "${var.pname}-2" cidr_block = "172.16.0.0/16" } resource "alicloud_vswitch" "vsw1-1" { provider = alicloud.shanghai vpc_id = alicloud_vpc.vpc1.id cidr_block = "192.168.0.0/24" zone_id = var.az_shanghai[0] vswitch_name = "${var.pname}-vsw1-1" } resource "alicloud_vswitch" "vsw1-2" { provider = alicloud.shanghai vpc_id = alicloud_vpc.vpc1.id cidr_block = "192.168.1.0/24" zone_id = var.az_shanghai[1] vswitch_name = "${var.pname}-vsw1-2" } resource "alicloud_vswitch" "vsw2-1" { provider = alicloud.hangzhou vpc_id = alicloud_vpc.vpc2.id cidr_block = "172.16.0.0/24" zone_id = var.az_hangzhou[0] vswitch_name = "${var.pname}-vsw2-1" } resource "alicloud_vswitch" "vsw2-2" { provider = alicloud.hangzhou vpc_id = alicloud_vpc.vpc2.id cidr_block = "172.16.1.0/24" zone_id = var.az_hangzhou[1] vswitch_name = "${var.pname}-vsw2-2" } # --- cen --- # cen resource "alicloud_cen_instance" "cen1" { cen_instance_name = "${var.pname}-cen1" } # tr resource "alicloud_cen_transit_router" "tr1" { provider = alicloud.shanghai transit_router_name = "${var.pname}-tr1" cen_id = alicloud_cen_instance.cen1.id } resource "alicloud_cen_transit_router" "tr2" { provider = alicloud.hangzhou transit_router_name = "${var.pname}-tr2" cen_id = alicloud_cen_instance.cen1.id } data "alicloud_cen_transit_router_route_tables" "tr1" { # get tr sys table transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id transit_router_route_table_type = "System" } data "alicloud_cen_transit_router_route_tables" "tr2" { transit_router_id = alicloud_cen_transit_router.tr2.transit_router_id transit_router_route_table_type = "System" } # tr-peer resource "alicloud_cen_transit_router_peer_attachment" "peer" { provider = alicloud.shanghai cen_id = alicloud_cen_instance.cen1.id transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id peer_transit_router_region_id = var.region_id_hangzhou peer_transit_router_id = alicloud_cen_transit_router.tr2.transit_router_id bandwidth_type = "DataTransfer" bandwidth = 1 auto_publish_route_enabled = true # default is false } resource "alicloud_cen_transit_router_route_table_association" "ass_peer1" { transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id } resource "alicloud_cen_transit_router_route_table_propagation" "propa_peer1" { transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id } resource "alicloud_cen_transit_router_route_table_association" "ass_peer2" { transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id } resource "alicloud_cen_transit_router_route_table_propagation" "propa_peer2" { transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id transit_router_attachment_id = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id } # attach1 resource "alicloud_cen_transit_router_vpc_attachment" "attach1" { provider = alicloud.shanghai cen_id = alicloud_cen_instance.cen1.id transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id vpc_id = alicloud_vpc.vpc1.id zone_mappings { zone_id = var.az_shanghai[0] vswitch_id = alicloud_vswitch.vsw1-1.id } zone_mappings { zone_id = var.az_shanghai[1] vswitch_id = alicloud_vswitch.vsw1-2.id } transit_router_vpc_attachment_name = "attach1" } resource "alicloud_cen_transit_router_route_table_association" "ass1" { transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id } resource "alicloud_cen_transit_router_route_table_propagation" "propa1" { transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id } resource "alicloud_route_entry" "vpc1_to_tr1" { provider = alicloud.shanghai count = 3 route_table_id = alicloud_vpc.vpc1.route_table_id destination_cidrblock = var.cidr_list[count.index] nexthop_type = "Attachment" nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id } # attach2 resource "alicloud_cen_transit_router_vpc_attachment" "attach2" { provider = alicloud.hangzhou cen_id = alicloud_cen_instance.cen1.id transit_router_id = alicloud_cen_transit_router.tr2.transit_router_id vpc_id = alicloud_vpc.vpc2.id zone_mappings { zone_id = var.az_hangzhou[0] vswitch_id = alicloud_vswitch.vsw2-1.id } zone_mappings { zone_id = var.az_hangzhou[1] vswitch_id = alicloud_vswitch.vsw2-2.id } transit_router_vpc_attachment_name = "attach2" } resource "alicloud_cen_transit_router_route_table_association" "ass2" { transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id } resource "alicloud_cen_transit_router_route_table_propagation" "propa2" { transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id } resource "alicloud_route_entry" "vpc2_to_tr2" { provider = alicloud.hangzhou count = 3 route_table_id = alicloud_vpc.vpc2.route_table_id destination_cidrblock = var.cidr_list[count.index] nexthop_type = "Attachment" nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id } # oss_cidr variable "oss_cidr" { description = "The OSS CIDR block" type = list(string) default = ["100.118.28.0/24", "100.114.102.0/24", "100.98.170.0/24", "100.118.31.0/24"] } # vpc entry resource "alicloud_route_entry" "entry" { provider = alicloud.shanghai count = 4 route_table_id = alicloud_vpc.vpc1.route_table_id destination_cidrblock = var.oss_cidr[count.index] nexthop_type = "Attachment" nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id } # tr entry resource "alicloud_cen_transit_router_route_entry" "tr2_rt1_entry1" { count = 4 transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id transit_router_route_entry_destination_cidr_block = var.oss_cidr[count.index] transit_router_route_entry_next_hop_type = "Attachment" transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id } # --- ecs --- resource "alicloud_instance" "main" { provider = alicloud.shanghai depends_on = [alicloud_cen_transit_router_route_entry.tr2_rt1_entry1] instance_name = "${var.pname}-ecs" instance_type = "ecs.e-c1m1.large" security_groups = [alicloud_security_group.default.id] vswitch_id = alicloud_vswitch.vsw1-1.id image_id = "aliyun_3_x64_20G_qboot_alibase_20230727.vhd" system_disk_category = "cloud_essd" private_ip = "192.168.0.1" instance_charge_type = "PostPaid" user_data = base64encode(<<-EOT #!/bin/bash curl https://${alicloud_oss_bucket.bucket1.bucket}.${alicloud_oss_bucket.bucket1.intranet_endpoint}/${alicloud_oss_bucket_object.obj1.key} > /root/curl.txt EOT ) } # sg resource "alicloud_security_group" "default" { provider = alicloud.shanghai security_group_name = var.pname vpc_id = alicloud_vpc.vpc1.id } resource "alicloud_security_group_rule" "allow_inbound_ssh" { provider = alicloud.shanghai type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "22/22" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" } resource "alicloud_security_group_rule" "allow_inbound_icmp" { provider = alicloud.shanghai type = "ingress" ip_protocol = "icmp" nic_type = "intranet" policy = "accept" port_range = "-1/-1" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" } # --- output --- output "ecs_login_address" { value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=${var.region_id_shanghai}&instanceId=${alicloud_instance.main.id}" } output "test_command" { value = "curl ${alicloud_oss_bucket.bucket1.bucket}.${alicloud_oss_bucket.bucket1.intranet_endpoint}/${alicloud_oss_bucket_object.obj1.key}" } -
Terraform başlatmayı tamamlamak için dizini başlatın.
terraform init -
Kaynakları oluşturun. Komutu çalıştırdıktan sonra Terraform oluşturulacak kaynakların önizlemesini gösterir. Bilgilerin doğru olduğunu onayladıktan sonra oluşturmayı resmi olarak başlatmak için
yesgirin.terraform apply
2. Adım: Sonucu doğrulama
-
tf-cen-oss-ecsadlı ECS örneğinde oturum açın.ECS örneğinin oturum açma adresini Terraform Çıktılarında bulabilir, adresi kopyalayabilir ve ardından tarayıcıda açabilirsiniz. Oturum açarken kimlik doğrulama yöntemi olarak Temporary SSH Key-based seçeneğini belirleyin.
Outputs: ecs_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=cn-shanghai&instanceId=i-uf6xxx" test_command = "curl xxx" -
Çıktılarda
curlile başlayan komutu kopyalayın:Outputs: ecs_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=cn-shanghai" test_command = "curl tf-cen-oss-xxx.oss-cn-hangzhou-internal.aliyuncs.com/example.txt" -
ECS örneğinde
curlkomutunu çalıştırın:curl tf-cen-oss-xxxxxx.oss-cn-hangzhou-internal.aliyuncs.com/example.txt[root@iZuf6xxx ~]# curl tf-cen-oss-2821xxx xxx.oss-cn-hangzhou-internal.aliyuncs.com/example.txt this is example text content [root@iZuf6xxx ~]#Yukarıda gösterildiği gibi, metin içeriği döndürülürse erişim başarılı olmuş demektir.
3. Adım: Kaynakları serbest bırakma
Doğrulama tamamlandıktan sonra, artık kaynakları kullanmıyorsanız kaynakları serbest bırakmak ve ek ücretlendirmeyi önlemek için aşağıdaki komutu çalıştırın.
terraform destroy --auto-approve
Yönlendirme
Bu konuda, senaryo tabanlı ağ oluşturma aracı VPC bağlantılarını ve bölgeler arası bağlantıyı otomatik olarak oluşturduğunda varsayılan yönlendirme yapılandırması kullanılır. Varsayılan yönlendirme yapılandırmasıyla CEN, VPC1 ve VPC2 arasında iletişimi sağlamak için yolları otomatik olarak reklam eder ve öğrenir. Varsayılan yönlendirme yapılandırması aşağıda açıklanmıştır:
VPC
Bir VPC bağlantısı oluştururken varsayılan yönlendirme yapılandırmasını kullanırsanız, yani tüm gelişmiş ayarlar etkinleştirilirse sistem aşağıdaki yönlendirme yapılandırmalarını VPC'ye otomatik olarak uygular:
-
Associate with Default Route Table of Transit Router
Bu özellik etkinleştirildikten sonra VPC bağlantısı otomatik olarak transit router'ın varsayılan yol tablosuyla ilişkilendirilir. Transit router, VPC trafiğini varsayılan yol tablosunu sorgulayarak iletir.
-
Propagate system routes to transit router route table
Bu özellik etkinleştirildikten sonra VPC kendi sistem yollarını transit router'ın varsayılan yol tablosuna yayarak ağ örneklerinin birbirleriyle iletişim kurmasını sağlar.
-
Auto-add transit router routes to all VPC route tables
Bu özellik etkinleştirildikten sonra sistem, VPC örneğinin tüm yol tablolarına 10.0.0.0/8, 172.16.0.0/12 ve 192.168.0.0/16 olmak üzere üç yol girişi otomatik olarak ekler. Üç yol girişinin de sonraki atlaması VPC bağlantısıdır.
Bölgeler arası bağlantı
Bir bölgeler arası bağlantı oluştururken varsayılan yönlendirme yapılandırmasını kullanırsanız, yani tüm gelişmiş ayarlar etkinleştirilirse sistem aşağıdaki yönlendirme yapılandırmalarını bölgeler arası bağlantıya otomatik olarak uygular:
-
Associate with Default Route Table of Transit Router
Bölgeler arası bağlantıyı her iki bölgedeki transit router sistem yol tablolarıyla ilişkilendirir. Bölgeler arası trafik bu sistem yol tablolarına göre iletilir.
-
Propagate system routes to transit router route table
Bölgeler arası bağlantı ile her iki bölgedeki transit router'ların sistem yol tabloları arasında yol öğrenme ilişkisi kurar.
-
Automatically Advertise Routes to Peer Region
Yolları yerel transit router yol tablosundan eş transit router yol tablosuna reklam ederek ağ örnekleri için bölgeler arası bağlantı sağlar.
Yol girişlerini görüntüleme
Alibaba Cloud konsolunda ilgili örneklerin yol girişi bilgilerini görüntüleyebilirsiniz:
Bir transit router örneğinin yol girişlerini görüntülemek için bkz. Yol girişlerini görüntüleme (Enterprise Edition).
Bir VPC örneğinin yol girişlerini görüntülemek için bkz. Yol tablosu oluşturma ve yönetme.