*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に頼るのはどうかと思うので、 今回はソースコードからのインストールも実施する。 また、corosyncはクラスタリングの基盤という立ち位置の為、localstatedirを"/var"に変更してビルドする。 ※ソースコードの取得に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. コンフィグ};}; 設定はひな形を元に作成し、今回はUDPユニキャスト方針でクラスターノードを見つける設定にする。 項目については[[GitHub:+https://gist.github.com/inokappa/124b1ee5f3e3fbe6b172]]を見るか、[[OSSでLinuxサーバ構築:+http://www.oss-d.net/drbd-pacemaker-corosync#d8cc2835]]のどちらかを参照 # 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 #クラスタノードプロセス(Pacemaker)の停止を検出する時間。ms指定 token: 1000 #冗長リング構成(ringnumber)の動作モード rrp_mode: active #クラスタ間通信の暗号化指定 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の属するネットワークアドレスを指定 #もし、memberが別NWに所属するならcorosyncを実行中のノード(member)IPアドレスを書く bindnetaddr: 192.168.0.0 #クラスタノード間通信のポート番号 mcastport: 5405 #MulticastTransport利用時に有効なTTL数を指定 ttl: 1 } #UDPユニキャストモードを使用する transport: udpu } #クラスターに所属するノード一覧 nodelist { node { ring0_addr: 192.168.0.2 nodeid: 1 } node { ring0_addr: 192.168.0.3 nodeid: 2 } } #ログの記録方法を設定する 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 } } #スプリットブレイン対策 quorum { provider: corosync_votequorum expected_votes: 2 } コンフィグを作成したら、UDPユニキャストコンフィグ時に使用する認証鍵を一応作成しておく。 # corosync-keygen ----- corosync-keygenをすると、"/dev/random"を使って鍵を自動生成するので放置する。 "/etc/corosync/authkey"が完成したら、authkeyファイルを各クラスタノードに転送しておく。 ~ &size(16){&font(b){3. 起動方法};}; コンフィグを書いたら、Corosyncの起動テストを行う。 起動時にはログイン中のユーザを一度exitで抜けた後に再ログインして行う。 # /etc/init.d/corosync start Starting corosync (via systemctl): [ OK ] ----- # systemctl start corosync.service