Praktik terbaik untuk menerima koneksi masuk ke Amazon ECS dari internet - Amazon Elastic Container Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Praktik terbaik untuk menerima koneksi masuk ke Amazon ECS dari internet

Jika Anda menjalankan layanan publik, Anda harus menerima lalu lintas masuk dari internet. Misalnya, situs web publik Anda harus menerima HTTP permintaan masuk dari browser. Dalam kasus seperti itu, host lain di internet juga harus memulai koneksi masuk ke host aplikasi Anda.

Salah satu pendekatan untuk masalah ini adalah meluncurkan container Anda pada host yang berada di subnet publik dengan alamat IP publik. Namun, kami tidak merekomendasikan ini untuk aplikasi skala besar. Untuk ini, pendekatan yang lebih baik adalah memiliki lapisan input yang dapat diskalakan yang berada di antara internet dan aplikasi Anda. Untuk pendekatan ini, Anda dapat menggunakan salah satu AWS layanan yang tercantum di bagian ini sebagai masukan.

Penyeimbang Beban Aplikasi

Application Load Balancer berfungsi pada layer aplikasi. Ini adalah lapisan ketujuh dari model Open Systems Interconnection (OSI). Hal ini membuat Application Load Balancer cocok untuk pelayanan publikHTTP. Jika Anda memiliki situs web atau HTTP RESTAPI, maka Application Load Balancer adalah penyeimbang beban yang cocok untuk beban kerja ini. Untuk informasi selengkapnya, lihat Apa itu Application Load Balancer? dalam Panduan Pengguna untuk Penyeimbang Beban Aplikasi.

Diagram yang menunjukkan arsitektur jaringan menggunakan Application Load Balancer.

Dengan arsitektur ini, Anda membuat Application Load Balancer di subnet publik sehingga memiliki alamat IP publik dan dapat menerima koneksi inbound dari internet. Ketika Application Load Balancer menerima koneksi masuk, atau lebih khusus HTTP permintaan, ia membuka koneksi ke aplikasi menggunakan alamat IP pribadinya. Kemudian, meneruskan permintaan melalui koneksi internal.

Application Load Balancer memiliki keunggulan sebagai berikut.

  • SSL/TLSterminasi — Application Load Balancer dapat mempertahankan HTTPS komunikasi dan sertifikat yang aman untuk komunikasi dengan klien. Ini secara opsional dapat menghentikan SSL koneksi di tingkat penyeimbang beban sehingga Anda tidak perlu menangani sertifikat dalam aplikasi Anda sendiri.

  • Perutean lanjutan - Application Load Balancer dapat memiliki DNS beberapa nama host. Ini juga memiliki kemampuan perutean lanjutan untuk mengirim HTTP permintaan masuk ke berbagai tujuan berdasarkan metrik seperti nama host atau jalur permintaan. Ini berarti Anda dapat menggunakan Application Load Balancer tunggal sebagai input untuk banyak layanan internal yang berbeda, atau bahkan layanan mikro pada jalur yang berbeda dari file. REST API

  • g RPC support dan websockets - Application Load Balancer dapat menangani lebih dari sekedar. HTTP Itu juga dapat memuat keseimbangan g RPC dan layanan berbasis websocket, dengan dukungan HTTP /2.

  • Keamanan - Application Load Balancer membantu melindungi aplikasi Anda dari lalu lintas berbahaya. Ini mencakup fitur-fitur seperti mitigasi HTTP de sync, dan terintegrasi dengan AWS Web Application Firewall ().AWS WAF AWS WAF selanjutnya dapat menyaring lalu lintas berbahaya yang mungkin berisi pola serangan, seperti SQL injeksi atau skrip lintas situs.

Penyeimbang Beban Jaringan

Network Load Balancer berfungsi pada lapisan keempat model Open Systems Interconnection ()OSI. Ini cocok untuk HTTP non-protokol atau skenario di mana end-to-end enkripsi diperlukan, tetapi tidak memiliki fitur HTTP spesifik yang sama dari Application Load Balancer. Oleh karena itu, Network Load Balancer paling cocok untuk aplikasi yang tidak digunakan. HTTP Untuk informasi selengkapnya, lihat Apa itu Network Load Balancer? dalam Panduan Pengguna untuk Network Load Balancers.

Diagram yang menunjukkan arsitektur jaringan menggunakan Network Load Balancer.

Ketika Network Load Balancer digunakan sebagai input, fungsinya mirip dengan Application Load Balancer. Ini karena dibuat di subnet publik dan memiliki alamat IP publik yang dapat diakses di internet. Network Load Balancer kemudian membuka koneksi ke alamat IP pribadi host yang menjalankan container Anda, dan mengirimkan paket dari sisi publik ke sisi pribadi.

Fitur Network Load Balancer

Karena Network Load Balancer beroperasi pada tingkat yang lebih rendah dari tumpukan jaringan, ia tidak memiliki serangkaian fitur yang sama dengan Application Load Balancer. Namun, ia memang memiliki fitur-fitur penting berikut.

  • End-to-end Enkripsi — Karena Network Load Balancer beroperasi pada lapisan keempat OSI model, ia tidak membaca isi paket. Ini membuatnya cocok untuk komunikasi load balancing yang membutuhkan end-to-end enkripsi.

  • TLSenkripsi — Selain end-to-end enkripsi, Network Load Balancer juga dapat menghentikan TLS koneksi. Dengan cara ini, aplikasi backend Anda tidak harus mengimplementasikannya sendiri. TLS

  • UDPdukungan - Karena Network Load Balancer beroperasi pada lapisan keempat OSI model, itu cocok untuk non HTTP beban kerja dan protokol selain. TCP

Menutup koneksi

Karena Network Load Balancer tidak mengamati protokol aplikasi pada lapisan OSI model yang lebih tinggi, ia tidak dapat mengirim pesan penutupan ke klien dalam protokol tersebut. Berbeda dengan Application Load Balancer, koneksi tersebut harus ditutup oleh aplikasi atau Anda dapat mengkonfigurasi Network Load Balancer untuk menutup koneksi lapisan keempat ketika tugas dihentikan atau diganti. Lihat setelan penghentian sambungan untuk grup target Network Load Balancer dalam dokumentasi Network Load Balancer.

Membiarkan Network Load Balancer menutup koneksi pada lapisan keempat dapat menyebabkan klien menampilkan pesan kesalahan yang tidak diinginkan, jika klien tidak menanganinya. Lihat Builders Library untuk informasi selengkapnya tentang konfigurasi klien yang direkomendasikan di sini.

Metode untuk menutup koneksi akan bervariasi menurut aplikasi, namun salah satu caranya adalah memastikan bahwa penundaan deregistrasi target Network Load Balancer lebih lama daripada batas waktu koneksi klien. Klien akan timeout terlebih dahulu dan menyambung kembali dengan anggun melalui Network Load Balancer ke tugas berikutnya sementara tugas lama perlahan-lahan menguras semua kliennya. Untuk informasi selengkapnya tentang penundaan deregistrasi target Network Load Balancer, lihat dokumentasi Network Load Balancer.

APIGerbang Amazon HTTP API

Amazon API Gateway cocok untuk HTTP aplikasi dengan semburan tiba-tiba dalam volume permintaan atau volume permintaan rendah. Untuk informasi selengkapnya, lihat Apa itu Amazon API Gateway? di Panduan Pengembang API Gateway.

Diagram yang menunjukkan arsitektur jaringan menggunakan API Gateway.

Model harga untuk Application Load Balancer dan Network Load Balancer mencakup harga per jam untuk menjaga penyeimbang beban tersedia untuk menerima koneksi masuk setiap saat. Sebaliknya, API Gateway mengenakan biaya untuk setiap permintaan secara terpisah. Ini memiliki efek bahwa, jika tidak ada permintaan masuk, tidak ada biaya. Di bawah beban lalu lintas yang tinggi, Application Load Balancer atau Network Load Balancer dapat menangani volume permintaan yang lebih besar dengan harga per permintaan yang lebih murah daripada Gateway. API Namun, jika Anda memiliki jumlah permintaan yang rendah secara keseluruhan atau memiliki periode lalu lintas rendah, maka harga kumulatif untuk menggunakan API Gateway harus lebih hemat biaya daripada membayar biaya per jam untuk mempertahankan penyeimbang beban yang kurang dimanfaatkan. APIGateway juga dapat menyimpan API respons cache, yang mungkin menghasilkan tingkat permintaan backend yang lebih rendah.

APIFungsi gateway yang menggunakan VPC tautan yang memungkinkan layanan AWS terkelola untuk terhubung ke host di dalam subnet pribadi AndaVPC, menggunakan alamat IP pribadinya. Ini dapat mendeteksi alamat IP pribadi ini dengan melihat catatan penemuan AWS Cloud Map layanan yang dikelola oleh Amazon ECS Service Discovery.

APIGateway mendukung fitur-fitur berikut.

  • Operasi API Gateway mirip dengan penyeimbang beban, tetapi memiliki kemampuan tambahan yang unik untuk manajemen API

  • APIGateway menyediakan kemampuan tambahan seputar otorisasi klien, tingkatan penggunaan, dan modifikasi permintaan/respons. Untuk informasi selengkapnya, lihat fitur Amazon API Gateway.

  • APIGateway dapat mendukung titik akhir API gateway edge, regional, dan private. Titik akhir tepi tersedia melalui CloudFront distribusi terkelola. Titik akhir regional dan swasta keduanya lokal untuk suatu Wilayah.

  • SSL/TLSpenghentian

  • Merutekan HTTP jalur yang berbeda ke layanan mikro backend yang berbeda

Selain fitur sebelumnya, API Gateway juga mendukung penggunaan otorisasi Lambda khusus yang dapat Anda gunakan untuk melindungi Anda dari penggunaan yang tidak sah. API Untuk informasi selengkapnya, lihat Catatan Bidang: Berbasis Kontainer Tanpa Server APIs dengan Amazon ECS dan Amazon Gateway. API