Ulasan Azure Well-Architected Framework tentang gateway Azure NAT

Azure Application Gateway
Azure Virtual Network
Azure Private Link

Artikel ini menjelaskan praktik terbaik untuk gateway Azure NAT. Panduan ini didasarkan pada lima pilar keunggulan arsitektur: Pengoptimalan Biaya, Keunggulan Operasional, Efisiensi Performa, Keandalan, dan Keamanan.

Sebagai prasyarat untuk panduan ini, Anda harus memiliki pengetahuan kerja tentang Azure NAT Gateway dan memahami fiturnya masing-masing. Untuk informasi selengkapnya, lihat dokumentasi Azure NAT Gateway.

Pengoptimalan biaya

Konfigurasikan akses ke solusi platform as a service (PaaS) melalui Azure Private Link atau titik akhir layanan, termasuk penyimpanan, sehingga Anda tidak perlu menggunakan gateway NAT. Private Link dan titik akhir layanan tidak memerlukan traversal gateway NAT untuk mengakses layanan PaaS. Pendekatan ini mengurangi biaya per gigabyte (GB) data yang diproses, dibandingkan dengan biaya penggunaan gateway NAT. Private Link dan titik akhir layanan juga memberikan manfaat keamanan.

Efisiensi kinerja

Setiap sumber daya gateway NAT menyediakan throughput hingga 50 gigabit per detik (Gbps). Anda dapat membagi penyebaran menjadi beberapa subnet, lalu menetapkan gateway NAT ke setiap subnet atau grup subnet untuk memperluas skala.

Setiap alamat IP publik gateway NAT menyediakan 64.512 port Source Network Address Translation (SNAT). Anda dapat menetapkan hingga 16 alamat IP ke gateway NAT, termasuk alamat IP publik standar individual, awalan IP publik, atau keduanya. Untuk setiap alamat IP keluar yang ditetapkan yang masuk ke titik akhir tujuan yang sama, gateway NAT dapat mendukung hingga 50.000 alur bersamaan untuk Protokol Kontrol Transmisi (TCP) dan Protokol Datagram Pengguna (UDP) masing-masing.

Kelelahan SNAT

Pertimbangkan panduan berikut untuk membantu mencegah kelelahan SNAT:

  • Sumber daya gateway NAT memiliki batas waktu diam TCP default selama empat menit. Anda dapat mengonfigurasi batas waktu hingga 120 menit. Jika Anda mengubah pengaturan ini ke nilai yang lebih tinggi dari default, gateway NAT tahan untuk mengalir lebih lama, yang dapat membuat tekanan yang tidak perlu pada inventaris port SNAT.

  • Permintaan atomik (satu permintaan per koneksi) membatasi skala, mengurangi performa, dan mengurangi keandalan. Alih-alih permintaan atom, Anda dapat menggunakan kembali koneksi HTTP atau HTTPS untuk mengurangi jumlah koneksi dan port SNAT terkait. Saat Anda menggunakan kembali koneksi, aplikasi dapat menskalakan dengan lebih baik. Performa aplikasi meningkat karena berkurangnya biaya jabat tangan, overhead, dan operasi kriptografi saat Anda menggunakan Transport Layer Security (TLS).

  • Jika Anda tidak menyimpan cache hasil pemecah masalah DNS, pencarian Sistem Nama Domain (DNS) dapat memperkenalkan banyak alur individual dalam volume. Gunakan penembolokan DNS untuk mengurangi volume aliran dan mengurangi jumlah port SNAT. DNS adalah sistem penamaan yang memetakan nama domain ke alamat IP untuk sumber daya yang terhubung ke internet atau ke jaringan privat.

  • Alur UDP, seperti pencarian DNS, menggunakan port SNAT selama batas waktu saat nonaktif. Timer batas waktu diam UDP diperbaiki pada empat menit.

  • Gunakan kumpulan koneksi untuk membentuk volume koneksi Anda.

  • Untuk membersihkan alur, jangan tinggalkan alur TCP secara diam-diam atau mengandalkan timer TCP. Jika Anda tidak membiarkan TCP secara eksplisit menutup koneksi, koneksi TCP tetap terbuka. Sistem menengah dan titik akhir menjaga koneksi ini tetap digunakan, yang membuat port SNAT tidak tersedia untuk koneksi lain. Antipattern ini dapat memicu kegagalan aplikasi dan kelelahan SNAT.

  • Jangan ubah nilai timer terkait TCP tingkat OS kecuali Anda mengetahui implikasinya. Jika titik akhir koneksi memiliki ekspektasi yang tidak cocok, tumpukan TCP dapat pulih, tetapi mungkin berdampak negatif pada performa aplikasi Anda. Anda biasanya memiliki masalah desain yang mendasar jika Anda perlu mengubah nilai timer. Dan jika aplikasi yang mendasar memiliki antipattern lain dan Anda mengubah nilai timer, Anda mungkin juga mempercepat kelelahan SNAT.

Tinjau panduan berikut untuk meningkatkan skala dan keandalan layanan Anda:

  • Pertimbangkan efek mengurangi batas waktu diam TCP ke nilai yang lebih rendah. Batas waktu menganggur default empat menit dapat secara preemptively membebaskan inventaris port SNAT.

  • Pertimbangkan pola polling asinkron untuk operasi jangka panjang untuk membebaskan sumber daya koneksi Anda untuk operasi lain.

  • Pertimbangkan untuk menggunakan keepalives TCP atau keepalive lapisan aplikasi untuk alur TCP berumur panjang, seperti koneksi TCP yang digunakan kembali, untuk mencegah sistem menengah kehabisan waktu. Anda hanya boleh meningkatkan batas waktu diam sebagai upaya terakhir, dan mungkin tidak menyelesaikan akar penyebabnya. Batas waktu yang lama dapat menyebabkan kegagalan tingkat rendah ketika waktu habis kedaluwarsa. Ini juga dapat memperkenalkan penundaan dan kegagalan yang tidak perlu. Anda dapat mengaktifkan keepalives TCP dari satu sisi koneksi untuk menjaga koneksi tetap hidup dari kedua sisi.

  • Pertimbangkan untuk menggunakan keepalives UDP untuk alur UDP berumur panjang untuk mencegah waktu habis sistem perantara. Saat Anda mengaktifkan keepalives UDP di satu sisi koneksi, hanya satu sisi koneksi yang tetap aktif. Anda harus mengaktifkan keepalives UDP di kedua sisi koneksi untuk menjaga koneksi tetap hidup.

  • Pertimbangkan pola coba lagi yang anggun untuk menghindari percobaan ulang dan ledakan yang agresif selama kegagalan sementara atau pemulihan kegagalan. Untuk koneksi atom antipattern, Anda membuat koneksi TCP baru untuk setiap operasi HTTP. Koneksi atom membuang sumber daya dan mencegah aplikasi Anda menskalakan dengan baik.

    Untuk meningkatkan kecepatan transaksi dan mengurangi biaya sumber daya untuk aplikasi Anda, selalu pipa beberapa operasi ke dalam koneksi yang sama. Saat aplikasi Anda menggunakan enkripsi lapisan transportasi, misalnya TLS, pemrosesan koneksi baru meningkatkan biaya. Untuk pola praktik terbaik lainnya, lihat Pola desain cloud Azure.

Keunggulan operasional

Anda dapat menggunakan gateway NAT dengan Azure Kubernetes Service (AKS), tetapi manajemen gateway NAT tidak disertakan dalam AKS. Jika Anda menetapkan gateway NAT ke subnet Antarmuka Jaringan Kontainer (CNI), Anda mengaktifkan pod AKS untuk keluar melalui gateway NAT.

Saat Anda menggunakan beberapa gateway NAT di seluruh zona atau wilayah, jaga agar real estat IP keluar dapat dikelola dengan menggunakan awalan IP publik Azure atau prefiks BRING-your-own IP (BYOIP). Anda tidak dapat menetapkan ukuran awalan IP yang lebih besar dari 16 alamat IP (ukuran awalan/28) ke gateway NAT.

Gunakan pemberitahuan Azure Monitor untuk memantau dan memperingatkan penggunaan port SNAT, paket yang diproses atau dihilangkan, dan jumlah data yang dikirimkan. Gunakan log alur kelompok keamanan jaringan (NSG) untuk memantau arus lalu lintas keluar dari instans komputer virtual (VM) dalam subnet yang dikonfigurasi gateway NAT.

Saat Anda mengonfigurasi subnet dengan gateway NAT, gateway NAT menggantikan semua konektivitas keluar lainnya ke internet publik untuk semua VM pada subnet tersebut. Gateway NAT lebih diutamakan daripada load balancer, terlepas dari aturan keluar. Gateway juga lebih diutamakan daripada alamat IP publik yang ditetapkan langsung ke VM. Azure melacak arah alur dan mencegah perutean asimetris. Lalu lintas asal masuk, seperti IP front-end load balancer, diterjemahkan dengan benar, dan diterjemahkan secara terpisah dari lalu lintas asal keluar melalui gateway NAT. Pemisahan ini memungkinkan layanan masuk dan keluar untuk hidup berdampingan dengan lancar.

Kami merekomendasikan gateway NAT sebagai default untuk mengaktifkan konektivitas keluar untuk jaringan virtual. Gateway NAT memberikan efisiensi dan kesederhanaan operasional dibandingkan dengan teknik konektivitas keluar lainnya di Azure. Gateway NAT mengalokasikan port SNAT sesuai permintaan dan menggunakan algoritma yang lebih efisien untuk mencegah konflik penggunaan kembali port SNAT. Jangan mengandalkan antipattern konektivitas keluar default untuk estate Anda. Sebagai gantinya, tentukan konfigurasi Anda secara eksplisit dengan sumber daya gateway NAT.

Keandalan

Sumber daya gateway NAT sangat tersedia di satu zona ketersediaan dan mencakup beberapa domain kesalahan. Anda dapat menyebarkan gateway NAT ke tanpa zona di mana Azure secara otomatis memilih zona untuk menempatkan gateway NAT atau mengisolasi gateway NAT ke zona ketersediaan tertentu.

Untuk menyediakan isolasi zona ketersediaan, setiap subnet harus memiliki sumber daya hanya dalam zona tertentu. Untuk menerapkan pendekatan ini, Anda dapat:

  • Sebarkan subnet untuk setiap zona ketersediaan tempat VM disebarkan.
  • Sejajarkan VM zona dengan gateway NAT zonal yang cocok.
  • Bangun tumpukan zona terpisah.

Dalam diagram berikut, VM di zona ketersediaan 1 ada di subnet dengan sumber daya lain yang juga hanya berada di zona ketersediaan 1. Gateway NAT dikonfigurasi di zona ketersediaan 1 untuk melayani subnet tersebut.

Diagram yang menunjukkan aliran arah tumpukan zona.

Jaringan virtual dan subnet mencakup semua zona ketersediaan di suatu wilayah. Anda tidak perlu membaginya berdasarkan zona ketersediaan untuk mengakomodasi sumber daya zona.

Keamanan

Dengan gateway NAT, VM individual atau sumber daya komputasi lainnya tidak memerlukan alamat IP publik dan dapat tetap sepenuhnya privat. Sumber daya tanpa alamat IP publik masih dapat menjangkau sumber eksternal di luar jaringan virtual. Anda dapat mengaitkan awalan IP publik untuk memastikan bahwa Anda menggunakan sekumpulan IP yang berdampingan untuk konektivitas keluar. Anda dapat mengonfigurasi aturan firewall tujuan berdasarkan daftar IP yang dapat diprediksi ini.

Pendekatan umumnya adalah merancang skenario appliance virtual jaringan (NVA) khusus keluar dengan firewall non-Microsoft atau dengan server proksi. Saat Anda menyebarkan gateway NAT ke subnet dengan kumpulan skala komputer virtual NVA, NVA tersebut menggunakan satu atau beberapa alamat gateway NAT untuk konektivitas keluar alih-alih IP load balancer atau IP individual. Untuk menggunakan skenario ini dengan Azure Firewall, lihat Mengintegrasikan Azure Firewall dengan load balancer standar Azure.

Diagram yang menunjukkan firewall dengan sandwich load balancer dan gateway NAT.

Anda dapat menggunakan fitur pemberitahuan Microsoft Defender untuk Cloud untuk memantau konektivitas keluar yang mencurigakan di gateway NAT.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah berikutnya