PERF05-BP04 Memanfaatkan penyeimbangan beban dan pemindahan beban enkripsi - AWS Well-Architected Framework

PERF05-BP04 Memanfaatkan penyeimbangan beban dan pemindahan beban enkripsi

Gunakan penyeimbang beban untuk mendapatkan efisiensi performa optimal dari sumber daya target Anda dan meningkatkan responsivitas sistem Anda.

Hasil yang diinginkan: Pengurangan jumlah sumber daya komputasi untuk melayani lalu lintas Anda. Hindari ketidakseimbangan pemakaian sumber daya di target Anda. Pindahkan beban tugas yang sarat komputasi ke Penyeimbang Beban. Manfaatkan fleksibilitas dan elastisitas cloud untuk meningkatkan performa dan mengoptimalkan arsitektur Anda.

Antipola umum:

  • Anda tidak mempertimbangkan persyaratan beban kerja Anda ketika memilih jenis penyeimbang beban.

  • Anda tidak memanfaatkan fitur penyeimbang beban untuk mengoptimalkan performa.

  • Beban kerja terpapar langsung ke Internet tanpa penyeimbang beban.

Tingkat risiko yang terjadi jika praktik terbaik ini tidak dijalankan: Tinggi

Panduan implementasi

Penyeimbang beban berfungsi sebagai titik masuk untuk beban kerja Anda dan dari sana penyeimbang beban mendistribusikan lalu lintas ke target backend Anda, seperti kontainer atau instans komputasi. Memilih jenis penyeimbang beban yang tepat adalah langkah pertama untuk mengoptimalkan arsitektur Anda.

Mulai dengan mencantumkan karakteristik beban kerja Anda, seperti protokol (misalnya, TCP, HTTP, TLS, atau WebSockets), jenis target (seperti instans, kontainer, atau nirserver), persyaratan aplikasi (seperti sambungan berdurasi lama, autentikasi pengguna, atau keeratan), dan penempatan (seperti Wilayah, Zona Lokal, Outpost, atau isolasi zona).

Setelah memilih penyeimbang beban yang tepat, Anda dapat mulai memanfaatkan fitur-fiturnya untuk mengurangi jumlah upaya yang harus dilakukan backend guna melayani lalu lintas.

Contohnya, dengan menggunakan Application Load Balancer (ALB) dan Network Load Balancer (NLB), Anda dapat melakukan pemindahan beban enkripsi SSL/TLS, yang merupakan peluang untuk menghindari handshake TLS yang sarat CPU diselesaikan oleh target Anda dan juga untuk meningkatkan manajemen sertifikat.

Ketika Anda mengonfigurasi pemindahan beban SSL/TLS di penyeimbang beban, penyeimbang beban menjadi bertanggung jawab atas enkripsi lalu lintas dari dan ke klien sekaligus memberikan lalu lintas tidak terenkripsi ke backend Anda, sehingga membebaskan sumber daya backend Anda dan meningkatkan waktu respons untuk klien.

Application Load Balancer juga dapat melayani lalu lintas HTTP2 tanpa harus mendukungnya di target Anda. Keputusan sederhana ini dapat meningkatkan waktu respons aplikasi Anda, karena HTTP2 menggunakan sambungan TCP dengan lebih efisien.

Penyeimbang beban juga dapat digunakan untuk membuat arsitektur Anda lebih fleksibel dengan mendistribusikan lalu lintas melintasi jenis backend yang berbeda seperti kontainer dan nirserver. Contohnya, Application Load Balancer dapat dikonfigurasi dengan aturan pendengar yang meneruskan lalu lintas ke grup target yang berbeda berdasarkan parameter permintaan seperti header, metode, atau pola.

Persyaratan latensi beban kerja Anda juga harus dipertimbangkan ketika menentukan arsitektur. Sebagai contoh, jika Anda memiliki aplikasi yang sensitif latensi, Anda dapat memutuskan untuk menggunakan Network Load Balancer, yang menawarkan latensi yang sangat rendah. Alternatifnya, Anda dapat memutuskan untuk membawa beban kerja lebih dekat ke pelanggan dengan memanfaatkan Application Load Balancer di Zona Lokal AWS atau bahkan AWS Outposts.

Pertimbangan lain untuk beban kerja yang sensitif latensi adalah penyeimbangan beban lintas zona. Dengan penyeimbangan beban lintas zona, setiap simpul penyeimbang beban mendistribusikan lalu lintas ke target terdaftar di semua Zona Ketersediaan yang diaktifkan. Hal ini meningkatkan ketersediaan, meskipun dapat menambahkan satu digit milidetik ke latensi pulang pergi.

Terakhir, baik ALB maupun NLB menawarkan sumber daya pemantauan seperti log dan metrik. Mempersiapkan pemantauan dengan tepat dapat membantu pengumpulan wawasan tentang performa aplikasi Anda. Contohnya, Anda dapat menggunakan log akses ALB untuk menemukan permintaan mana yang membutuhkan waktu lebih lama untuk dijawab atau target backend mana yang menyebabkan masalah performa.

Langkah implementasi

  1. Pilih penyeimbang beban yang tepat untuk beban kerja Anda.

    1. Gunakan Application Load Balancer untuk beban kerja HTTP/HTTPS.

    2. Gunakan Network Load Balancer untuk beban kerja non-HTTP yang dijalankan di TCP atau UDP.

    3. Gunakan kombinasi keduanya (ALB sebagai target NLB) jika Anda ingin memanfaatkan fitur kedua produk. Contohnya, Anda dapat melakukan hal ini jika Anda ingin menggunakan IP statis NLB bersama dengan perutean berbasis header HTTP dari ALB, atau jika Anda ingin memaparkan beban kerja HTTP Anda ke AWS PrivateLink.

    4. Untuk perbandingan lengkap penyeimbang beban, lihat perbandingan produk ELB.

  2. Gunakan pemindahan beban SSL/TLS.

    1. Konfigurasikan pendengar HTTPS/TLS dengan Application Load Balancer dan Network Load Balancer yang terintegrasi dengan AWS Certificate Manager.

    2. Perhatikan, beberapa beban kerja mungkin memerlukan enkripsi menyeluruh karena alasan kepatuhan. Jika demikian, enkripsi wajib diaktifkan di target.

    3. Untuk praktik terbaik keamanan, lihat SEC09-BP02 Menerapkan enkripsi data bergerak.

  3. Pilih algoritme perutean yang tepat.

    1. Algoritme perutean dapat membuat perbedaan tentang seberapa baik target backend Anda digunakan, oleh karena itu juga membuat perbedaan dalam dampaknya pada performa. Contohnya, ALB memberikan dua opsi untuk algoritme perutean:

    2. Permintaan paling sedikit belum selesai: Gunakan untuk mendapatkan distribusi beban yang lebih baik ke target backend Anda untuk kasus ketika permintaan untuk aplikasi Anda bervariasi dalam tingkat kompleksitas atau target Anda bervariasi dalam kemampuan pemrosesannya.

    3. Round robin: Gunakan ketika permintaan dan target serupa, atau jika Anda harus mendistribusikan permintaan sama rata di antara target.

  4. Pertimbangkan isolasi zona atau lintas zona.

    1. Gunakan penonaktifan lintas zona (isolasi zona) untuk peningkatan latensi dan domain kegagalan zona. Ini dinonaktifkan menurut default di NLB dan di ALB Anda dapat menonaktifkannya per grup target.

    2. Gunakan pengaktifan lintas zona untuk peningkatan ketersediaan dan fleksibilitas. Menurut default, lintas zona diaktifkan untuk ALB dan di NLB Anda dapat mengaktifkannya per grup target.

  5. Aktifkan HTTP tetap aktif untuk beban kerja HTTP Anda.

    1. Untuk beban kerja HTTP, aktifkan HTTP tetap aktif di pengaturan server web untuk target backend Anda. Dengan fitur ini, penyeimbang beban dapat menggunakan ulang sambungan backend sampai waktu tetap aktif habis, sehingga meningkatkan waktu respons dan permintaan HTTP Anda serta mengurangi pemanfaatan sumber daya di target backend Anda. Untuk informasi mendetail tentang cara melakukan ini untuk Apache dan Nginx, lihat Apa saja pengaturan yang optimal untuk menggunakan Apache atau NGINX sebagai server backend untuk ELB?

  6. Gunakan integrasi Elastic Load Balancing untuk orkestrasi sumber daya komputasi yang lebih baik.

    1. Gunakan Auto Scaling yang terintegrasi dengan penyeimbang beban Anda. Salah satu aspek penting dari sistem dengan performa yang efisien berkaitan dengan penyesuaian ukuran sumber daya backend Anda. Untuk melakukan ini, Anda dapat memanfaatkan integrasi penyeimbang beban untuk sumber daya target backend. Dengan menggunakan integrasi penyeimbang beban dengan grup Auto Scaling, target akan ditambahkan atau disingkirkan dari penyeimbang beban sebagaimana diperlukan untuk merespons lalu lintas masuk.

    2. Penyeimbang beban juga dapat diintegrasikan dengan Amazon ECS dan Amazon EKS untuk beban kerja terkontainerisasi.

  7. Pantau penyeimbang beban Anda untuk menemukan hambatan performa.

    1. Aktifkan log akses untuk Application Load Balancer dan Network Load Balancer.

    2. Bidang utama yang harus dipertimbangkan untuk ALB adalah request_processing_time, request_processing_time, dan response_processing_time.

    3. Bidang utama yang harus dipertimbangkan untuk NLB adalah connection_time dan tls_handshake_time.

    4. Bersiaplah untuk melakukan kueri log ketika Anda memerlukannya. Anda dapat menggunakan Amazon Athena untuk melakukan kueri log ALB dan log NLB.

    5. Buat alarm untuk metrik yang terkait dengan performa seperti WaktuResponsTarget untuk ALB.

Sumber daya

Praktik Terbaik Terkait:

Dokumen terkait:

Video terkait:

Contoh terkait: