ユーザ用ツール

サイト用ツール


01_linux:01_net:51_heartbeat_pacemaker_galera

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
01_linux:01_net:51_heartbeat_pacemaker_galera [2015/11/20 17:59]
matsui
01_linux:01_net:51_heartbeat_pacemaker_galera [2015/11/20 18:00] (現在)
matsui
ライン 1: ライン 1:
 +====== 51 Heartbeat + Pacemaker + galera(3 server) ======
  
 +^  host  ^  IP  ^
 +|galera-1|10.0.0.11|
 +|galera-2|10.0.0.12|
 +|galera-3|10.0.0.13|
 +
 +<​code>​
 +                       |
 +                       | vip: 10.0.0.10
 +      +----------------+-----------------+
 +      |                |                 |
 +      | eth0:​10.0.0.11 | eth0:​10.0.0.12 ​ | eth0:​10.0.0.13
 ++-----+-----+ ​   +-----+-----+ ​    ​+-----+-----+
 +| galera-1 ​ |    | galera-2 ​ |     | galera-3 ​ |
 ++-----+-----+ ​   +-----+-----+ ​    ​+-----+-----+
 +</​code>​
 +
 +
 +===== ①galeraインストール =====
 +
 +[[01_linux:​11_データベース:​01_mysql:​01_galera]]
 +
 +
 +== Pacemakerを利用する場合、自動起動はOffにしておく ==
 +<code console>
 +# chkconfig mysql off
 +# chkconfig --list | grep mysql
 +mysql          0:​off 1:​off 2:​off 3:​off 4:​off 5:​off 6:​off
 +</​code>​
 +===== ②Heartbeat + Pacemaker インストール=====
 +
 +[[http://​linux-ha.sourceforge.jp/​wp/​dl/​packages]] から最新のパッケージを持ってくる。
 +
 +
 +今回は [[http://​sourceforge.jp/​projects/​linux-ha/​downloads/​61791/​pacemaker-1.0.13-2.1.el6.x86_64.repo.tar.gz/​|pacemaker-1.0.13-2.1.el6.x86_64.repo.tar.gz]] を利用する。
 +
 +
 +<code console>
 +# tar zxvf pacemaker-1.0.13-2.1.el6.x86_64.repo.tar.gz
 +
 +# yum remove cluster-glue-libs
 +
 +# cd pacemaker-1.0.13-2.1.el6.x86_64.repo/​rpm/​
 +
 +# yum localinstall pacemaker-1.0.13-2.el6.x86_64.rpm \
 +pacemaker-libs-1.0.13-2.el6.x86_64.rpm \
 +pacemaker-libs-devel-1.0.13-2.el6.x86_64.rpm \
 +cluster-glue-libs-devel-1.0.11-1.el6.x86_64.rpm \
 +corosynclib-devel-1.4.6-1.el6.x86_64.rpm \
 +heartbeat-3.0.5-1.1.el6.x86_64.rpm \
 +heartbeat-devel-3.0.5-1.1.el6.x86_64.rpm \
 +heartbeat-libs-3.0.5-1.1.el6.x86_64.rpm \
 +cluster-glue-libs-1.0.11-1.el6.x86_64.rpm \
 +corosynclib-1.4.6-1.el6.x86_64.rpm \
 +corosync-1.4.6-1.el6.x86_64.rpm \
 +cluster-glue-1.0.11-1.el6.x86_64.rpm \
 +cluster-glue-libs-1.0.11-1.el6.x86_64.rpm
 +
 +</​code>​
 +
 +
 +別なやり方
 +[[http://​mokky14.hatenablog.com/​entry/​2014/​04/​13/​210821]]
 +<​code>​
 +# cd /tmp
 +# tar zxvf pacemaker-1.0.13-2.1.el6.x86_64.repo.tar.gz
 +# cd /​tmp/​pacemaker-1.0.13-2.1.el6.x86_64.repo
 +yum -c pacemaker.repo install pacemaker-1.0.13 heartbeat-3.0.5 pm_crmgen pm_diskd pm_logconv-hb pm_extras
 +</​code>​
 +==== 1.Heartbeat設定 ====
 +
 +
 +<​code>​
 +galera_1 # cat /​etc/​ha.d/​authkeys ​
 +auth 1
 +1 sha1 secret
 +
 + # cat /​etc/​ha.d/​ha.cf ​
 +pacemaker on
 +logfile /​var/​log/​ha-log
 +logfacility local0
 +debug 0
 +udpport 694
 +keepalive 2
 +warntime 10
 +deadtime 20
 +initdead 60
 +autojoin none
 +#bcast eth0
 +mcast bond0 225.0.0.1 694 1 0
 +#ucast bond0 10.0.0.11
 +#ucast bond0 10.0.0.12
 +#ucast bond0 10.0.0.13
 +auto_failback off
 +node galera-1
 +node galera-2
 +node galera-3
 +</​code>​
 +
 +[[http://​www.drbd.jp/​users-guide/​s-heartbeat-config.html|autojoin について参考サイト]]
 +
 +== 自動起動はOffにしておく ==
 +
 +<code console>
 +# chkconfig heartbeat off
 +# chkconfig --list | grep heart
 +heartbeat ​     0:​off 1:​off 2:​off 3:​off 4:​off 5:​off 6:​off
 +</​code>​
 +==== 2.Heartbeat起動 ====
 +
 +<code console>
 +# /​etc/​init.d/​heartbeat start
 +
 +# ps auxw| grep heart
 +root     ​56081 ​ 0.2  0.0  50104  7152 ?        SLs  08:51   0:00 heartbeat: master control process
 +root     ​56086 ​ 0.0  0.0  49944  6992 ?        SL   ​08:​51 ​  0:00 heartbeat: FIFO reader ​       ​
 +root     ​56087 ​ 0.0  0.0  49940  6988 ?        SL   ​08:​51 ​  0:00 heartbeat: write: mcast bond0 
 +root     ​56088 ​ 0.0  0.0  49940  6988 ?        SL   ​08:​51 ​  0:00 heartbeat: read: mcast bond0  ​
 +496      56091  0.0  0.0  36788  2264 ?        S    08:51   0:00 /​usr/​lib64/​heartbeat/​ccm
 +496      56092  1.3  0.0  74132  5900 ?        S    08:51   0:00 /​usr/​lib64/​heartbeat/​cib
 +root     ​56093 ​ 0.0  0.0  77676  2500 ?        S    08:51   0:00 /​usr/​lib64/​heartbeat/​lrmd -r
 +root     ​56094 ​ 0.0  0.0  69652  8288 ?        SL   ​08:​51 ​  0:00 /​usr/​lib64/​heartbeat/​stonithd
 +496      56095  0.0  0.0  75940  3216 ?        S    08:51   0:00 /​usr/​lib64/​heartbeat/​attrd
 +496      56096  0.1  0.0  81520  4056 ?        S    08:51   0:00 /​usr/​lib64/​heartbeat/​crmd
 +root     ​56196 ​ 0.6  0.0   ​9724 ​ 1852 ?        S    08:51   0:00 /bin/sh /​usr/​lib/​ocf/​resource.d//​heartbeat/​mysql start
 +root     ​56977 ​ 0.0  0.0 103240 ​  892 pts/1    S+   ​08:​52 ​  0:00 grep heart
 +</​code>​
 +
 +== ※起動しない場合 ==
 +
 +bugでHA_BINのパスが間違っているようなので、直接書いてあげる
 +[[https://​bugzilla.redhat.com/​show_bug.cgi?​id=1028127]]
 +<code console>
 +# vi /​etc/​init.d/​heartbeat
 +    141 HA_BIN=/​usr/​lib64/​heartbeat
 +    142 [ -x $HA_BIN/​heartbeat ] || exit 0
 +</​code>​
 +
 +
 +==== 3.Pacemakerの設定を入れる ====
 +
 +Pacemakerはcrmで設定を行います。
 +
 +== crm設定ファイル作成 ==
 +
 +<code console>
 +# echo << EOM > /​root/​galera.crm
 +## クラスタの全体設定
 +# stonith-enabled="​false"​ : 制御不能なサーバを強制的にOFFにしない
 +
 +property stonith-enabled="​false"​ \
 +  no-quorum-policy="​ignore" ​
 +
 +## resource-stickiness="​INFINITY"​ :​自動ファイルバックしない
 +# 1回failしたらフェイルオーバー
 +rsc_defaults resource-stickiness="​INFINITY"​ \
 +  migration-threshold="​1"​
 +
 +## VIP定義
 +primitive p_ip_mysql_galera ocf:​heartbeat:​IPaddr2 \
 +  params nic="​bond0"​ iflabel="​galera"​ \
 +    ip="​10.0.0.10"​ cidr_netmask="​16"​ nic="​bond0"​
 +
 +## MYSQLリソースを定義
 +primitive p_mysql ocf:​heartbeat:​mysql \
 +  params config="/​etc/​my.cnf"​ \
 +    pid="/​var/​run/​mysqld/​mysqld.pid"​ \
 +    socket="/​var/​lib/​mysql/​mysql.sock"​ \
 +    binary="/​usr/​bin/​mysqld_safe"​ \
 +  op monitor interval="​20s"​ timeout="​30s"​ \
 +  op start interval="​0"​ timeout="​120s"​ \
 +  op stop interval="​0"​ timeout="​120s"​
 +
 +## MYSQLリソースをクローン化
 +# 最大3ノードで1つのプロセスが起動、
 +# target-role : リソースをstartした時の動作
 +clone cl_mysql p_mysql \
 +  meta interleave="​true"​ clone-max="​3"​ clone-node-max="​1"​ target-role="​Started"​
 +
 +## 重み付け、点数が高い方が優先される
 +# galera-1が最優先
 +location rsc_location-1 p_ip_mysql_galera \
 +    rule 300: #uname eq galera-1 \
 +    rule 200: #uname eq galera-2 \
 +    rule 100: #uname eq galera-3
 +
 +## 同居制約 MySQLと、VIPは同じところで起動
 +colocation c_ip_galera_on_mysql \
 +  inf: p_ip_mysql_galera cl_mysql
 +
 +## 起動順序 MySQLの方を先に起動させる
 +order c_galera_order 0: cl_mysql p_ip_mysql_galera
 +EOM
 +</​code>​
 +
 +== crm設定ファイルを読み込む ==
 +
 +<code console>
 +# crm configure load update /​root/​galera.crm
 +</​code>​
 +
 +[[http://​www.oss-d.net/​drbd-pacemaker-corosync|こちら]] crm設定について詳しく記述してくれてます。
 +===== ③.テスト =====
 +
 +
 +== crm_monコマンド ==
 +
 +リアルタイムで状態が見れる。
 +<code console>
 +# crm_mon
 +
 +============
 +Last updated: Thu Sep 11 09:59:02 2014
 +Stack: Heartbeat
 +Current DC: galera-1 (61383def-55fa-472c-a75a-f8655ea458ea) - partition with quorum
 +Version: 1.0.13-a83fae5
 +3 Nodes configured, unknown expected votes
 +2 Resources configured.
 +============
 +
 +Online: [ galera-1 galera-2 galera-3 ]
 +
 +p_ip_mysql_galera (ocf::​heartbeat:​IPaddr2):​ Started galera-1
 + Clone Set: cl_mysql
 +     ​Started:​ [ galera-1 galera-2 galera-3 ]
 +</​code>​
 +
 +
 +
 +
 +==== 1.MySQL停止 ====
 +
 +== galera-1のMySQLを停止すると、VIPがgalera-2に移動する事を確認 ==
 +
 +
 +<code console>
 +Online: [ galera-1 galera-2 galera-3 ]
 +
 +p_ip_mysql_galera (ocf::​heartbeat:​IPaddr2):​ Started galera-2
 + Clone Set: cl_mysql
 +     ​Started:​ [ galera-2 galera-3 ]
 +     ​Stopped:​ [ p_mysql:0 ]
 +
 +Failed actions:
 +    p_mysql:​0_monitor_20000 (node=galera-1,​ call=30, rc=7, status=complete):​ not running
 +</​code>​
 +
 +
 +== 下記でリソースをクリーンアップしてあげると、MySQLが元に戻ります。 ==
 +
 +<​code>​
 +# crm resource cleanup cl_mysql
 +</​code>​
 +
 +== galera-1のMySQLが起動し、VIPがgalera-2のままファイルバックしない事を確認 ==
 +
 +<code console>
 +Online: [ galera-1 galera-2 galera-3 ]
 +
 +p_ip_mysql_galera (ocf::​heartbeat:​IPaddr2):​ Started galera-2
 + Clone Set: cl_mysql
 +     ​Started:​ [ galera-1 galera-2 galera-3 ]
 +</​code>​
 +
 +==== 2.ノード停止 ====
 +
 +== 現在この状態 ==
 +
 +<code console>
 +Online: [ galera-1 galera-2 galera-3 ]
 +
 +p_ip_mysql_galera (ocf::​heartbeat:​IPaddr2):​ Started galera-2
 + Clone Set: cl_mysql
 +     ​Started:​ [ galera-1 galera-2 galera-3 ]
 +</​code>​
 +
 +
 +== galera-2をシャットダウン ==
 +
 +galera-2がOFFLINEとなり、VIPがgalera-1に戻る事を確認
 +
 +<code console>
 +Online: [ galera-1 galera-3 ]
 +OFFLINE: [  galera-2 ]
 +
 +p_ip_mysql_galera (ocf::​heartbeat:​IPaddr2):​ Started galera-1
 + Clone Set: cl_mysql
 +     ​Started:​ [ galera-1 galera-3 ]
 +     ​Stopped:​ [ p_mysql:2 ]
 +</​code>​
 +
 +{{tag>​pacemaker heartbeat}}
01_linux/01_net/51_heartbeat_pacemaker_galera.txt · 最終更新: 2015/11/20 18:00 by matsui

Yesterday:349 Today:300 Total:07005