PaceMaker+MySQLレプリケーションインストール設定
pacemaker,corosync,pcs,cmanをインストールする。# yum install pacemaker.x86_64 corosync.x86_64 pcs cman※CentOS6.4以降corosync が Pacemaker を立ち上げる「プラグイン方式」が廃止されたのでCmanを利用する
# yum install python-dateutil python-lxml # rpm -Uvh http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/RedHat_RHEL-6/x86_64/python-pssh-2.3.1-4.2.x86_64.rpm # rpm -Uvh http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/RedHat_RHEL-6/x86_64/pssh-2.3.1-4.2.x86_64.rpm # rpm -Uvh http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/RedHat_RHEL-6/x86_64/crmsh-2.1-1.1.x86_64.rpm
# chown root:root /usr/lib/ocf/resource.d/heartbeat/VIPcheck # chmod 755 /usr/lib/ocf/resource.d/heartbeat/VIPcheck
# vi /etc/hosts
10.96.146.31 dbserver-01 10.96.146.32 dbserver-02
# ccs -f /etc/cluster/cluster.conf --createcluster cluster_cman # ccs -f /etc/cluster/cluster.conf --addnode dbserver-01 # ccs -f /etc/cluster/cluster.conf --addnode dbserver-02 # ccs -f /etc/cluster/cluster.conf --addfencedev pcmk agent=fence_pcmk # ccs -f /etc/cluster/cluster.conf --addmethod pcmk-redirect dbserver-01 # ccs -f /etc/cluster/cluster.conf --addmethod pcmk-redirect dbserver-02 # ccs -f /etc/cluster/cluster.conf --addfenceinst pcmk dbserver-01 pcmk-redirect port=dbserver-01 # ccs -f /etc/cluster/cluster.conf --addfenceinst pcmk dbserver-02 pcmk-redirect port=dbserver-02
# vi /etc/cluster/cluster.conf
<cman expected_votes="1" two_node="1"/>
# vi /etc/sysconfig/cman
CMAN_QUORUM_TIMEOUT=0
token: 5000 token_retransmits_before_loss_const: 10・rrp_mode: active#追加
#mcastaddr: 226.94.1.1 member { memberaddr: 192.168.151.31 } member { memberaddr: 192.168.151.32 }・pacemaker と corosync を連携
service { # Load the Pacemaker Cluster Resource Manager 5 ver: 1 name: pacemaker }■Corosync設定
# vi /etc/corosync/corosync.conf
compatibility: whitetank totem { version: 2 token: 5000 token_retransmits_before_loss_const: 10 secauth: off threads: 0 nodeid: 02 rrp_mode: active interface { ringnumber: 0 bindnetaddr: 192.168.151.0 #mcastaddr: 226.94.1.1 member { memberaddr: 192.168.151.31 } member { memberaddr: 192.168.151.32 } mcastport: 5405 ttl: 1 } transport:udpu } logging { fileline: off to_stderr: no to_logfile: yes to_syslog: yes logfile: /var/log/cluster/corosync.log debug: on timestamp: on logger_subsys { subsys: AMF debug: off } } amf { mode: disabled } service { # Load the Pacemaker Cluster Resource Manager 5 ver: 1 name: pacemaker }※token × token_retransmits_before_loss_const が、ノードが障害と判定されるまでに、クラスターメッセージに応答しなくてもよい最大時間です。
ログローテート設定
Pacemaker+MySQLレプリケーション構築【ログローテート設定】自動再起動設定
chkconfig pacemaker on chkconfig cman off chkconfig corosync off※pacemakerの起動スクリプトにCMANを立ち上げる処理を含んでいるので上記クラスタエンジンの自動起動をOFFにする。
Pacemaker+MySQLレプリケーション構築【目次】
Pacemaker+MySQLレプリケーション構築【環境/基本情報】おすすめ書籍
インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門]トラブルシューティングガイド |
[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 |
Paemakerのログローテート設定
Pacemakerログ出力には、ファイル出力とsyslogの方法がある。 ここではsyslog出力設定にして、ログローテートする手順を説明する。・syslogでログを受け取る設定 ・syslogの制限設定を解除する ・ログローテート対象の重複ログローテートの回避
■pacemaker停止# /etc/init.d/pacemaker stop
corosyncのログ設定
■corosyncのsyslog出力設定# vi /etc/corosync/corosync.conf
logging { fileline: off to_stderr: no to_logfile: no to_syslog: yes syslog_facility: local1 syslog_priority: info #logfile: /var/log/cluster/corosync.log debug: off timestamp: on logger_subsys { subsys: AMF debug: off } }
pacemakerのsyslog出力設定
■pacemakerのsyslog出力設定# vi /etc/sysconfig/pacemaker export PCMK_logfile=none export PCMK_logfacility=local2 export PCMK_logpriority=info
syslog設定とログローテート
■syslog設定# vi /etc/rsyslog.conf *.info;mail.none;authpriv.none;cron.none;local1.none;local2.none /var/log/messages local1.* /var/log/cluster/corosync.log local2.* /var/log/cluster/pacemaker.log
# vi /etc/rsyslog.conf $SystemLogRateLimitInterval 0
# vi /etc/logrotate.d/syslog
/var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler /var/log/cluster/corosync.log /var/log/cluster/pacemaker.log { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
# vi /etc/logrotate.d/cman
/var/log/cluster/dlm_controld.log /var/log/cluster/fenced.log /var/log/cluster/gfs_controld.log { missingok compress copytruncate daily rotate 31 minsize 2048 notifempty }
設定反映
# /etc/init.d/rsyslog restart # /etc/init.d/pacemaker start
Pacemaker+MySQLレプリケーション構築【目次】
Pacemaker+MySQLレプリケーション構築【環境/基本情報】おすすめ書籍
インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門]トラブルシューティングガイド |
[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 |
# pcs property set stonith-enabled=false # pcs property set no-quorum-policy=ignore # pcs property set crmd-transition-delay=2s■自動フェイルバックなし、同一サーバでリソースの再起動を試みる回数を 1 回に設定します。
# pcs resource defaults resource-stickiness="INFINITY" migration-threshold="1"■VIP監視
# pcs resource create res-chk-vip1 ocf:heartbeat:VIPcheck \ target_ip=10.96.146.30 count=1 wait=10 \ op start interval=0s timeout=90s on-fail=restart start-delay=4s■VIP設定
# pcs resource create res-vip1 ocf:heartbeat:IPaddr2 ip=10.96.146.30 cidr_netmask=24 op monitor interval=30s■メール送信
# pcs resource create res-mailto ocf:heartbeat:MailTo \ params email="hoge_system@ml01.hoge.hoge.jp" subject="Pacemaker FailOver" \ op monitor interval="10s" timeout="10s" \ op start interval="0" timeout="10s" \ op stop interval="0" timeout="10s" \ meta target-role="started"■ping監視
# pcs resource create res-ping ocf:pacemaker:ping \ params name="default_ping_set" host_list="10.96.146.39 10.96.146.40 10.96.146.41" multiplier="100" dampen="50" \ op monitor interval="10s" timeout="20s" \ op start interval="0" timeout="90s" \ op stop interval="0" timeout="100s"
# pcs resource clone res-ping※「ocf:pacemaker:pingd」は古いので「ocf:pacemaker:ping」を利用すること。「ocf:pacemaker:pingd」はフェイルオーバできないなどバグがある。
#pcs cluster standby dbserver-02MySQLリソースの設定
# pcs resource create res-mysql ocf:heartbeat:mysql binary=/usr/bin/mysqld_safe pid=/var/run/mysqld/mysqld.pid \ datadir="/data/db/mysqld/daito-data" config="/etc/my.cnf" user="mysql" group="mysql" log="/data/db/mysqld/log/mysqld.log" \ test_user="chk_user" test_passwd="helthpasswd" test_table="chk_db.chk_tbl" \ replication_user=repl replication_passwd=slavepasswd \ op start interval=0 timeout=120s \ op stop interval=0 timeout=120s \ op monitor interval=10s role=Master timeout=30s on-fail="restart" \ op monitor interval=30s role=Slave timeout=30s on-fail="restart" \ op promote interval=0 timeout=120s \ op demote interval=0 timeout=120s \ op notify interval=0 timeout=90s■Master/Slaveセットを作成します。
# pcs resource master ms-mysql res-mysql master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true■リソースグループ
# pcs resource group add grp-network res-chk-vip1 res-vip1 res-mailto■同居制約
# pcs constraint colocation add grp-network ms-mysql INFINITY with-rsc-role=Master # pcs constraint colocation add master ms-mysql with res-ping■起動順序
# pcs constraint order promote ms-mysql then start grp-network # pcs constraint order start res-ping-clone then promote ms-mysql # pcs constraint order start res-chk-vip1 then start res-vip1※on-fail="xxx"の設定に応じた動作を行う。指定できる動作には以下のものがある。
block | 故障したリソースの管理を停止し待機する。 |
---|---|
fence | リソース故障が発生したメンバーノードをSTONITHによって再起動し、フェールオーバする。 |
ignore | 何の処理も行わない。 |
stop | 故障したリソースを停止し、他のメンバーノードへフェールオーバさせない。 |
restart | 故障したリソースを他のメンバーノードへフェールオーバする(デフォルト)。 |
Pacemaker+MySQLレプリケーション構築【目次】
Pacemaker+MySQLレプリケーション構築【環境/基本情報】おすすめ書籍
インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門]トラブルシューティングガイド |
[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 |