Application Load Balancer (ALB) mendukung cross-zone load balancing untuk mencegah bottleneck sumber daya di satu availability zone. Namun, dalam skenario yang sensitif terhadap latensi—seperti perdagangan keuangan kuantitatif dan komunikasi real-time—fitur ini dapat menimbulkan latensi tambahan. Anda dapat menonaktifkan cross-zone load balancing agar ALB hanya mendistribusikan traffic ke server backend dalam availability zone yang sama. Pendekatan ini menghindari transfer data lintas zona, sehingga mengurangi latensi dan meningkatkan responsivitas aplikasi.
Cara kerja
Secara default, cross-zone load balancing diaktifkan untuk instans ALB. Permintaan masuk didistribusikan ke layanan backend yang ditempatkan di semua zona yang dipilih dalam wilayah tertentu. Jika Anda menonaktifkan fitur ini untuk suatu kelompok server, beban akan diseimbangkan di setiap zona tunggal.
Sebelum menonaktifkan cross-zone load balancing, pastikan setiap availability zone yang digunakan oleh instans ALB Anda memiliki sumber daya server backend yang mencukupi untuk mencegah gangguan layanan.
Fitur utama
Latensi berkurang: Mendistribusikan traffic dalam availability zone yang sama mengurangi latensi transfer data antar zona dan meningkatkan kecepatan respons aplikasi.
Kasus penggunaan
Fitur ini ideal untuk skenario berlatensi rendah:
-
Perdagangan keuangan: Dalam perdagangan kuantitatif frekuensi tinggi, latensi rendah memungkinkan pemrosesan transaksi cepat dan mengurangi risiko kegagalan atau timeout.
-
Komunikasi real-time: Pada aplikasi seperti konferensi video dan pesan instan, latensi rendah menjamin pengalaman pengguna yang lancar.
-
Internet of Things (IoT): Dalam skenario seperti pengumpulan data real-time, latensi rendah memastikan analisis dan respons data yang tepat waktu, meningkatkan efisiensi dan akurasi sistem secara keseluruhan.
Batasan
-
Hanya instans ALB standar dan instans ALB dengan WAF yang mendukung penonaktifan cross-zone load balancing. Fitur ini tidak tersedia untuk instans ALB dasar.
-
Saat cross-zone load balancing dinonaktifkan, Anda tidak dapat mengaktifkan session persistence.
-
Anda tidak dapat menonaktifkan cross-zone load balancing untuk kelompok server berbasis IP yang telah mengaktifkan Remote IP.
-
Pengaturan ini tidak berlaku untuk kelompok server bertipe Function Compute.
Contoh skenario
Sebuah perusahaan memiliki aplikasi highly available yang ditempatkan di wilayah China (Hangzhou) dengan cross-zone load balancing diaktifkan secara default. Karena perubahan kebutuhan bisnis, aplikasi kini memerlukan latensi yang lebih rendah.
Untuk memenuhi kebutuhan baru ini, perusahaan menonaktifkan cross-zone load balancing. Hal ini mengonfigurasi instans ALB agar hanya mengarahkan traffic ke server backend dalam availability zone yang sama, sehingga mengurangi latensi dan meningkatkan kecepatan aplikasi.
Prasyarat
-
Anda telah membuat instans ALB standar di wilayah China (Hangzhou) dan memilih beberapa availability zone saat pembuatan, misalnya Zone H dan Zone K. Untuk informasi selengkapnya, lihat Create and manage an ALB instance.
-
Anda telah membuat kelompok server.
-
Anda telah menambahkan instans ECS01 dan ECS02 ke kelompok server tersebut. ECS01 berada di Availability Zone H dan ECS02 berada di Availability Zone K, serta layanan aplikasi telah ditempatkan di kedua instans tersebut.
-
Anda telah mengonfigurasi listener untuk instans tersebut dan mengaitkan kelompok server yang dibuat. Untuk informasi selengkapnya, lihat Add an HTTP listener, Add an HTTPS listener, atau Add a QUIC listener.
-
Anda telah mendaftarkan nama domain, menyelesaikan Pendaftaran ICP, dan mengonfigurasi Rekaman CNAME untuk nama domain agar mengarah ke instans ALB.
Prosedur
Langkah 1: Nonaktifkan cross-zone load balancing
Dokumen ini menjelaskan cara menonaktifkan cross-zone load balancing untuk kelompok server yang sudah ada. Anda juga dapat menonaktifkan fitur ini saat membuat kelompok server.
-
Masuk ke Konsol Application Load Balancer (ALB).
-
Pada halaman Server Groups, temukan kelompok server target dan klik ID-nya.
-
Pada halaman Details, di bagian Basic Information, klik Modify Basic Information.
-
Pada kotak dialog Modify Basic Information, klik Advanced Settings, matikan sakelar Cross-zone Load Balancing, lalu klik Save.
(Opsional) Langkah 2: Verifikasi pengarahan traffic
Verifikasi ini hanya untuk demonstrasi. Di lingkungan produksi, akses layanan menggunakan nama domain-nya dan uji latensi seperti yang dijelaskan di Langkah 3.
Pada halaman Instance Details dari instans target, di bagian Zone, salin elastic IP addresses (EIPs) untuk Zone H dan Zone K.
-
Gunakan browser untuk mengakses EIP Availability Zone H, misalnya,
http://<elastic IP address>. Segarkan browser beberapa kali. Anda hanya dapat mengakses server backend ECS01 di Availability Zone H.Halaman menampilkan
Hello World ! This is ECS01. -
Gunakan browser untuk mengakses EIP Availability Zone K, misalnya,
http://<elastic IP address>. Segarkan browser beberapa kali. Anda hanya dapat mengakses server backend ECS02 di Availability Zone K.Hello World ! This is ECS02.
Langkah 3: Uji latensi
Hasil pengujian dapat bervariasi tergantung wilayah dan availability zone. Hasil berikut hanya untuk tujuan demonstrasi. Hasil aktual Anda mungkin berbeda.
-
Buat instans ECS internet-facing (ECS03) di wilayah Germany (Frankfurt) untuk digunakan sebagai klien uji. Jika Anda sudah memiliki server uji, Anda dapat melewati langkah ini.
-
Masuk ke klien uji (ECS03) dan jalankan perintah berikut untuk menguji latensi.
curl http://www.example.com -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n"Penjelasan parameter:
-
time_connect: Waktu koneksi. Waktu, dalam detik, dari awal permintaan hingga koneksi TCP terbentuk.
-
time_starttransfer: Waktu hingga byte pertama (TTFB). Waktu, dalam detik, sejak klien mengirim permintaan hingga menerima byte respons pertama dari server backend.
-
time_total: Waktu total. Ini adalah waktu, dalam detik, sejak klien mengirim permintaan hingga server backend menyelesaikan respons.
Waktu respons dengan cross-zone load balancing diaktifkan:
[ecs-assist-user@xxx ~]$ curl http://xxx -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" Hello World ! This is ECS02. time_connect: 0.170654 time_starttransfer: 0.347200 time_total: 0.347234 [ecs-assist-user@xxx ~]$ curl http://xxx -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" Hello World ! This is ECS01. time_connect: 0.178056 time_starttransfer: 0.357358 time_total: 0.357397Waktu respons dengan cross-zone load balancing dinonaktifkan:
[ecs-assist-user@xxx ~]$ curl http://xxx -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" Hello World ! This is ECS01. time_connect: 0.152544 time_starttransfer: 0.307768 time_total: 0.307797Hasil pengujian menunjukkan bahwa menonaktifkan cross-zone load balancing mengurangi waktu koneksi, TTFB, dan waktu total.
-
FAQ
Mengapa muncul error 503?
Error ini terjadi ketika availability zone yang menerima permintaan tidak memiliki server backend yang tersedia dalam kelompok server terkait. Karena tidak dapat meneruskan permintaan, instans ALB mengembalikan error 503.
Mengapa session persistence tidak didukung?
Session persistence memerlukan pengarahan permintaan lintas availability zone, misalnya dari zona A ke server tertentu di zona B. Menonaktifkan cross-zone load balancing mencegah pengarahan semacam ini, sehingga kedua fitur tersebut tidak kompatibel.
Apa status kesehatan server lintas zona?
Saat cross-zone load balancing dinonaktifkan, pemeriksaan kesehatan hanya dilakukan dalam availability zone yang sama. Oleh karena itu, server backend di availability zone yang berbeda akan memiliki Status pemeriksaan kesehatan Unused.
Referensi
-
Untuk informasi tentang wilayah dan zona yang didukung ALB, lihat Regions and zones.
-
Jika Anda mengalami masalah selama konfigurasi, lihat FAQ about ALB.
-
Jika Anda mengalami masalah terkait pemeriksaan kesehatan, lihat Troubleshoot ALB health check issues.
-
CreateServerGroup: Buat kelompok server.
-
UpdateServerGroupServersAttribute: Perbarui konfigurasi server backend.
-
ListServerGroups: Kueri kelompok server.
-
GetListenerHealthStatus: Kueri Status pemeriksaan kesehatan.