Apakah ada cara untuk memaksa detak jantung untuk menambahkan alamat ip baru ke sistem tanpa restart penuh?

8

Kami memanfaatkan detak jantung untuk Ketersediaan Tinggi. Saya ingin menambahkan alamat ip tambahan ke kluster detak jantung, tapi saya tidak ingin melakukan restart penuh kluster dalam proses. Apakah ada sinyal yang dapat saya kirim ke detak jantung yang akan mendorongnya untuk mem-parsing ulang file "haresources" dan menindaklanjutinya? detak jantung -r tampaknya tidak melakukan trik.

Peter Grace
sumber

Jawaban:

6

Masalahnya adalah saya tidak menunggu cukup lama setelah mengeksekusi "detak jantung -r" (perintah yang dieksekusi dalam skrip init.d ketika Anda menjalankan "servis detak jantung layanan".) Setelah beberapa menit, IP muncul di antarmuka seperti yang diharapkan.

Peter Grace
sumber
Detak jantung menerapkan perubahan itu sendiri, eh? Itu sebenarnya memiliki hasil menghisap yang sangat rendah! Jika Anda mengetahui berapa lama, beri tahu kami :-)
voretaq7
Saya menyadari setelah membaca komentar ini bahwa itu agak menyesatkan; Saya nuked seluruh jawaban dan menulis ulang.
Peter Grace
mmh, itu lebih masuk akal - Anda harus memicu memuat ulang, tetapi itu tidak instan. (Dan itu lebih deterministik, yang membuat saya bahagia.)
voretaq7
2

Anda tidak perlu memuat ulang Detak Jantung sama sekali. Cukup tambahkan sumber daya IPaddr baru ke file haresources Anda, sesuatu seperti ini

IPaddr::xx.xx.xx.xx

dan kemudian memulainya

/etc/ha.d/resource.d/IPaddr xx.xx.xx.xx start

Tentu saja, Anda harus memastikan untuk memulai IPaddr mulai dari node aktif. Anda sekarang harus dapat mengirim dan menerima lalu lintas pada alamat IP yang baru saja ditambahkan.

Kendall
sumber
Saya akan menunda menerima jawaban saya sendiri sebagai benar, karena meskipun apa yang saya lakukan bekerja, saran Anda terdengar jauh lebih elegan. Saya ingin mencobanya, tetapi jika berhasil, jawaban yang diterima dan diterima akan menjadi milik Anda.
Peter Grace
OKE, ini kesepakatannya. Saya mencoba ini dan rendah dan lihatlah, itu berhasil! Masalahnya adalah melakukan hal ini tanpa memuat ulang detak jantung akan membuat cluster dalam keadaan tidak konsisten. Saya memeriksa sumbernya, dan hanya ada tiga tempat di mana detak jantung mem-reparasi file haresources, dan ketiga syarat tersebut adalah pada saat restart diminta. Dengan demikian, jika sebuah cluster gagal dan gagal kembali, ip yang Anda masukkan ke haresources, dan secara manual dipakai dengan IPaddr <x> start, tidak akan dibuat ulang di failover. Jangan ragu untuk membuktikan saya salah, tetapi tampaknya metode ini berbahaya untuk diandalkan.
Peter Grace
Benar sekali, Heartbeat tidak menyimpan file konfigurasi (misalnya sumber daya) dalam sinkronisasi untuk Anda - Anda harus menyusun metode Anda sendiri. Di lingkungan saya, kami biasanya menggunakan serempak untuk ini, dan tampaknya berfungsi dengan baik. File haresources tidak di-cache, dan dengan demikian dibaca lagi ketika perlu dibaca. Setiap entri di haresources akan dimulai pada acara restart (atau peristiwa yang menyebabkan haresources dibaca); ini termasuk failover.
Kendall
0

Hearbeat hanya harus dihidupkan ulang pada mesin sekunder, karenanya menghindari segala downtime yang terkait dengan manajemen sumber daya.

Dalam kasus ini, simpul utama mendeteksi bahwa mesin slave 'mati' dan memaksa 'failover' yang memuat ulang file sumber daya dan memulai sumber daya yang hilang.

Log cukup eksplisit ketika melakukan ini:

May  9 12:10:40 gw2 heartbeat: [3684]: info: Received shutdown notice from 'gw1'.
May  9 12:10:40 gw2 heartbeat: [3684]: info: Resources being acquired from gw1.
May  9 12:10:40 gw2 heartbeat: [26469]: debug: notify_world: setting SIGCHLD Handler to SIG_DFL
May  9 12:10:40 gw2 harc[26469]: info: Running /etc/ha.d//rc.d/status status
May  9 12:10:40 gw2 mach_down[26521]: info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
May  9 12:10:40 gw2 mach_down[26521]: info: mach_down takeover complete for node gw1.
May  9 12:10:40 gw2 heartbeat: [3684]: info: mach_down takeover complete.
May  9 12:10:40 gw2 heartbeat: [3684]: debug: StartNextRemoteRscReq(): child count 1
May  9 12:10:40 gw2 IPaddr2[26520]: INFO:  Running OK
May  9 12:10:40 gw2 IPaddr2[26640]: INFO:  Running OK
May  9 12:10:40 gw2 IPaddr2[26725]: INFO:  Running OK
May  9 12:10:40 gw2 IPaddr2[26805]: INFO:  Running OK
May  9 12:10:40 gw2 IPaddr2[26890]: INFO:  Resource is stopped
May  9 12:10:40 gw2 heartbeat: [26470]: info: Local Resource acquisition completed.
May  9 12:10:40 gw2 heartbeat: [3684]: debug: StartNextRemoteRscReq(): child count 1
May  9 12:10:40 gw2 heartbeat: [26953]: debug: notify_world: setting SIGCHLD Handler to SIG_DFL
May  9 12:10:40 gw2 harc[26953]: info: Running /etc/ha.d//rc.d/ip-request-resp ip-request-resp
May  9 12:10:40 gw2 ip-request-resp[26953]: received ip-request-resp IPaddr2::1.2.3.4 OK yes
May  9 12:10:40 gw2 ResourceManager[26976]: info: Acquiring resource group: gw2 IPaddr2::1.2.3.4
May  9 12:10:40 gw2 IPaddr2[27006]: INFO:  Resource is stopped
May  9 12:10:40 gw2 ResourceManager[26976]: info: Running /etc/ha.d/resource.d/IPaddr2 1.2.3.4 start
May  9 12:10:40 gw2 IPaddr2[27115]: INFO: ip -f inet addr add 1.2.3.4/24 brd 1.2.3.255 dev brwan
May  9 12:10:40 gw2 IPaddr2[27115]: INFO: ip link set brwan up
May  9 12:10:40 gw2 IPaddr2[27115]: INFO: /usr/lib/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-1.2.3.4 brwan 1.2.3.4 auto not_used not_used
May  9 12:10:40 gw2 IPaddr2[27091]: INFO:  Success

May  9 12:10:47 gw2 heartbeat: [3684]: WARN: node gw1: is dead
May  9 12:10:47 gw2 heartbeat: [3684]: info: Dead node gw1 gave up resources.
May  9 12:10:47 gw2 heartbeat: [3684]: info: Link gw1:eth0 dead.

May  9 12:10:59 gw2 heartbeat: [3684]: info: Heartbeat restart on node gw1
May  9 12:10:59 gw2 heartbeat: [3684]: info: Link gw1:eth0 up.
May  9 12:10:59 gw2 heartbeat: [3684]: info: Status update for node gw1: status init
May  9 12:10:59 gw2 heartbeat: [3684]: info: Status update for node gw1: status up
May  9 12:10:59 gw2 heartbeat: [3684]: debug: StartNextRemoteRscReq(): child count 1
May  9 12:10:59 gw2 heartbeat: [28604]: debug: notify_world: setting SIGCHLD Handler to SIG_DFL
May  9 12:10:59 gw2 heartbeat: [3684]: debug: get_delnodelist: delnodelist= 
May  9 12:10:59 gw2 harc[28604]: info: Running /etc/ha.d//rc.d/status status
May  9 12:10:59 gw2 heartbeat: [3684]: info: Status update for node gw1: status active
May  9 12:10:59 gw2 heartbeat: [3684]: debug: StartNextRemoteRscReq(): child count 1
May  9 12:10:59 gw2 heartbeat: [28619]: debug: notify_world: setting SIGCHLD Handler to SIG_DFL
May  9 12:10:59 gw2 harc[28619]: info: Running /etc/ha.d//rc.d/status status
May  9 12:10:59 gw2 heartbeat: [28634]: debug: notify_world: setting SIGCHLD Handler to SIG_DFL
May  9 12:10:59 gw2 harc[28634]: info: Running /etc/ha.d//rc.d/status status
May  9 12:11:00 gw2 heartbeat: [3684]: info: remote resource transition completed.
Cyril Bouthors
sumber