*Corosync [#a186758c]
[[Corosync>+http://corosync.github.io/corosync/]]
正式名称:The Corosync Cluster Engine
LinuxでHighAvailability(H/A)構成を実現する為に使用する、ノード装置死活監視ソフトウェア。
設定したノード(対向、多対向)のノード監視を行い、ノードが停止した場合に正常系への切り替え処理を実施する。
動作としては、CiscoASAのH/A構成や、VRRPの2IP構成の動きに似ている。
~
*インストール [#bc08d1e1]
&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
 # ./autogen.sh
 # ./configure --prefix=/usr/local/corosync-2.3.4 --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 .
 # cd /usr/lib64/pkgconfig
 # ln -s /usr/local/corosync/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
~
&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){3. 起動方法};};
コンフィグを書いたら、Corosyncの起動テストを行う。
起動時にはログイン中のユーザを一度exitで抜けた後に再ログインして行う。
 # /etc/init.d/corosync start
 Starting corosync (via systemctl):        [ OK ]
 -----
 # systemctl start corosync.service