Pacemaker + Corosync on Ubuntu 14.04でHAクラスタを構成する
Ubuntu 14.04でPacemaker + Corosyncを用いてHAクラスタを組んでみたのでメモ。
Pacemakerとは
Linux-HA Japanさんが日本語情報をまとめています。
ざっくりいえば、
- Pacemaker... アプリやノードやネットワークといったリソースを監視
- Corosync... ノード同士を接続してクラスタを形成
という感じでしょうか。 歴史は以下のページに。
第1回 Pacemakerの歴史を見てみよう!:Pacemakerでかんたんクラスタリング体験してみよう!|gihyo.jp … 技術評論社
この記事で書くこと
- PacemakerとCorosyncをインストール
- Corosyncの初期設定(ノード同士が繋がるのを確認するところまで)
リソースの設定などは書きません。
参考にしたURL
環境
- Ubuntu 14.04がインストールされたサーバ x3
- 適当なサーバ2台以上あればOK
インストール(全ノード)
ClusterLabsのQuickStartを参考にやっていきます。 まずはaptを使ってインストールしていきましょう。
# apt install pacemaker corosync fence-agents
Corosyncの設定(全ノード)
クラスタ制御ツールCorosyncの設定をしていきます。
/etc/corosync/corosync.conf
に追記した部分は以下の通り。
# editor /etc/corosync/corosync.conf totem { ... cluster_name: mycluster transport: udpu interface { ... bindnetaddr: 198.18.249.0 ... } } ... quorum { ... two_node: 1 wait_for_all: 1 last_man_standing: 1 auto_tie_breaker: 0 } ... logging { ... debug: on ... } nodelist { node { ring0_addr: controller-ha nodeid: 101 } node { ring0_addr: compute01 nodeid: 102 } node { ring0_addr: 198.18.249.121 nodeid: 103 } }
ポイント
bindnetaddr: 198.18.249.0
ring0_addr: controller-ha
ring0_addr
の値にはIPアドレス or 名前解決可能なホスト名を入力。
nodeid: 101
- 1つのノードに一意の番号を割り当てる。nodeidが被っているとクラスタが組めない。
この設定を全ノードに行います。1つのノードで設定して他ノードにコピーすればいいのか。
起動(全ノード)
Corosync起動→Pacemaker起動の流れ。
# corosync # service pacemaker start
なぜかservice corosync start
が何も反応なく、しかたなくプログラムを直接実行するという。。。
CorosyncがうまくいかないとPacemakerは落ちます。
クラスタ確認
本当にクラスタが組めているか確認します。操作はどれか1つのノードで行います。
# crm_mon Last updated: Sun Dec 13 11:44:44 2015 Last change: Sat Dec 12 16:17:24 2015 via crm_attribute on controller-ha Stack: corosync Current DC: controller-ha (101) - partition with quorum Version: 1.1.10-42f2063 3 Nodes configured 0 Resources configured Online: [ compute01 198.18.249.121 controller-ha ]
設定したノードがすべてOnlineとなっていればOKです。
おまけ:Pacemakerのログを出力する
ログはdebug出力してほしい…君のすべてを知りたい…ということでおまけです。 (すべてを知りたければソースコードからお付き合いでしょうか。あるいは開発者と仲良くなることでしょうか。)
Pacemakerのログレベルについては/etc/default/pacemaker
を編集することで設定できます。例によって変更点のみ。
# editor /etc/default/pacemaker export PCMK_debug=yes export PCMK_debugfile=/var/log/pacemaker.log export PCMK_logpriority=debug
PCMK_logpriority
はなんとなく設定しましたが、syslogに出力するログレベルなのでなくてもいいかもです。
おしまい
「Corosyncの設定を全ノードしなきゃいけないの?スケールアウトするとき大変だ…」という人にはpacemaker-remoteというものもあります。 肝心のリソース設定は他の記事にお任せします…と思ったけれど、大体がCentOSでやっていてUbuntuでの日本語記事ってあんまりない気がするので、そのうちApacheのHAの設定やってみます。