Bagaimana Anda mengotomatisasi failover pada EC2?

13

Dari orang-orang yang mengelola kelompok mereka sendiri (yaitu tidak menggunakan / membayar untuk Amazon Autoscale, Rightscale, Scalr, dll.), Bagaimana Anda mengelola mesin virtual Anda pada EC2 dan menangani (misalnya) failover? Saya bertanya-tanya apakah kebanyakan orang akhirnya menulis skrip kapal mereka sendiri melawan EC2 API, seperti yang saya duga.

Itu tentu saja pendekatan kami: menyiapkan daemon pemantauan / memulai ulang Python Boto kami sendiri yang berjalan di luar situs, mendengarkan UDP keep-alive dari instance kami. Jika gagal, kami memotret volume, mendaftarkan gambar, memulai instance baru, menghapus volume lama, dan sebagainya.

Sering kali, ketika meretas skrip kami, saya pikir pasti ada beberapa alat open-source di luar sana yang sudah menangani masalah ini, dan yang tidak memiliki kendala (katakanlah) Scalr, tapi saya selalu kembali dari Google dengan tangan kosong (Hal-hal seperti yang dimiliki Scalr sangat terbatas pada set / versi / konfigurasi perangkat lunak yang didukung, dan memiliki cara rumit dan rumit IMO untuk memanipulasi pengaturan ini.)

Juga, ekosistem Linux-HA / Alat Pacu Jantung (Detak Jantung, ldirectord, dll.) Sepertinya tidak cocok untuk EC2 . (Tapi kemudian saya menemukan ini - walaupun saya tidak yakin ini benar-benar solusi berkualitas tinggi).

Yang
sumber

Jawaban:

5

Yah, saya tidak bermaksud hanya menyatakan yang sudah jelas, tetapi ide umumnya adalah untuk mendorong kompleksitas ini ke dalam layanan yang dikelola oleh Amazon.

Jadi di frontend, Anda akan menggunakan Amazon Elastic Load Balancing (ELB) untuk menyediakan penyeimbangan beban yang sangat tersedia. Di bagian belakang, Anda menggunakan Amazon Relational Database Service (host MySQL), SimpleDB, dan S3 untuk penyimpanan. Semua ini dikelola oleh Amazon, dan berisi semacam penanganan ketersediaan / kegagalan tinggi.

Ini biasanya meninggalkan server aplikasi web Anda, dan jenis server umum yang lebih rendah yang mungkin Anda gunakan (rendering server, penyimpanan data NoSQL yang diinstal sendiri, dll.).

Server webapp biasanya ditangani dengan cukup baik dengan pemeriksaan kesehatan yang dibangun ke dalam ELB. Anda dapat menerima penurunan kinerja kecil ketika satu server webapp sedang down, atau secara konsisten menyediakan server +1 lebih dari yang Anda butuhkan. Atau jika konfigurasi Anda sederhana, maka ketika server webapp gagal, ELB bersama dengan Cloudwatch dapat secara otomatis menelurkan server webapp baru untuk Anda.

Server khusus Anda sendiri adalah masalah lain. Untuk ini itu benar, Anda sendirian, dan harus puas dengan metode bawaan aplikasi, atau lakban bersama sesuatu dengan skrip khusus / alat HA sumber terbuka.

Membeli solusi Rightscale mungkin terlalu mahal. Tetapi alat Amazon yang lebih murah seperti ELB, peringatan dasar CloudWatch (sekarang gratis untuk resolusi 5 menit), atau AutoScale sangat berharga jika Anda membutuhkan ketersediaan tinggi.

Jesper M
sumber
3
Kami terbiasa dengan set fitur AWS, serta keterbatasannya. Untuk mengambil contoh pertama Anda, ELB diakses melalui CNAME RRs, yang tidak dapat hidup berdampingan dengan SOA RRs, dan karenanya tidak dapat melayani TLD, ditambah tidak dapat diakses melalui IP statis - frustrasi yang secara luas bergema di forum. Untuk mengambil contoh kedua Anda, ya, RDS adalah MySQL, yang merupakan batasan raksasa. Ya, kami tertarik mengotomatiskan failover dari jenis mesin kami sendiri. Ya, penyebaran cloud pribadi relevan bagi kami. Ya, saya hanya ingin tahu. Dll
Yang
2
@Yang: Anda seharusnya mengutarakan pertanyaan Anda lebih hati-hati, dan menyelamatkan saya dari kesulitan mengetik jawaban saya. Tidak ada solusi satu ukuran untuk semua untuk HA; itu tergantung pada layanan yang dipermasalahkan, bagaimana keadaan disimpan, properti protokol failover, dll. Anda benar tentang keterbatasan / kesulitan dalam menggunakan alat HA tingkat IP khusus pada EC2. Tetapi tidak ada jawaban tunggal yang berlaku secara universal untuk "HA pada AWS".
Jesper M
0

RightScale memiliki beberapa artikel hebat tentang cara mengotomatisasi failover pada EC2. Sementara sebagian besar dari mereka menunjukkan kepada Anda bagaimana melakukannya menggunakan RightScale itu sendiri, prinsip-prinsipnya bersifat umum dan mungkin membantu siapa pun yang berpikir tentang cara mengatur arsitektur failover pada EC2.

Suman
sumber
0

Masalah yang Anda uraikan (HA, pemantauan server khusus, layanan 'duct-taping') umumnya ditangani oleh penyedia PaaS. Rightscale dan Scalr telah disebutkan dalam jawaban sebelumnya dan ada opsi bagus tambahan (lihat di sini untuk beberapa opsi PaaS:

/programming/9542784/looking-for-paas-providers-recomendations )

Anda harus mempertimbangkan penyedia mana yang paling sesuai dengan kebutuhan Anda.

Pemberitahuan jatuh tempo: Saya bekerja untuk cloudify, penyedia PaaS sumber terbuka.

Barak
sumber
0

Baru-baru ini saya menulis posting di blog teknik kami tentang cara menggunakan ELB bersama dengan Penskalaan Otomatis untuk mencapai failover otomatis untuk semua jenis aplikasi. Ini mencakup bagaimana pemeriksaan kesehatan ELB dapat digunakan untuk melakukan ping ke status aplikasi Anda dan memicu tindakan penskalaan otomatis.

Pengembang
sumber
0

Anda memasang detak jantung pada kedua server Anda melampirkan IP elastis ke server 'aktif' Anda mengkonfigurasi skrip untuk melakukan failover dengan memulai permintaan API untuk mendapatkan IP elastis Segera setelah server 'siaga' mendapatkan IP elastis ( memakan waktu sekitar 30-60 detik) bisa jadi master / aktif.

Saya tidak memiliki spesifikasi untuk diberikan di sini.

Amir Mehler
sumber
-1

Amazon sudah menyediakan Elastic Load Balancing ... Mengapa menemukan kembali kemudi?

Chris S
sumber
3
Karena berbagai keterbatasan ELB? Karena memerlukan CNAME dan tidak dapat melayani foo.com dan www.foo.com? Karena saya ingin menerapkan logika penjadwalan khusus? Karena saya hanya ingin tahu bagaimana Anda akan mengimplementasikan ELB sendiri dalam sekelompok VM yang tidak dapat diandalkan? Ambil pilihanmu.
Yang
@Yang, Anda melakukannya dengan cara yang sama jika Anda adalah server di pusat data Anda. Tidak ada perbedaan mendasar, tidak ada saus ajaib yang membuatnya menjadi lingkungan cloud.
Chris S