- 追加された行はこの色です。
- 削除された行はこの色です。
*Corosync [#f0319acf]
[[Corosync>+http://corosync.github.io/corosync/]]
正式名称:The Corosync Cluster Engine
LinuxでHighAvailability(H/A)構成を実現する為に使用する、ノード装置死活監視ソフトウェア。
設定したノード(対向、多対向)のノード監視を行い、ノードが停止した場合に正常系への切り替え処理を実施する。
動作としては、CiscoASAのH/A構成や、VRRPの2IP構成の動きに似ている。
*Pacemaker [#s09818af]
[[Cluster Labs>+http://clusterlabs.org/]]
[[GitHub Pacemaker>+https://github.com/ClusterLabs/pacemaker]]
クラスタリング環境下で、Elastic IP Address(EIP≒Virtual IP Address)の付け替えを行ったり、
リソース管理と連携してパケット振り分けを行うミドルウェア。
Pacemakerとサーバ監視ソフト(zabbix、Nagios、etc...)を連携させる事で、
監視側でアラートが上がったらEIPの付け替えを行う事も可能。
~
*インストール [#n8fde043]
*インストール [#g674171b]
&size(16){&font(b){1. ビルド・インストール};};
色々なインストール方法があるが一番楽なのは、yum一発で入れる方法
下記コマンドを打てば、必要なライブラリも全て自動でインストール出来る。
# yum install corosync
しかし、冗長構成等のシステム基幹部分もyumに頼るのはどうかと思うので、
今回はソースコードからのインストールも実施する。
※ソースコードの取得にgitコマンドが必要なので事前にいれておく
# wget http://build.clusterlabs.org/corosync/releases/corosync-2.3.4.tar.gz
# tar zxvf corosync-2.3.4.tar.gz
# cd corosync-2.3.4
PacemakerはCorosyncのライブラリを使用するので、&font(b){Pacemakerのビルド前にCorosyncを入れておく。};
また、configureオプションもCorosyncと同様にした方が動作不良が起きにくい。
"make install"する時に、Pacemaker用のグループとユーザが必要になるので事前に作っておく。
ビルド時にはsysconfdirとlocalstatedirをCorosyncのオプションと合わせる必要がある。
# groupadd haclient
# useradd -g haclient -s /sbin/nologin -M -d /var/pacemaker hacluster
# git clone git://github.com/ClusterLabs/pacemaker.git pacemaker
# cd pacemaker
# ./autogen.sh
# ./configure --prefix=/usr/local/corosync-2.3.4 --sysconfdir=/etc --localstatedir=/var
# ./configure --prefix=/usr/local/pacemaker --sysconfdir=/etc --localstatedir=/var
# make
# make install
# cd /usr/local
# ln -s /usr/local/corosync-2.3.4 ./corosync
# cd /usr/bin
# ln -s /usr/local/corosync/bin/corosync-blackbox .
# cd /usr/sbin
# ln -s /usr/local/corosync/sbin/corosync* .
# cd /usr/include/
# ln -s /usr/local/corosync/include/corosync .
# ln -s /usr/local/pacemaker/sbin/* .
# cd /usr/include
# ln -s /usr/local/pacemaker/include/pacemaker .
# cd /usr/libexec
# ln -s /usr/local/pacemaker/libexec/pacemaker .
# cd /usr/lib64/pkgconfig
# ln -s /usr/local/corosync/lib/pkgconfig/* .
# ln -s /usr/local/pacemaker/lib/pkgconfig/* .
# cd /usr/lib64
# ln -s /usr/local/corosync/lib/lib* .
# cp ${SOURCE_DIR}/init/corosync.sysconfig.example /etc/sysconfig/corosync
# cd /etc/init.d
# mv corosync corosync-
# sed -e "s/corosync-2.3.4/corosync/g" corosync- > corosync
# ln -s /usr/local/pacemaker/lib/lib* .
~
&size(16){&font(b){2. コンフィグ};};
設定ファイルはひな形を元に作成する。
項目については[[GitHub:+https://gist.github.com/inokappa/124b1ee5f3e3fbe6b172]]で解説されているので、そちらを参照
# cp /etc/corosync/corosync.conf.example.udpu /etc/corosync/corosync.conf
# vi /etc/corosync/corosync.conf
=====
#corosync.confをOpenAISと互換性を保ったコンフィグにする
compatibility: whitetank
#Corosyncを実行するユーザとグループ
aisexec {
user: root
group: root
}
#VirtualIPの付け替えを行うフロントエンド指定
service {
#Pacemakerを使う
name: pacemaker
#PacemakerをCorosyncと連携させる設定。Pacemakerのバージョンに揃える
ver: 1
#PacemakerGUIを使う
use_mgmtd: yes
}
#クラスタノード間の通信プロトコルなどを指定する
totem {
#Corosync設定ファイルのバージョン。今は2のみ指定可能
version: 2
#クラスタ間通信の暗号化指定
secauth: off
#crypto_cipher: none
#crypto_hash: none
interface {
#クラスタノード(メンバー)のIPアドレスorホスト名
member {
memberaddr: 192.168.0.2
}
member {
memberaddr: 192.168.0.3
}
#リングプロトコル使用時のI/F所属リング番号。0から開始する
ringnumber: 0
#memberの属するネットワークアドレスを指定
bindnetaddr: 192.168.0.0
#クラスタノード間通信のポート番号
mcastport: 5405
#MulticastTransport利用時に有効なTTL数を指定
ttl: 1
}
transport: udpu
}
#ログの記録方法を設定する
logging {
fileline: off
to_logfile: yes
to_syslog: off
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
#loggingステートの設定上書き
logger_subsys {
subsys: QUORUM
debug: off
}
}
&size(16){&font(b){2. 起動};};
起動は、[Corosync→Pacemaker]の順番に行う。
Pacemakerが先に起動していたらPacemakerを一度停止した後、
Corosyncをreloadし、Pacemakerを再起動させる。
# /etc/init.d/pacemaker stop
# /etc/init.d/corosync reload
# /etc/init.d/pacemaker start
起動とクラスタノードのチェックするには、Pacemakerのコマンド(crm_mon)を使用する。
ただし、1台のみでcrm_monを打ってもノードが無い為に"0 Node"で表示される事がある点に注意。
# crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode
Last updated: Sun Dec 7 00:45:16 2014
Last change: Sat Dec 7 00:42:34 2014
Current DC: NONE
0 Nodes configured
0 Resources configured
~
&size(16){&font(b){3. 起動方法};};
コンフィグを書いたら、Corosyncの起動テストを行う。
起動時にはログイン中のユーザを一度exitで抜けた後に再ログインして行う。
# /etc/init.d/corosync start
Starting corosync (via systemctl): [ OK ]
-----
# systemctl start corosync.service
&size(16){&font(b){3. 設定};};
Pacemaker単体ではEIPの設定が出来ない為、EIP設定専用のshellをインストールする。
代表的な物としては、[[crm>Linux/Command/crmsh]]と[[pcs>Linux/Command/pcs]]の二種類がある。
crmはRedhat6.4辺りからプロジェクトが独立してしまい、現在はopenSUSEのリポジトリでサポートされている。
pcsはGitHubをベースに展開されている。
~
今後はどちらが生き残るかわからないが、選択の基準は以下の通りとなる。
-高機能と前例事例で選ぶならcrm
-今後の主流になりそうなpcs
-crmとpcsは設定に互換性が&font(b){無い};