====== 55 corosync pacemaker ======
corosync、pacemaker、pcsdで冗長構成
corosync: サーバ間クラスタ。Heartbeatの替わり
pacemaker: crm クラスタ上稼働しているアプリケーション(サービス)を監視、起動、停止
pcsd: 上記クラスタの管理しやすくするデーモン
===== 環境 =====
^ 説明 |1号機|2号機|3号機|VIP|
^ HostName|node01|node02|node03|
^Global|10.100.10.11|10.100.10.12|10.100.10.13|10.100.10.10|
^Local01|172.16.10.11|172.16.10.12|172.16.10.13|172.16.10.10|
^Local02|192.168.10.11|192.168.10.12|192.168.10.13|192.168.10.10|
===== インストール =====
# rpm -ivh https://ja.osdn.net/dl/linux-ha/pacemaker-repo-1.1.13-1.1.el6.x86_64.rpm
# sed -i 's/^enabled=1/enabled=0/g' /etc/yum.repos.d/pacemaker.repo
# yum --enablerepo=linux-ha-ja-pacemaker install pacemaker-all corosync pcs clufter-lib-pcs
===== Corosync用の初期設定 =====
=== クラスター内で最初のノードで作成 ===
# corosync-keygen
=== ノードを追加する場合は、キーを配布する ===
# rsync /etc/corosync/authkey root@192.168.10.12:/etc/corosync/authkey
# rsync /etc/corosync/authkey root@192.168.10.13:/etc/corosync/authkey
===== Pacemaker初期設定 =====
「PCMK_fail_fast=yes」を追加
※Pacemakerの内部プロセスが死亡した場合にもノード故障とみなす
# sed -i.$(date '+%Y%m%d') '/^#.*PCMK_fail_fast/a\PCMK_fail_fast=yes' /etc/sysconfig/pacemaker
===== pcsd初期設定 =====
今回はGUIで管理する場合の設定
GUIを利用しない場合は、「DISABLE_GUI=true」にしておく
# sed -i.$(date '+%Y%m%d') 's/^DISABLE_GUI=true/DISABLE_GUI=false/g' /etc/sysconfig/pcsd
=== pcsdユーザにパスワード設定 ===
全ノードで設定する。
# passwd hacluster
=== hostsを設定 ===
こちらも全ノードで設定する。
※ホストが2重で登録されてたりすると、上手くクラスタが組めなかった
192.168.10.11 node01
192.168.10.12 node02
192.168.10.13 node03
===== pcsd起動 =====
# /etc/init.d/pcsd start
==== GUIでクラスタ作成 ====
ポート番号は、2224
先程設定したhaclusterユーザでログイン
https://10.100.10.11:2224
==== CUIの場合 ====
=== PCS auth ===
# pcs cluster auth node01 node02 node03 -u hacluster -p [PASSWORD] --force
=== クラスタ作成 ===
# pcs cluster setup --name pcs_cluster node01 node02 node03
===== PCS 設定 =====
==== フィルタの停止と、初期設定 ====
pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
pcs resource defaults resource-stickiness=INFINITY
pcs resource defaults migration-threshold=1
==== resource追加 ====
pcs resource create rs_vip_g \
ocf:heartbeat:IPAddr2 \
ip=10.100.10.10 \
cidr_netmask=25 \
nic=eth0 \
op monitor interval=5s on-fail="restart" \
--group=gr_zabbix
pcs resource create rs_vip_dedi \
ocf:heartbeat:IPAddr2 \
ip=172.16.10.10 \
cidr_netmask=16 \
nic=eth1 \
op monitor interval=5s on-fail="restart" \
--group gr_zabbix
pcs resource create rs_vip_pc \
ocf:heartbeat:IPAddr2 \
ip=192.168.10.10 \
cidr_netmask=24 \
nic=eth2 \
op monitor interval=5s on-fail="restart" \
--group gr_zabbix
pcs resource create rs_sourcenat_g \
ocf:pacemaker:SourceNAT \
ip=10.100.10.10 \
nic=eth0 \
op monitor interval=0s on-fail="restart" \
--group=gr_zabbix
pcs resource create rs_sourcenat_pc \
ocf:pacemaker:SourceNAT \
ip=192.168.10.10 \
nic=eth2 \
op monitor interval=0s on-fail="restart" \
--group=gr_zabbix
pcs resource create rs_sourcenat_dedi \
ocf:pacemaker:SourceNAT \
ip=172.16.10.10 \
nic=eth1 \
op monitor interval=0s on-fail="restart" \
--group=gr_zabbix
pcs resource create rs_vipcheck_g \
ocf:heartbeat:VIPcheck \
target_ip=10.100.10.10 \
count=5 \
wait=1s \
op monitor interval=5s on-fail="restart" \
--group=gr_zabbix
pcs resource create rs_vipcheck_pc \
ocf:heartbeat:VIPcheck \
target_ip=192.168.10.10 \
count=5 \
wait=1s \
op monitor interval=5s on-fail="restart" \
--group=gr_zabbix
pcs resource create rs_web \
ocf:heartbeat:apache \
configfile=/etc/httpd/conf/httpd.conf \
op monitor interval=5s on-fail="restart" \
--group=gr_zabbix
pcs resource create rs_zabbixserver \
lsb:zabbix-server \
op monitor interval=5s on-fail="restart" \
--group=gr_zabbix
pcs resource create rs_cpu \
ocf:pacemaker:HealthCPU \
yellow_limit=50 \
red_limit=20 \
op monitor interval=60s on-fail="restart" \
--clone
==== Clone ====
pcs resource create rs_ping \
ocf:pacemaker:ping \
name=ping_set \
dampen=5s \
multiplier=100 \
use_fping=1 \
timeout=5s \
host_list="172.16.10.11 172.16.10.12 172.16.10.13 172.16.10.1" \
op monitor interval=5s on-fail="restart" \
op start interval=0 timeout=30s on-fail="restart" \
op stop interval=0 timeout=30s on-fail="block" \
--clone --wait=10s
pcs resource create rs_ping_g \
ocf:pacemaker:ping \
name=ping_g_set \
dampen=5s \
multiplier=100 \
use_fping=1 \
timeout=5s \
host_list="10.100.10.11 10.100.10.12 10.100.10.13 10.100.10.1" \
op monitor interval=5s on-fail="restart" \
op start interval=0 timeout=30s \
op stop interval=0 timeout=30s on-fail="block" \
--clone --wait=10s
pcs resource create rs_ping_pc \
ocf:pacemaker:ping \
name=ping_pc_set \
dampen=5s \
multiplier=100 \
use_fping=1 \
timeout=5s \
host_list="192.168.10.11 192.168.10.12 192.168.10.13 192.168.10.1" \
op monitor interval=5s on-fail="restart" \
--clone --wait=10s
==== リソースの制約 ====
pcs constraint location gr_zabbix \
rule \
score=-INFINITY \
not_defined ping_set or ping_set lte 100
pcs constraint location gr_zabbix \
rule \
score=-INFINITY \
not_defined ping_g_set or ping_g_set lte 100
pcs constraint location gr_zabbix \
rule \
score=-INFINITY \
not_defined ping_pc_set or ping_pc_set lte 100
pcs constraint location gr_zabbix \
rule \
score=-INFINITY \
not_defined '#health-cpu' or '#health-cpu' eq red
===== リソースグループの順番変更 =====
# pcs resource group remove gr_zabbix
# pcs resource group add gr_zabbix rs_vipcheck_g rs_vipcheck_pc rs_vip_g rs_vip_pc rs_vip_dedi rs_sourcenat_g rs_sourcenat_pc rs_sourcenat_dedi rs_web rs_zabbixserver
===== バックアップ・リストア =====
=== バクアップ ===
# pcs config backup backup.$(date '+%Y%m%d')
=== リストア ===
# pcs config restore backup.20170306.tar.bz2
{{tag>pacemaker corosync pcsd}}