Memecahkan masalah konektivitas keluar Azure Load Balancer

Pelajari panduan pemecahan masalah untuk koneksi keluar di Azure Load Balancer. Ini termasuk memahami terjemahan alamat jaringan sumber (SNAT) dan dampaknya pada koneksi, menggunakan IP publik individual pada VM, dan merancang aplikasi untuk efisiensi koneksi untuk menghindari kelelahan port SNAT. Sebagian besar masalah dengan konektivitas keluar yang dialami pelanggan disebabkan oleh kelelahan port SNAT dan batas waktu koneksi yang mengarah ke paket yang dihilangkan.

Untuk mempelajari selengkapnya tentang port SNAT, lihat Terjemahan Alamat Jaringan Sumber untuk koneksi keluar.

Memahami penggunaan port SNAT Anda

Ikuti Diagnostik penyeimbang muatan standar dengan metrik, pemberitahuan, dan kesehatan sumber daya untuk memantau penggunaan dan alokasi port SNAT penyeimbang muatan yang ada. Pantau untuk mengonfirmasi atau menentukan risiko kelelahan SNAT. Jika Anda mengalami masalah saat memahami perilaku koneksi keluar, gunakan statistik stack IP (netstat) atau kumpulkan pengambilan paket. Anda dapat melakukan tangkapan paket ini di OS tamu instans Anda atau menggunakan Network Watcher untuk menangkap paket. Untuk sebagian besar skenario, Azure merekomendasikan penggunaan gateway NAT untuk konektivitas keluar guna mengurangi risiko kelelahan SNAT. Gateway NAT sangat disarankan jika layanan Anda memulai koneksi keluar TCP atau UDP berulang ke tujuan yang sama.

Mengoptimalkan penyebaran Azure untuk konektivitas keluar

Penting untuk mengoptimalkan penyebaran Azure untuk konektivitas keluar. Pengoptimalan dapat mencegah atau meringankan masalah pada konektivitas keluar.

Menyebarkan gateway NAT untuk konektivitas Internet keluar

Azure NAT Gateway adalah layanan Azure yang sangat tangguh dan dapat diskalakan yang menyediakan konektivitas keluar ke internet dari jaringan virtual Anda. Metode unik gateway NAT dalam menggunakan port SNAT membantu menyelesaikan masalah kelelahan dan koneksi SNAT umum. Untuk informasi selengkapnya tentang Azure NAT Gateway, lihat Apa itu Azure NAT Gateway?.

  • Bagaimana gateway NAT mengurangi risiko kelelahan port SNAT?

    Azure Load Balancer mengalokasikan port SNAT dalam jumlah tetap untuk setiap instans mesin virtual dalam kumpulan backend. Metode alokasi ini dapat menyebabkan kelelahan SNAT, terutama jika pola lalu lintas yang tidak merata sehingga komputer virtual tertentu mengirim volume koneksi keluar yang lebih tinggi. Tidak seperti penyeimbang muatan, gateway NAT mengalokasikan port SNAT di semua instans VM dalam subnet secara dinamis.

    Gateway NAT membuat port SNAT yang tersedia dapat diakses oleh setiap instans dalam subnet. Alokasi dinamis ini memungkinkan instans VM untuk menggunakan jumlah port SNAT yang masing-masing dibutuhkan dari kumpulan port yang tersedia untuk koneksi baru. Alokasi dinamis mengurangi risiko kelelahan SNAT.

    Diagram Azure Load Balancer vs. Azure NAT Gateway.

  • Pemilihan port dan perilaku penggunaan kembali.

    Gateway NAT memilih port secara acak dari kumpulan port yang tersedia. Jika tidak ada port yang tersedia, port SNAT digunakan kembali selama tidak ada koneksi yang ada ke IP dan port publik tujuan yang sama. Pemilihan port dan perilaku penggunaan kembali gateway NAT ini meminimalkan kemungkinan mengalami waktu koneksi habis.

    Untuk mempelajari selengkapnya tentang cara kerja SNAT dan penggunaan port untuk gateway NAT, lihat Dasar-dasar SNAT. Ada beberapa kondisi ketika Anda tidak akan dapat menggunakan gateway NAT untuk koneksi keluar. Untuk informasi selengkapnya tentang batasan gateway NAT, lihat Batasan NAT Gateway.

    Jika Anda tidak dapat menggunakan gateway NAT untuk konektivitas keluar, lihat opsi migrasi lain yang dijelaskan dalam artikel ini.

Mengonfigurasi aturan keluar penyeimbang muatan untuk memaksimalkan port SNAT per VM

Jika Anda menggunakan penyeimbang muatan standar publik dan mengalami kelelahan SNAT atau kegagalan koneksi, pastikan Anda menggunakan aturan keluar dengan alokasi port manual. Jika tidak, Anda mungkin mengandalkan akses keluar default penyeimbang muatan. Akses keluar default otomatis mengalokasikan jumlah port konservatif, yang didasarkan pada jumlah instans di kumpulan backend Anda. Akses keluar default bukanlah metode yang direkomendasikan untuk mengaktifkan koneksi keluar. Saat kumpulan backend Anda diskalakan, koneksi Anda mungkin terpengaruh jika port perlu dialokasikan ulang.

Untuk mempelajari selengkapnya tentang akses keluar default dan alokasi port default, lihat Terjemahan Alamat Jaringan Sumber untuk koneksi keluar.

Untuk meningkatkan jumlah port SNAT yang tersedia per VM, konfigurasikan aturan keluar dengan alokasi port manual pada penyeimbang muatan Anda. Misalnya, jika Anda tahu bahwa Anda memiliki maksimum 10 VM di kumpulan backend, Anda dapat mengalokasikan hingga 6.400 port SNAT per VM daripada default 1.024. Jika memerlukan lebih banyak port SNAT, Anda dapat menambahkan beberapa alamat IP frontend terhadap koneksi keluar untuk mengalikan jumlah port SNAT yang tersedia. Pastikan Anda memahami mengapa Anda menghabiskan port SNAT sebelum menambahkan lebih banyak alamat IP frontend.

Untuk panduan mendetail, lihat Merancang aplikasi Anda untuk menggunakan koneksi secara efisien nanti di artikel ini. Untuk menambahkan lebih banyak alamat IP terhadap koneksi keluar, buat konfigurasi IP frontend untuk setiap IP baru. Saat aturan keluar dikonfigurasi, Anda dapat memilih beberapa konfigurasi IP frontend untuk kumpulan backend. Sebaiknya gunakan alamat IP yang berbeda untuk konektivitas masuk dan keluar. Alamat IP yang berbeda mengisolasi lalu lintas untuk pemantauan dan pemecahan masalah yang lebih baik.

Mengonfigurasi masing-masing IP publik di VM

Untuk penyebaran skala yang lebih kecil, Anda dapat mempertimbangkan untuk menetapkan IP publik ke VM. Jika IP publik ditetapkan ke VM, semua port yang disediakan oleh IP publik tersedia untuk VM. Tidak seperti penyeimbang muatan atau gateway NAT, port hanya dapat diakses oleh satu VM yang terkait dengan alamat IP.

Sebaiknya pertimbangkan untuk menggunakan gateway NAT sebagai gantinya, karena menetapkan alamat masing-masing IP publik bukanlah solusi yang dapat diskalakan.

Catatan

Jika Anda perlu menyambungkan jaringan virtual Azure Anda ke layanan Azure PaaS seperti Azure Storage, Azure SQL, Azure Cosmos DB, atau layanan Azure lainnya yang tersedia, Anda dapat menggunakan Azure Private Link untuk menghindari SNAT sepenuhnya. Azure Private Link mengirim lalu lintas dari jaringan virtual Anda ke layanan Azure melalui jaringan backbone Azure alih-alih melalui internet.

Private Link adalah opsi yang direkomendasikan dibandingkan titik akhir layanan untuk akses privat ke layanan yang di-hosting Azure. Untuk informasi selengkapnya tentang perbedaan antara Private Link dan titik akhir layanan, lihat Membandingkan Titik Akhir Privat dan Titik Akhir Layanan.

Merancang aplikasi hemat koneksi

Saat Anda merancang aplikasi, pastikan aplikasi tersebut menggunakan koneksi secara efisien. Efisiensi koneksi dapat mengurangi atau menghilangkan kelelahan port SNAT dalam aplikasi yang Anda sebarkan.

Mengubah aplikasi untuk menggunakan kembali koneksi

Daripada menghasilkan koneksi TCP atomik untuk setiap permintaan, sebaiknya konfigurasikan aplikasi Anda untuk menggunakan kembali koneksi. Penggunaan kembali koneksi menghasilkan transaksi TCP dengan performa lebih baik dan sangat relevan untuk protokol seperti HTTP/1.1, yang penggunaan kembali koneksinya adalah default. Penggunaan kembali ini berlaku untuk protokol lain yang menggunakan HTTP sebagai transportasinya seperti REST.

Mengubah aplikasi untuk menggunakan kumpulan koneksi

Gunakan skema penyatuan koneksi dalam aplikasi Anda, yaitu permintaan didistribusikan secara internal di seluruh rangkaian koneksi tetap dan digunakan kembali jika memungkinkan. Skema ini membatasi jumlah port SNAT yang digunakan dan menciptakan lingkungan yang lebih dapat diprediksi.

Skema ini dapat meningkatkan throughput permintaan dengan mengizinkan beberapa operasi simultan ketika satu koneksi memblokir balasan operasi.

Kumpulan koneksi mungkin sudah ada dalam kerangka kerja yang Anda gunakan untuk mengembangkan aplikasi atau pengaturan konfigurasi untuk aplikasi Anda. Anda dapat menggabungkan kumpulan koneksi dengan koneksi digunakan kembali. Beberapa permintaan Anda kemudian mengkonsumsi jumlah port yang tetap dan dapat diprediksi ke alamat IP dan port tujuan yang sama.

Permintaan mendapat keuntungan dari penggunaan transaksi TCP yang efisien, mengurangi latensi dan pemanfaatan sumber daya. Transaksi UDP juga dapat menguntungkan. Pengelolaan jumlah aliran UDP dapat menghindari kondisi penghabisan dan mengatur pemanfaatan port SNAT.

Mengubah aplikasi untuk menggunakan logika coba lagi yang tidak terlalu agresif

Ketika port SNAT habis atau terjadi kegagalan aplikasi, percobaan ulang yang agresif atau kasar tanpa logika peluruhan dan back-off menyebabkan kelelahan atau bertahan. Anda dapat mengurangi permintaan untuk port SNAT dengan menggunakan logika coba lagi yang kurang agresif.

Bergantung pada waktu habis idle yang dikonfigurasi, jika percobaan ulang terlalu agresif, koneksi mungkin tidak memiliki cukup waktu untuk menutup dan melepaskan port SNAT untuk digunakan kembali.

Gunakan keepalive untuk mengatur ulang batas waktu habis siaga keluar

Aturan keluar penyeimbang muatan memiliki batas waktu idle 4 menit secara default yang dapat disesuaikan hingga 100 menit. Anda dapat menggunakan TCP keepalive untuk me-refresh aliran idle dan mengatur ulang waktu habis idle ini jika perlu. Saat menggunakan TCP keepalive, cukup untuk mengaktifkannya di satu sisi koneksi.

Misalnya, Anda cukup mengaktifkannya di sisi server hanya untuk mengatur ulang timer idle aliran dan kedua belah pihak tidak perlu memulai TCP keepalive. Konsep serupa diterapkan untuk lapisan aplikasi, termasuk konfigurasi database klien-server. Periksa sisi server untuk opsi apa yang ada untuk keepalives khusus aplikasi.

Langkah berikutnya

Untuk informasi selengkapnya tentang kelelahan port SNAT, opsi konektivitas keluar, dan akses keluar default lihat: