share facebook facebook twitter menu hatena pocket slack

2013.08.08 THU

Vyatta(Core 6.6 R1)のクラスタリング機能の調査

鈴木 宏康

WRITTEN BY 鈴木 宏康

スズキです。

下記資料の3章(Clustering)、P.174を参考に試してみました。

“Vyatta System High Availability REFERENCE GUIDE”

その前に、クラスタリングする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の付けかえとルーティングテーブルを
変更するフェイルオーバースクリプトを用意して、

VyattaにPython版AWSコマンドラインインターフェース(CLI)をインストールしてみた

次のMLを参考に相互監視をユニキャストできれば、

Re: [Vyatta-users] Cluster heartbeat / change to ucast?

下記のようにVPC上のVyatta(on EC2)の冗長化も実現できるかもしれません。

“High Availability NAT”の作成(CentOS6)

次は、実際に実験してみようと思います。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。