Tüm Ürünler
Search
Belge Merkezi

Cloud Enterprise Network:Access cross-region OSS from ECS via Transit Router

Son Güncelleme:Oct 12, 2026

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.

Not

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

image

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ı.

Not

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ı

Önemli

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

  • vSwitch 1'in CIDR bloğu: 192.168.0.0/24. vSwitch 1 M Alanındadır.

  • vSwitch 2'nin CIDR bloğu: 192.168.20.0/24. vSwitch 2 N Alanındadır.

  • ECS IP adresi: 192.168.0.1. ECS örneği vSwitch 1'de dağıtılmıştır.

VPC2

Çin (Hangzhou)

Birincil CIDR bloğu: 172.16.0.0/16

  • vSwitch 1'in CIDR bloğu: 172.16.1.0/24. vSwitch 1 J Alanındadır.

  • vSwitch 2'nin CIDR bloğu: 172.16.2.0/24. vSwitch 2 K Alanındadır.

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.

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.

  1. CEN konsolu adresinde oturum açın. CEN Instance sayfasında Create CEN Instance seçeneğine tıklayın.

  2. 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.

  3. İ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.

  4. 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.

  5. 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.

  6. 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ı.

Not

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.

  1. VPC konsolu adresinde oturum açın.

  2. Üst menü çubuğunda, VPC1 örneğinin dağıtıldığı bölgeyi seçin.

    Bu konuda China (Shanghai) bölgesi seçilmiştir.

  3. Sol gezinme bölmesinde Route Tables seçeneğine tıklayın.

  4. 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.

  5. Route Entry List sekmesinde Custom Route sekmesine tıklayın ve ardından Add Route Entry seçeneğine tıklayın.

  6. 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.

  1. CEN konsolu adresinde oturum açın.

  2. Cloud Enterprise Network sayfasında hedef CEN örneğini bulun ve CEN örnek kimliğine tıklayın.

  3. Basic Settings > Transit Router sekmesinde Çin (Hangzhou) bölgesindeki transit router örneğini bulun ve örnek kimliğine tıklayın.

  4. 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.

  5. Route Entry sekmesinde Add Route Entry seçeneğine tıklayın.

  6. 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.

  1. VPC1'deki ECS örneğinde oturum açın. Daha fazla bilgi için bkz. Bağlantı yöntemi seçme.

  2. ECS örneğinde, OSS hizmetinden OSStest.jpg adlı bir görüntü indirmeyi deneyin.

    Not

    Testi ç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.

Not

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

  1. Bu konu için bir dizin oluşturun ve ardından dizine gidin.

    mkdir tf-cen-oss && cd tf-cen-oss
  2. Kaynak bilgilerini tanımlamak için bir main.tf dosyası oluşturun.

    touch main.tf
  3. main.tf dosyası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&regionId=${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}"
    }
  4. Terraform başlatmayı tamamlamak için dizini başlatın.

    terraform init
  5. 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 yes girin.

    terraform apply

2. Adım: Sonucu doğrulama

  1. tf-cen-oss-ecs adlı 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&regionId=cn-shanghai&instanceId=i-uf6xxx"
    test_command = "curl xxx"
  2. Çıktılarda curl ile başlayan komutu kopyalayın:

    Outputs:
    ecs_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=cn-shanghai"
    test_command = "curl tf-cen-oss-xxx.oss-cn-hangzhou-internal.aliyuncs.com/example.txt"
  3. ECS örneğinde curl komutunu ç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: