Amazon Elastic Load Balancing Senibina Berguna Tinggi: Berikan pelayan anda "polis trafik lalu lintas" teratas
Di dunia Internet, terdapat dua perkara yang membuat arkitek dan bos tidak dapat tidur:
Salah satunya adalah bahawa lonjakan lalu lintas secara tiba-tiba memusnahkan pelayan, dan yang lain adalah bahawa pelayan tertentu tiba-tiba "turun" dan seluruh laman web lumpuh.
Sekiranya anda membandingkan kluster pelayan belakang anda dengan juruwang bank, apabila hanya ada satu atau dua pelanggan, semua orang dalam keadaan baik. Tetapi ketika Double Eleven, Black Friday atau berita terkini datang, ribuan pelanggan masuk serta-merta. Hanya satu juruwang tidak hanya akan berbaris (laman web tersekat), tetapi juruwang bahkan akan runtuh secara langsung kerana terlalu banyak kerja (Pelayan turun).
Bagaimana untuk memecahkan? Anda memerlukan "pengurus lobi" yang cerdas dan berkebolehan untuk menjaga ketenteraman dan mengedarkan pelanggan secara merata ke tingkap percuma. Dalam ekosistem Amazon Cloud Technology (AWS), peranan ini adalah
ELB(Elastic Load Balancing, pengimbangan beban elastik)
。
Hari ini, kita tidak menggunakan istilah PPT yang tidak jelas, tetapi menggunakan perspektif pertempuran murni untuk membongkar secara mendalam bagaimana menggunakan ELB untuk membina "seni bina pengimbangan beban yang sangat tersedia" yang tidak dapat dihancurkan.
1. Pemilihan teras: Tiga ahli keluarga ELB, mana yang harus anda pilih?
AWS ELB bukan satu produk, tetapi untuk senario perniagaan yang berbeza, memperoleh tiga arah utama. Memilih model yang salah adalah seperti menggunakan kereta sport untuk menarik barang, atau menggunakan trak untuk berlumba, yang membazirkan wang dan gagal mencapai kesannya.
1. ALB (Aplikasi Load Balancer) -aplikasi load penyamaan
Kedudukan: Fokus pada lalu lintas HTTP/HTTPS (iaitu lapisan aplikasi dalam protokol tujuh lapisan rangkaian).
Kemahiran unik: fungsi penghalaan lanjutan. Ia dapat memahami isi permintaan. Contohnya, pengguna melawat Ia juga menyokong pengedaran lalu lintas berdasarkan nama domain (Host), Header dan juga rentetan pertanyaan.
Senario yang berlaku: kebanyakan aplikasi web, seni bina perkhidmatan mikro, aplikasi kontena (ECS/EKS).
2. NLB (Network Load Balancer) -rangkaian beban penyamaan
Kedudukan: Fokus pada trafik TCP/UDP/TLS (lapisan pengangkutan dalam protokol empat lapisan rangkaian).
Kemahiran unik: prestasi utama dan kelewatan ultra rendah. NLB mampu mengendalikan berjuta-juta permintaan mendadak sesaat. Lebih kuat lagi, ia menyokong alamat IP statik. Setiap kawasan yang tersedia dapat diikat dengan IP fleksibel tetap, yang hanya diperlukan untuk dok peringkat perusahaan yang memerlukan senarai putih firewall.
Senario yang berkenaan: pelayan permainan, sistem perdagangan kewangan frekuensi tinggi, penerima data Internet of Things (IoT).
3. GLB (Gateway Load Balancer)
-Pengimbang beban pintu masuk
Kedudukan: Digunakan khas untuk menguruskan peranti keselamatan maya pihak ketiga (seperti firewall, sistem pengesanan pencerobohan).
Senario yang berlaku: Kilang besar digunakan untuk audit keselamatan dan pembersihan lalu lintas stesen. Biasanya perniagaan kecil dan sederhana jarang menggunakannya secara langsung.
2. Reka bentuk seni bina yang sangat tersedia: Bagaimana ELB mencapai "penyembuhan diri"?
Banyak pemula akan mempunyai soalan: "Saya menyerahkan semua lalu lintas kepada ELB, bagaimana jika ELB berhenti sendiri? Bukankah itu satu titik kegagalan (Single Point of Failure)?"
AWS telah lama menganggap ini. Dalam nama ELB
Elastic (elastik)
Mengandungi dua makna:
Keanjalan kapasiti
Dan
Keanjalan seni bina
。
1. Boleh didapati tinggi di seluruh kawasan (Multi-AZ)
Semasa merancang seni bina ELB, prinsip utamanya adalah
Jangan sekali-kali meletakkan telur dalam satu bakul
。
Setiap wilayah geografi (Wilayah) AWS mengandungi beberapa zon bebas (Zon Availability, disebut sebagai AZ). Setiap AZ mempunyai kuasa bebas, rangkaian dan sistem penyejukan.
Apabila anda membuat ELB, sistem akan memaksa anda memilih sekurang-kurangnya dua zon yang tersedia. Sebenarnya, ELB secara automatik akan menggunakan "Node" yang diimbangi di setiap kawasan yang anda pilih.
Apabila pengguna memulakan permintaan, DNS akan mengedarkan pengundian lalu lintas ke nod zon yang berbeza ini.
Sekiranya kawasan A yang tersedia lumpuh sepenuhnya oleh hujan lebat, analisis DNS di bahagian atas ELB secara automatik akan memotong lalu lintas dan memasukkan semua ke simpul di kawasan B yang tersedia. Keseluruhan proses ini sama sekali tidak dapat dilihat oleh pengguna.
2. Pemeriksaan Kesihatan: Menghilangkan "domba hitam" dengan tepat
Satu lagi pembunuh utama ELB yang dapat mengekalkan ketersediaan tinggi adalah
Pemeriksaan kesihatan
。
Anda perlu menetapkan peraturan untuk ELB, seperti:
Setiap 10 saat, hantar permintaan HTTP ke laluan/kesihatan pelayan belakang. Sekiranya 200 OK dikembalikan 3 kali berturut-turut, ini bermakna pelayan masih hidup; jika tidak ada tindak balas dua kali berturut-turut, ditentukan bahawa pelayan itu "sakit".
Setelah pelayan dinilai tidak sihat, ELB akan segera mengubahnya
Tarik hitam
Tidak lagi menghantar sebarang lalu lintas baru sehingga ia kembali normal. Ini berjaya mengelakkan tragedi "1/3 pengguna melaporkan kesalahan kerana kerosakan pelayan".
3. Latihan pertempuran sebenar: membina satu set seni bina web yang sangat tersedia untuk ALB Multi-AZ
Seterusnya, kami mengambil ALB yang paling klasik sebagai contoh untuk melalui proses konfigurasi standard persekitaran pengeluaran.
Langkah pertama: sediakan "Kumpulan Sasaran" belakang
Sebelum mengkonfigurasi pengimbang beban, kita mesti memberitahunya terlebih dahulu untuk "menghantar lalu lintas kepada siapa". Dalam AW
Di S, set hujung belakang ini disebut kumpulan sasaran.
Buka konsol EC2, cari Kumpulan Sasaran di bar navigasi kiri, dan klik kumpulan carian Buat.
Pilih jenis sasaran, biasanya pilih Instances (contoh), masukkan nama.
Protokol dengan port: Pilih HTTP:80 (atau port di mana aplikasi anda berjalan).
Pemeriksaan kesihatan: Periksa jalan biasanya menulis antara muka status perkhidmatan anda, seperti/atau/status.html. Kembangkan tetapan kesihatan lanjutan, tetapkan "ambang kesihatan" ke 3, "ambang tidak sihat" ke 2, "masa tamat" hingga 5 saat, dan "selang" hingga 10 saat.
Klik Seterusnya, periksa contoh pelayan web yang anda mulakan di kawasan yang berbeza (seperti AZ-A dan AZ-B), dan klik Buat kumpulan carian.
Langkah 2: Mewujudkan Aplikasi Load Balancer
Di bar navigasi di sebelah kiri, klik Load Balancers, klik Buat Balancers, dan pilih Aplikasi Load Balancers.
Skema (skema): Pilih Internet-facing (berorientasikan Internet). Sekiranya anda memuat perkhidmatan mikro rangkaian dalaman, pilih Internal.
Peta rangkaian (pemetaan rangkaian): Pilih VPC anda. Langkah utama: Tandakan sekurang-kurangnya dua kawasan yang ada (seperti us-east-1a dan us-east-1b), dan pilih subnet awam yang sesuai dengan setiap kawasan yang ada.💡Panduan Mengelakkan Lubang Senibina: ALB sendiri mesti berada di subnet rangkaian awam supaya dapat memperoleh IP rangkaian awam untuk menerima lalu lintas Internet. Tetapi! Pelayan web belakang anda (EC2) boleh, dan sangat disyorkan untuk meletakkannya di ** Private Subnet **. Dengan cara ini, tidak ada seorang pun di dunia luar yang dapat menyerang pelayan anda secara langsung melalui IP, dan semua perlindungan keselamatan dilakukan oleh ALB front-end, dan keselamatan seni bina langsung penuh.
Langkah 3: Konfigurasikan Kumpulan Keselamatan dan Pendengar
Kumpulan keselamatan: Untuk mengaitkan kumpulan keselamatan untuk ALB, port TCP 80(HTTP) dan TCP 443(HTTPS) mesti diletakkan.
Daftar dan routing (monitor dan routing): Terdapat monitor HTTP:80 secara lalai. Di menu lungsur Forward to (forward), pilih "kumpulan sasaran" yang kami buat pada langkah pertama. Seperti
Sekiranya anda mempunyai sijil SSL, klik Add listener, tambahkan HTTPS:443, dan konfigurasikan sijil nama domain anda.
Klik di bahagian bawah
Buat balancer
。 Selepas kira-kira 2 minit, keadaan ALB menjadi
Aktif
Anda akan mendapat nama DNS panjang (contohnya:
My-alb-123456789.us-east-1.elb.amazonaws.com
).
4. Lanjutan lanjutan: digabungkan dengan Auto Scaling (fleksibel dan boleh ditarik) untuk mencapai ketersediaan tertinggi
Sekiranya anda hanya dilengkapi dengan ELB, laman web masih akan tersekat apabila lalu lintas benar-benar melebihi had keseluruhan pelayan belakang. ELB hanyalah pengurus lobi, ia tidak dapat membuat lebih banyak juruwang dari udara yang tipis.
Untuk mencapai "kebebasan fleksibel" yang sebenar, anda perlu meletakkan
ELB
Dan
Auto Scaling (Pengembangan elastik automatik)
Mengikat bersama.
[Permintaan pengguna] -> [ELB] -> [Secara automatik meningkatkan/mengurangkan bilangan EC2 mengikut trafik (Auto Scaling Group)]
Ketika jam sifar di Double Eleven, lalu lintas melambung tinggi:
Pemantauan CloudWatch mendapati bahawa CPU rata-rata pelayan belakang melonjak hingga 80%.
Auto Scaling menerima isyarat dan segera mengemas dan membuat 5 pelayan EC2 baru secara automatik.
Bahagian yang paling indah ada di sini: Setelah pelayan baru dilancarkan, Auto Scaling secara automatik akan melaporkan kepada kumpulan sasaran ELB: "Pengurus laporan, saya pendatang baru, saya sudah bersedia!"
ELB menerima pemberitahuan dan segera mula mengalihkan lalu lintas berikutnya ke 5 pelayan baru ini. Keseluruhan proses tidak memerlukan perubahan manual pada satu baris konfigurasi atau menghidupkan semula mana-mana peranti.
Trafik surut pada pukul dua pagi, CPU turun, Auto Scaling secara automatik akan memusnahkan 5 mesin ini untuk menjimatkan wang, dan ELB juga akan memutuskan sambungan dengan elegan untuk memastikan bahawa permintaan yang diproses biasanya berakhir, dan kemudian memindahkannya keluar dari kluster.
Penutup
Dalam seni bina awan asli moden, Amazon ELB pastinya bukan "transponder lalu lintas" yang sederhana, ini adalah keseluruhan seni bina yang sangat tersedia
Komander
。
Ia mencegah bencana tahap fizikal melalui penyebaran simpul di seluruh kawasan yang dapat digunakan, mengasingkan kegagalan dalaman sistem melalui pemeriksaan kesihatan yang ketat, dan memberikan kemungkinan pengembangan perniagaan tanpa had melalui kerjasama yang sempurna dengan Auto Scaling. Setelah memahami logik operasi dan perincian konfigurasi ELB, anda akan memegang kunci teras untuk membina laman web moden dengan serentak tinggi dan tanpa henti.
