Fitur penerusan dinamis pada ALB Extensible Edition mengekstraksi alamat target dari permintaan secara real time dan meneruskan permintaan tersebut langsung, tanpa perlu mendaftarkan backend terlebih dahulu. Fitur ini cocok untuk skenario dengan alamat backend yang berubah secara dinamis, seperti penjadwalan sandbox AI Agent dan gerbang untuk sejumlah besar backend dinamis. Kelompok server IP Address Range membatasi cakupan target guna mencegah traffic diteruskan ke backend yang tidak diotorisasi.
Skema Penggunaan
Penerusan dinamis cocok untuk skenario di mana alamat backend berubah secara dinamis per permintaan dan jumlah instans backend sangat besar. Skema penggunaan khas meliputi:
-
Penjadwalan traffic sandbox AI Agent: Inferensi AI Agent, eksekusi kode, dan beban kerja serupa dijalankan pada sejumlah besar instans sandbox (seperti Pod berbagai produk sandbox) yang disediakan sesuai permintaan. Penjadwal lapisan atas menuliskan alamat IP dan port instans sandbox target ke dalam header permintaan, lalu ALB mengekstraksinya dan meneruskan permintaan secara langsung, tanpa perlu mendaftarkan backend sandbox yang sering berubah terlebih dahulu.
-
Penerusan domain tunggal untuk mini program dan game H5: Platform seperti mini program biasanya hanya mengizinkan satu nama domain yang valid dikonfigurasi. Di bawah satu nama domain, Anda dapat menggunakan parameter URL (seperti
?ip=1.1.X.X&port=1111) untuk mengarahkan permintaan ke instans server game yang berbeda, menggantikan solusi Nginx yang dibangun sendiri. -
Jumlah besar backend dinamis: Saat jumlah instans backend sangat besar, penerusan dinamis menangani setiap permintaan secara real time tanpa perlu mendaftarkan backend satu per satu. Anda hanya perlu mengonfigurasi rentang alamat IP dan rentang port yang diizinkan. Satu instans dapat melayani sejumlah besar backend dinamis, sehingga menghindari pembagian menjadi beberapa instans akibat batas kuota kelompok server.
Arsitektur
Setelah permintaan klien mencapai instans ALB Extensible Edition, aturan pengalihan meneruskan traffic ke komponen penerusan dinamis yang terkait dengan kelompok server IP Address Range. Komponen tersebut menjalani tiga tahap secara berurutan: ekstraksi titik akhir, validasi cakupan target, dan penerusan dinamis. Komponen ini menentukan alamat IP dan port target yang sebenarnya. Jika target tersebut sesuai dengan rentang yang diizinkan, permintaan akan diteruskan langsung ke alamat tersebut. Jika tidak, respons HTTP 403 dikembalikan.
-
Instans ALB Extensible Edition: Menyediakan kemampuan load balancing dan penerusan traffic.
-
Kelompok server IP Address Range: Mendeklarasikan cakupan target yang boleh dijangkau oleh penerusan dinamis, dalam bentuk rentang alamat IP dan rentang port. Harus dikaitkan dengan ekstensi layanan yang berisi komponen penerusan dinamis.
-
Ekstensi layanan: Membawa komponen penerusan dinamis. Berlaku setelah dikaitkan dengan kelompok server IP Address Range.
-
Komponen penerusan dinamis: Mengekstraksi host dan port target dari parameter kueri atau header permintaan, lalu meneruskan permintaan ke backend setelah validasi cakupan target.
Prasyarat
-
Anda telah mendapatkan kualifikasi pratinjau publik untuk ALB Extensible Edition.
-
Sebuah virtual private cloud (VPC) bernama
VPC1telah dibuat di wilayah China (Shanghai), dengan vSwitchVSW1danVSW2dibuat masing-masing di Zona B dan Zona F.
Prosedur
1. Buat instans ALB Extensible Edition
-
Masuk ke Konsol ALB, pilih wilayah China (Shanghai), lalu klik Create ALB.
-
Di halaman pembelian, lengkapi konfigurasi berikut lalu klik Create Now.
-
Region: Pilih China (Shanghai).
-
Instance Network Type: Pilih Internet.
-
VPC dan Zone: Pilih
VPC1, pilih Shanghai Zone B dan Shanghai Zone F, lalu pilihVSW1danVSW2. Aktifkan Automatically Assign Public IP. -
Protocol Version: Pilih IPv4.
-
Edition (Instance Fee): Pilih Extensible Edition.
-
-
Di halaman Confirm Order, konfirmasi detail konfigurasi instans lalu klik Activate Now.
2. Buat ekstensi layanan dan tambahkan komponen penerusan dinamis
-
Di Konsol Ekstensi Layanan, klik Create Service Extension. Di bagian Service Extension Configuration, masukkan Extension name seperti
ext-dyn-fwd-plugin. -
Extension Type secara default bernilai Plug-in. Untuk Component name, pilih Dynamic Forwarding dari daftar drop-down. Di bawah Quick Configuration (Select to Auto-Fill Current Rule Parameters), klik Common Headers untuk menggunakan templat sistem preset, lalu klik Create.
-
Extraction Source: Nilai default adalah Header, artinya alamat IP dan port target diekstraksi dari header permintaan HTTP.
-
Extraction Mode: Nilai default adalah Separated Mode, artinya alamat IP dan port target berada di dua bidang berbeda dan harus ditentukan secara terpisah.
-
Target Host Source: Nilai default adalah
X-Target-Host. Komponen penerusan dinamis membaca alamat IP target dari header permintaan ini. -
Target Port Source: Nilai default adalah
X-Target-Port. Komponen penerusan dinamis membaca port target dari header permintaan ini. -
Default Port: Nilai default adalah
80. Ini adalah port fallback yang digunakan ketika tidak ada port yang diekstraksi dari permintaan.
-
Komponen penerusan dinamis tidak dapat ditambahkan ke ekstensi layanan yang sama dengan komponen lain.
3. Siapkan server backend
-
Buat instans ECS dengan mengacu pada konfigurasi berikut. Grup keamanan instans ECS harus mengizinkan lalu lintas inbound dari blok CIDR
VPC1.-
Region: Pilih China (Shanghai).
-
Network and Zone: Pilih
VPC1danVSW1, lalu pilih Specify Primary Private IP Address of Primary ENI. Dalam tutorial ini,VSW1berkorespondensi dengan rentang alamat IP172.16.10.0/24, dan alamat IP privat utama ENI primer ditentukan sebagai172.16.10.100. -
Image: Pilih
Alibaba Cloud Linux 3.2104 LTS 64-bit.
-
-
Di Konsol ECS, temukan instans tersebut. Di kolom Actions, pilih Network and Security Group > Manage Secondary Private IP Address. Klik Increase, masukkan
172.16.10.101, lalu klik OK. Ikuti petunjuk di Enable the operating system to recognize a secondary private IP address untuk mengonfigurasi instans ECS agar mengenali alamat IP tersebut. Sambungkan ke instans ECS dan jalankanip a. Anda dapat melihat bahwa instans ECS telah mengenali alamat IP privat sekunder.2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:16:3e:xx:xx:xx brd ff:ff:ff:ff:ff:ff altname enp3s0 inet 172.16.10.100/24 brd 172.16.10.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 172.16.10.101/24 brd 172.16.10.255 scope global secondary noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::xxxx:xxff:fexx:xxxx/64 scope link valid_lft forever preferred_lft forever -
Di instans ECS backend, instal Nginx dan deploy layanan echo yang mendengarkan di port 80 dan port 81. Untuk setiap permintaan, layanan ini mengembalikan
IP:Porttarget aktual yang dicapai oleh permintaan tersebut, yang digunakan untuk memverifikasi titik pendaratan penerusan dinamis.# 1. Install nginx sudo dnf install -y nginx # 2. Tulis konfigurasi echo sudo tee /etc/nginx/conf.d/echo.conf >/dev/null <<'EOF' server { listen 80 default_server; listen 81 default_server; server_name _; location / { default_type text/plain; return 200 "served: $server_addr:$server_port\n"; } } EOF # 3. Hapus flag default_server dari situs default untuk menghindari konflik sudo sed -i 's/ default_server//g' /etc/nginx/nginx.conf # 4. Validasi konfigurasi, aktifkan autostart, dan mulai layanan sudo nginx -t sudo systemctl enable nginx sudo systemctl restart nginx # 5. Uji secara lokal curl 172.16.10.100:80 curl 172.16.10.100:81 curl 172.16.10.101:80 curl 172.16.10.101:81
4. Buat kelompok server IP Address Range
Penerusan dinamis menentukan target penerusan berdasarkan konten permintaan. Tanpa batasan, permintaan yang dibuat secara khusus dapat mengarahkan traffic ke alamat yang tidak diotorisasi, menimbulkan risiko SSRF. Konfigurasikan kelompok server IP Address Range sebagai batas keamanan wajib: hanya permintaan yang alamat IP dan port targetnya sesuai dengan entri yang diizinkan yang akan diteruskan. Semua permintaan lain mengembalikan HTTP 403.
-
Di Konsol Kelompok Server, klik Create Server Group.
-
Konfigurasikan parameter berikut lalu klik Create:
-
Server Group Type: Pilih IP Address Range.
-
Server Group Name: Masukkan nama kustom seperti
sgp-dyn-fwd. -
Backend Protocol: Default-nya adalah HTTP.
-
Use Existing Service Extension dan pilih ekstensi layanan
ext-dyn-fwd-plugin.
-
-
Setelah Server Group Created, klik Add Backend Servers. Di kotak dialog Add IP Address Segment, masukkan IP Address Range
172.16.10.0/24dan Port Range80-81, lalu klik OK.
5. Buat listener
-
Di Konsol ALB, klik ID instans target untuk membuka halaman Instance Details. Di tab Listener, klik Create Listener.
-
Di langkah Configure Listener, atur Listener Protocol ke HTTPS dan Listener Port ke
443, lalu klik Next. -
Di langkah Configure SSL Certificate, pilih sertifikat server yang sesuai dengan nama domain kustom Anda, lalu klik Next.
-
Di langkah Select Server Group, pilih tipe IP Address Range dan kelompok server
sgp-dyn-fwd, lalu klik Next.CatatanTutorial ini menggunakan aturan pengalihan default untuk meneruskan traffic ke kelompok server IP Address Range. Untuk menambahkan kemampuan seperti otentikasi atau pembatasan laju, buat aturan pengalihan tambahan di bawah listener dan kaitkan dengan ekstensi layanan yang sesuai.
-
Di langkah Configuration Review, konfirmasi konfigurasi lalu klik Submit.
6. Konfigurasi resolusi DNS
Arahkan nama domain kustom Anda ke nama DNS instans ALB menggunakan rekaman CNAME. Klien mengakses ALB melalui nama domain kustom Anda.
Tutorial ini menggunakan Alibaba Cloud DNS sebagai contoh. Untuk nama domain yang tidak didaftarkan di Alibaba Cloud, Anda harus terlebih dahulu menambahkan domain ke konsol DNS.
-
Di Konsol ALB, salin Domain Name dari instans target.
-
Masuk ke Konsol DNS. Di kolom Actions domain target, klik Settings. Di halaman Settings, klik Add Record.
-
Tambahkan rekaman CNAME dengan informasi berikut lalu klik OK:
-
Record Type: Pilih CNAME.
-
Hostname: Masukkan awalan domain seperti
test. Misalnya, jika domain root Anda adalahexample.com, domain untuk mengakses ALB adalahtest.example.com. -
Query Source dan TTL: Pertahankan nilai default.
-
Record Value: Masukkan nama DNS instans ALB.
-
-
Di kotak dialog Change Resource Record Confirmation, konfirmasi informasi resolusi lalu klik OK.
7. Verifikasi konfigurasi
Permintaan harus memenuhi kondisi berikut agar menerima respons sukses:
-
Komponen penerusan dinamis dapat mengekstraksi alamat IP dan port target dari permintaan (jika port tidak ditentukan secara eksplisit, Default Port digunakan sebagai fallback).
-
Kombinasi alamat IP dan port berada dalam rentang yang diizinkan oleh kelompok server IP Address Range.
-
Layanan backend sedang mendengarkan di alamat IP dan port tersebut serta mengembalikan respons.
Permintaan membawa alamat target yang valid
Meneruskan ke alamat IP utama
curl -v \
-H "X-Target-Host: 172.16.10.100" \
-H "X-Target-Port: 80" \
https://test.example.com/echo
Respons yang diharapkan: HTTP 200, dengan echo served: 172.16.10.100:80.
Meneruskan ke alamat IP sekunder (verifikasi alamat IP berbeda)
curl -v \
-H "X-Target-Host: 172.16.10.101" \
-H "X-Target-Port: 80" \
https://test.example.com/echo
Respons yang diharapkan: HTTP 200, dengan echo served: 172.16.10.101:80. Hal ini membuktikan bahwa alamat IP target berubah secara dinamis per permintaan.
Meneruskan ke port berbeda (verifikasi port berbeda)
curl -v \
-H "X-Target-Host: 172.16.10.100" \
-H "X-Target-Port: 81" \
https://test.example.com/echo
Respons yang diharapkan: HTTP 200, dengan echo served: 172.16.10.100:81. Hal ini membuktikan bahwa port target juga berubah secara dinamis per permintaan.
Tidak membawa port (verifikasi fallback port default)
curl -v \
-H "X-Target-Host: 172.16.10.101" \
https://test.example.com/echo
Respons yang diharapkan: HTTP 200, dengan echo served: 172.16.10.101:80. Permintaan tidak membawa port, sehingga komponen penerusan dinamis menggunakan port default 80 sebagai fallback.
Permintaan tidak membawa alamat target
curl -v \
https://test.example.com/echo
Respons yang diharapkan: HTTP 403, dengan echo endpoint not provided. Komponen penerusan dinamis tidak dapat mengekstraksi alamat IP target dari permintaan.
Alamat atau port target tidak dalam rentang yang diizinkan
curl -v \
-H "X-Target-Host: 10.99.99.99" \
-H "X-Target-Port: 80" \
https://test.example.com/echocurl -v \
-H "X-Target-Host: 172.16.10.100" \
-H "X-Target-Port: 12345" \
https://test.example.com/echo
Respons yang diharapkan: HTTP 403, dengan echo endpoint not allowed. Alamat IP atau port yang diekstraksi ditolak karena tidak berada dalam rentang yang diizinkan oleh kelompok server.
Informasi Tambahan
Penagihan
-
ALB Extensible Edition: Saat ini dalam pratinjau publik. Pengguna dapat mencobanya secara gratis. EIP yang dikaitkan dengan instans ALB Extensible Edition memiliki aturan penagihan tersendiri, dan biaya dikenakan berdasarkan EIP.
-
Instans ECS: Untuk detailnya, lihat ECS billing overview. Jika Anda membuat instans ECS untuk tujuan pengujian, kami sarankan membuat instans berbayar sesuai penggunaan dengan spesifikasi rendah dan segera melepaskannya.
-
Biaya nama domain dan resolusi DNS publik: Selain biaya nama domain dari penyedia domain Anda, konfigurasi resolusi DNS publik di Alibaba Cloud dikenai biaya resolusi DNS otoritatif publik.
-
Biaya sertifikat: Pembelian atau pengunggahan sertifikat ke Alibaba Cloud dikenai biaya sertifikat server.
Batasan
-
Protokol backend untuk penerusan dinamis saat ini hanya mendukung HTTP.
-
Kelompok server IP Address Range tidak mendukung penambahan rentang alamat seperti
22.0.0.0/8,33.0.0.0/8,100.0.0.0/8, atau127.0.0.0/8. -
Satu kelompok server IP Address Range mendukung maksimal 200 entri rentang IP secara default (setiap entri merupakan kombinasi rentang IP dan rentang port).
Wilayah yang mendukung ALB Extensible Edition
|
Area |
Wilayah |
Zona |
|
China |
China (Ulanqab) |
Zona A, Zona B, dan Zona C |
|
China (Hangzhou) |
Zona J dan Zona K |
|
|
China (Beijing) |
Zona I, Zona K, dan Zona L |
|
|
China (Shanghai) |
Zona B dan Zona F |
|
|
China (Hong Kong) |
Zona B, Zona C, dan Zona D |
|
|
Asia-Pasifik |
Singapura |
Zona A, Zona B, dan Zona C |
|
Jepang (Tokyo) |
Zona B, Zona C, dan Zona E |
|
|
Malaysia (Kuala Lumpur) |
Zona A, Zona B, dan Zona C |
|
|
Eropa dan Amerika |
Jerman (Frankfurt) |
Zona A dan Zona B |
|
AS (Silicon Valley) |
Zona A dan Zona B |
|
|
Timur Tengah |
UEA (Dubai) |
Zona A dan Zona B |
Praktik Terbaik
-
Urutkan konfigurasi ekstraksi alamat target secara tepat: Saat beberapa konfigurasi ekstraksi alamat target ditentukan, sistem mencocokkannya berurutan dari nomor urut terkecil ke terbesar. Pencocokan pertama yang sesuai akan berlaku. Tempatkan konfigurasi yang paling sering cocok dan paling restriktif di awal.
-
Pertahankan rentang target yang diizinkan tetap sempit: Sambil memastikan ketersediaan bisnis, batasi rentang alamat IP dan rentang port hanya ke backend yang benar-benar dibutuhkan oleh bisnis Anda. Hindari mengonfigurasi rentang yang terlalu luas.
-
Gunakan aturan pengalihan secara fleksibel: Kelompok server IP Address Range dapat berfungsi sebagai target pengalihan dalam aturan pengalihan. Gabungkan dengan kondisi pengalihan, ekstensi layanan, dan aksi pengalihan untuk kebutuhan orkestrasi traffic yang kompleks.
FAQ
Semua permintaan mengembalikan 403 dengan endpoint not allowed
Verifikasi bahwa kelompok server IP Address Range telah dikonfigurasi dengan rentang IP dan port yang benar, serta alamat IP dan port target yang dibawa oleh permintaan berada dalam rentang tersebut.
Semua permintaan mengembalikan 403 dengan endpoint not provided
Periksa apakah permintaan menyertakan header X-Target-Host dan X-Target-Port. Anda dapat memeriksa konfigurasi ekstensi layanan untuk mengonfirmasi.