PERF04-BP04 Menggunakan penyeimbangan beban untuk mendistribusikan lalu lintas di berbagai sumber daya - Kerangka Kerja AWS Well-Architected

PERF04-BP04 Menggunakan penyeimbangan beban untuk mendistribusikan lalu lintas di berbagai sumber daya

Distribusikan lalu lintas di berbagai sumber daya atau layanan untuk memanfaatkan elastisitas yang ada di cloud untuk beban kerja Anda. Anda juga dapat menggunakan penyeimbang beban untuk memindahkan beban penghentian enkripsi guna meningkatkan performa dan keandalan, dan untuk mengelola serta merutekan lalu lintas secara efektif.

Anti-pola umum:

  • Anda tidak mempertimbangkan persyaratan-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.

  • Anda merutekan semua lalu lintas internet melalui penyeimbang beban yang ada.

  • Anda menggunakan penyeimbangan beban TCP umum dan membuat setiap simpul komputasi menangani enkripsi SSL.

Manfaat menerapkan praktik terbaik ini: Penyeimbang beban menangani berbagai beban lalu lintas aplikasi Anda dalam satu atau beberapa Zona Ketersediaan dan menghadirkan ketersediaan yang tinggi, penskalaan otomatis, dan pemanfaatan yang lebih baik untuk beban kerja Anda.

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

Panduan implementasi

Penyeimbang beban berfungsi sebagai titik masuk untuk beban kerja Anda, yakni titik asal penyeimbang beban mendistribusikan lalu lintas ke target backend Anda, seperti kontainer atau instans komputasi, untuk meningkatkan pemanfaatan.

Memilih jenis penyeimbang beban yang tepat adalah langkah pertama untuk mengoptimalkan arsitektur Anda. Mulailah 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).

AWS menyediakan beberapa model untuk aplikasi Anda yang bisa digunakan dengan penyeimbangan beban. Penyeimbang Beban Aplikasi sangat ideal untuk menyeimbangkan beban lalu lintas HTTP dan HTTPS dan menyediakan perutean permintaan lanjutan yang ditPenyeimbang Beban Aplikasiargetkan pada pengiriman arsitektur aplikasi modern, termasuk layanan mikro dan kontainer.

Penyeimbang Beban Jaringan sangat ideal untuk menyeimbangkan beban lalu lintas TCP yang memerlukan kinerja ekstrem. Penyeimbangan beban ini mampu menangani jutaan permintaan per detik sekaligus membuat latensi tetap rendah, serta dioptimalkan untuk menangani pola lalu lintas yang tidak stabil dan mendadak.

ELB menyediakan manajemen sertifikat terintegrasi dan dekripsi SSL/TLS, memberikan fleksibilitas kepada Anda untuk mengelola pengaturan SSL penyeimbang beban secara terpusat serta memindahkan beban yang banyak menggunakan CPU dari beban kerja Anda.

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 Penyeimbang Beban Aplikasi (ALB) dan Penyeimbang Beban Jaringan (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 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.

Penyeimbang Beban Aplikasi juga dapat melayani lalu lintas HTTP/2 tanpa harus mendukungnya di target Anda. Keputusan sederhana ini dapat meningkatkan waktu respons aplikasi Anda, karena HTTP/2 menggunakan sambungan TCP dengan lebih efisien.

Persyaratan latensi beban kerja Anda harus dipertimbangkan ketika menentukan arsitekturnya. Sebagai contoh, jika Anda memiliki aplikasi yang sensitif latensi, Anda dapat memutuskan untuk menggunakan Penyeimbang Beban Jaringan, yang menawarkan latensi yang sangat rendah. Alternatifnya, Anda dapat memutuskan untuk membawa beban kerja lebih dekat ke pelanggan dengan memanfaatkan Penyeimbang Beban Aplikasi di Zona Lokal AWS atau bahkan di 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.

Gunakan Amazon EC2 Auto Scaling yang terintegrasi dengan penyeimbang beban Anda. Salah satu aspek penting dari sebuah sistem dengan performa yang efisien berkaitan dengan penyesuaian ukuran sumber daya backend Anda. Untuk melakukannya, Anda dapat memanfaatkan integrasi penyeimbang beban untuk sumber daya target backend. Dengan menggunakan integrasi penyeimbang beban dengan grup Amazon EC2 Auto Scaling, target akan ditambahkan atau disingkirkan dari penyeimbang beban sebagaimana diperlukan untuk merespons lalu lintas masuk. Penyeimbang beban juga dapat diintegrasikan dengan Amazon ECS dan Amazon EKS untuk beban kerja terkontainerisasi.

Langkah-langkah implementasi

  • Tentukan persyaratan-persyaratan penyeimbangan beban Anda, termasuk volume lalu lintas, ketersediaan, dan skalabilitas aplikasi.

  • Pilih jenis penyeimbang beban yang tepat untuk aplikasi Anda.

    • Gunakan Penyeimbang Beban Aplikasi untuk beban kerja HTTP/HTTPS.

    • Gunakan Penyeimbang Beban Jaringan untuk beban kerja non-HTTP yang dijalankan di TCP atau UDP.

    • Gunakan kombinasi keduanya (ALB sebagai target NLB) jika Anda ingin memanfaatkan fitur dari kedua produk ini. 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 sebuah AWS PrivateLink.

    • Untuk perbandingan lengkap penyeimbang beban, silakan lihat Perbandingan produk ELB.

  • Gunakan pemindahan beban SSL/TLS, jika memungkinkan.

  • Pilih algoritma perutean yang tepat (khusus ALB).

    • Algoritma perutean dapat membuat perbedaan tentang seberapa baik target backend Anda digunakan, oleh karena itu juga membuat perbedaan dalam dampaknya pada performa. Misalnya, ALB menyediakan dua opsi untuk algoritma perutean:

    • Permintaan paling tidak menonjol: Gunakan untuk mendapatkan distribusi beban yang lebih baik ke target backend Anda untuk kasus ketika permintaan-permintaan untuk aplikasi Anda mempunayi tingkat kompleksitas yang berbeda-beda atau target Anda kemampuan pemrosesannya berbeda-beda.

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

  • Pertimbangkan isolasi zona atau lintas zona.

  • Aktifkan keep-alive HTTP untuk beban kerja HTTP Anda (khusus ALB). Dengan fitur ini, penyeimbang beban dapat menggunakan kembali sambungan backend sampai waktu tetap aktif (keep-alive) habis, sehingga meningkatkan waktu respons dan permintaan HTTP Anda serta mengurangi pemanfaatan sumber daya yang ada di target backend Anda. Untuk detail tentang cara melakukan hal ini untuk Apache dan Nginx, silakan lihat Apa pengaturan optimal untuk menggunakan Apache atau NGINX sebagai server backend untuk ELB?

  • Aktifkan pemantauan untuk penyeimbang beban Anda.

    • Aktifkan log akses untuk Penyeimbang Beban Aplikasi dan Penyeimbang Beban Jaringan Anda.

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

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

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

    • Buat alarm untuk metrik yang terkait dengan performa seperti TargetResponseTime untuk ALB.

Sumber daya

Dokumen terkait:

Video terkait:

Contoh terkait: