====== 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}}