完全に再起動せずにハートビートでシステムに新しいIPアドレスを追加する方法はありますか?


8

高可用性のためにハートビートを利用します。ハートビートクラスターに追加のIPアドレスを追加したいのですが、プロセス中にクラスターを完全に再起動したくありません。「haresources」ファイルの再解析とそのアクションの実行を促す信号をハートビートに送信できますか?heartbeat -rはトリックを実行していないようです。

回答:


6

問題は、「heartbeat -r」(「service heartbeat reload」を実行するとinit.dスクリプトで実行されるコマンド)を実行した後、十分な時間待機しなかったことです。数分後、IPが表示されました。期待どおりのインターフェイス。


ハートビートは変更自体を適用しますか?それは実際には非常に低い吸い込み指数を持っています!所要時間がわかる場合はお知らせください:-)
voretaq7

このコメントを読んだ後、それはかなり誤解を招くものであることに気付きました。私は答え全体を否定し、それを書き直しました。
Peter Grace、

mmh、それはより賢明です-リロードをトリガーする必要がありますが、それは瞬時ではありません。(そして、それはより確定的で、私を幸せにします。)
voretaq7

2

Heartbeatをリロードする必要はまったくありません。次のような新しいIPaddrリソースをharesourcesファイルに追加するだけです

IPaddr::xx.xx.xx.xx

そしてそれを始める

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

もちろん、アクティブノードでIPaddr startを発行する必要があります。追加したIPアドレスでトラフィックを送受信できるようになります。


自分の答えが正しいと認めるのは控えておきます。私がしたことはうまくいったとしても、あなたの提案はかなりエレガントに聞こえるからです。試してみたいのですが、上手くいった場合は、賛成票と賛成票をお送りください。
ピーター・グレース

はい、これが取引です。私はこれを試してみました、そして見ました、それはうまくいきました!問題は、ハートビートをリロードせずにこれを行うと、クラスターが不整合な状態のままになることです。ソースを確認したところ、ハートビートがharesourcesファイルを再解析する場所は3つしかなく、これら3つの条件はすべて、要求された再起動中です。そのため、クラスターがフェイルオーバーおよびフェイルバックする場合、haresourcesに配置し、IPaddr <x> startで手動でインスタンス化されたIPは、フェイルオーバーで再作成されません。遠慮なく私が間違っていることを証明してください。しかし、この方法は信頼できないと思われます。
Peter Grace

正解ですが、Heartbeatは構成ファイル(haresourcesなど)の同期を維持しません。独自の方法を考案する必要があります。私の環境では、通常これにユニゾンを使用していますが、うまく機能しているようです。haresourcesファイルはキャッシュされないため、読み取る必要がある場合は新たに読み取られます。haresources内のすべてのエントリがします(原因haresourcesが読み込まれることやイベント)の再起動のイベントで開始され、これにはフェイルオーバーが含まれます。
ケンドール

0

Hearbeatはセカンダリマシンでのみ再起動する必要があるため、リソース管理に関連するダウンタイムを回避できます。

この場合、プライマリノードはスレーブマシンが「デッド」であることを検出し、リソースファイルをリロードして欠落しているリソースを開始する「フェイルオーバー」を強制します。

これを行うと、ログは非常に明確になります。

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.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.