Replika beanstalkd untuk Ketersediaan Tinggi

15

Judul mengatakan itu semua.

Adakah yang tahu cara mereplikasi beanstalkd sehingga jika server beanstalk turun, budak lain bisa mengambil alih?

Inilah salah satu pendekatan yang saya pikirkan: Saya bisa membuat beanstalk menulis binlog-nya (dengan -b) ke lokasi bersama, dan kemudian entah bagaimana memiliki server sekunder / cadangan untuk memulai beanstalkd jika primary gagal.

Tapi pasti ada cara yang lebih baik.

Josh Nankin
sumber

Jawaban:

5

Karena ini menulis ke disk melalui binlog, saya pikir Anda bisa melakukan sesuatu yang mirip dengan apa yang biasanya dilakukan admin MySQL: detak jantung w / DRBD ( contoh di sini).

Terakhir kali saya mencoba menggunakan detak jantung, itu tidak mendukung pengecekan non-multicast antar node, artinya lebih atau kurang mustahil untuk berjalan di infrastruktur cloud / VPS (AWS, Linode, Slicehost, dll). Bahkan, sebagian besar layanan pengelompokan menggunakan multicast. Ini mungkin tidak lagi menjadi masalah, tetapi ini sesuatu yang harus diperhatikan. Anda mungkin dapat menggunakan keepalived untuk menyediakan failover berbasis ip, yang juga hanya mendukung multicast TETAPI memiliki tambalan yang tersedia melalui Willy Tarreau (penulis HAProxy ) untuk menambahkan dukungan unicast . Saya secara pribadi telah menguji ini pada sepasang server Linode VPS dan keepalived mampu failover alamat IP bersama jika terjadi kegagalan server master.

Satu hal yang dapat Anda lakukan yang mungkin kurang optimal adalah menulis pekerjaan ke sejumlah server beanstalkd (alias mempartisi). Jika salah satu turun, minta aplikasi Anda mendeteksi ini dan menulis ke instance lain sebagai gantinya. Pekerja Anda harus secara cerdas menyurvei setiap mesin virtual dan dapat mengabaikan mesin virtual yang mati. Karena Anda melakukan binlog, memunculkan cadangan harus semudah memulai ulang dan aplikasi / pekerja akan mendeteksi ini dan melanjutkan seperti biasa (dan mulai memproses pekerjaan dalam contoh yang baru dimulai). Saya jelas menyederhanakan prosesnya, tapi itu satu cara lain untuk menanganinya.

andrew
sumber
1
Corosync mendukung unicast dan merupakan alat pengelompokan default di distro berbasis Redhat.
Terence Johnson
Terima kasih, tidak tahu tentang Corosync. Akan mengingatnya untuk proyek masa depan.
andrew