スズキです。
下記資料の3章(Clustering)、P.174を参考に試してみました。
その前に、クラスタリングするVyattaでホスト名が重複しないように、変更しておきます。
("set system host-name …"です)
vyatta@vyatta# set system host-name vyatta-1 [edit] vyatta@vyatta# commit [ system host-name vyatta-1 ] Stopping enhanced syslogd: rsyslogd. Starting enhanced syslogd: rsyslogd. [edit] vyatta@vyatta# save Saving configuration to '/config/config.boot'... Done [edit] vyatta@vyatta# run reboot Proceed with reboot? (Yes/No) [No] Yes Broadcast message from root@vyatta-1 (pts/0) (Tue Aug 6 03:18:21 2013): The system is going down for reboot NOW! [edit]
再度ログインしてプロンプトを確認すると、ホスト名が変更されていることがわかります。
$ ssh -i suz-lab_ap-northeast-1.pem -l vyatta xxx.xxx.xxx.xxx Linux vyatta-1 3.3.8-1-amd64-vyatta #1 SMP Wed Mar 13 10:35:28 PDT 2013 x86_64 Welcome to Vyatta. This system is open-source software. The exact distribution terms for each module comprising the full system are described in the individual files in /usr/share/doc/*/copyright. Last login: Tue Aug 6 03:08:22 2013 from xxx.xxx.xxx.xxx vyatta@vyatta-1:~$
次にフェイルオーバー時に実行するテストスクリプトを用意しておきます。
$ sudo su - # cd /etc/init.d/ # ls -l failover -rwxr-xr-x 1 root root 32 Aug 7 03:57 failover # cat failover #!/bin/sh date >> /tmp/test.txt # ./failover # cat /tmp/test.txt Wed Aug 7 04:00:03 GMT 2013
そしてクラスタリングの設定です。
$ configure [edit] # set cluster interface eth0 [edit] # set cluster pre-shared-secret secret [edit] # set cluster group aws [edit] # set cluster group aws primary vyatta-1 [edit] # set cluster group aws secondary vyatta-2 [edit] # set cluster group aws service failover [edit] # commit [ cluster ] Stopping clustering... Done Starting clustering... Done [edit] # save Saving configuration to '/config/config.boot'... Done [edit]
するとHeartbeatが起動することが確認できます。
つまりVyattaのクラスタリング機能の実体はHeartbeatということになります。
$ ps ax | grep heartbeat 3102 ? SLs 0:00 heartbeat: master control process 3115 ? SL 0:00 heartbeat: FIFO reader 3116 ? SL 0:00 heartbeat: write: mcast eth0 3117 ? SL 0:00 heartbeat: read: mcast eth0 3321 pts/2 S+ 0:00 grep heartbeat
上記のテストスクリプトも適当に起動されてました。
$ cat /tmp/test.txt Wed Aug 7 04:00:03 GMT 2013 Wed Aug 7 04:22:58 GMT 2013 Wed Aug 7 04:22:58 GMT 2013 Wed Aug 7 04:23:29 GMT 2013 Wed Aug 7 04:23:29 GMT 2013 Wed Aug 7 04:23:29 GMT 2013
実体であるHeartbeatの設定ファイルは次の通りです。
$ cat /etc/ha.d/ha.cf keepalive 5000ms deadtime 20 warntime 10000ms initdead 30000ms deadping 20000ms logfacility daemon mcast eth0 239.251.252.253 694 1 0 auto_failback off node vyatta-1 vyatta-2
$ cat /etc/ha.d/haresources vyatta-1 failover
ということで、下記でインストールしたAWSのCLIを利用して、EIPの付けかえとルーティングテーブルを
変更するフェイルオーバースクリプトを用意して、
次のMLを参考に相互監視をユニキャストできれば、
下記のようにVPC上のVyatta(on EC2)の冗長化も実現できるかもしれません。
次は、実際に実験してみようと思います。