目的
建置雙node Active/Passive HA叢集
- Ubuntu 17.10
 - Corosync
 - Pacemaker
 - echo server
 
硬體配置
ms1 10.130.51.51 ms2 10.142.51.52
架設corosync + pacemaker
安裝軟體
sudo apt-get install pacemaker
產生金鑰用
sudo apt-get install haveged
ms1產生金鑰
sudo corosync-keygen
把/etc/corosync/authkey複製同份到ms2,權限400 root:root
/etc/corosync/corosync.conf
設定有點多,我參考C.2.1. Enabling Pacemaker For Corosync 2.x
如下,採用udp單播連線
totem {
        version: 2
        cluster_name: debian
        token: 3000
        token_retransmits_before_loss_const: 10
        clear_node_high_bit: yes
        secauth: off
        crypto_cipher: none
        crypto_hash: none
        transport: udpu
        interface {
                ringnumber: 0
                bindnetaddr: 10.130.51.51
                broadcast: yes
                mcastport: 5405
                ttl: 1
        }
}
logging {
        fileline: off
        to_stderr: no
        to_logfile: no
        to_syslog: yes
        syslog_facility: daemon
        debug: off
        timestamp: on
        logger_subsys {
                subsys: QUORUM
                debug: off
        }
}
nodelist {
        node {
                ring0_addr: 10.130.51.51
                nodeid: 1
        }
        node {
                ring0_addr: 10.130.51.52
                nodeid: 2
        }
}
quorum {
        provider: corosync_votequorum
        two_node: 1
}
service {
  name: pacemaker
  ver: 1
}
/etc/default/corosync START=yes
corosync服務啟動
安裝好後corosync就被啟動了,要讓他重啟 service corosync restart
就能看到對方了
root@ms1:~# corosync-cmapctl | grep members
runtime.totem.pg.mrp.srp.members.1.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.1.ip (str) = r(0) ip(10.130.51.51)
runtime.totem.pg.mrp.srp.members.1.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.1.status (str) = joined
runtime.totem.pg.mrp.srp.members.2.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.2.ip (str) = r(0) ip(10.130.51.52)
runtime.totem.pg.mrp.srp.members.2.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.2.status (str) = joined
pacemaker服務啟動
接著執行pacemaker相關設定
update-rc.d pacemaker defaults 20 01
service pacemaker start
就能在pacemaker看到node串起來
root@ms1:~# crm status
Stack: corosync
Current DC: ms1 (version 1.1.16-94ff4df) - partition with quorum
Last updated: Fri Jan 19 02:55:28 2018
Last change: Fri Jan 19 02:52:19 2018 by hacluster via crmd on ms1
2 nodes configured
0 resources configured
Online: [ ms1 ms2 ]
No resources
root@ms2:/etc/corosync# crm status
Stack: corosync
Current DC: ms1 (version 1.1.16-94ff4df) - partition with quorum
Last updated: Fri Jan 19 02:55:23 2018
Last change: Fri Jan 19 02:54:35 2018 by hacluster via crmd on ms1
2 nodes configured
0 resources configured
Online: [ ms1 ms2 ]
No resources
作2nodes特殊設定
root@ms2:/etc/corosync# crm configure property stonith-enabled=false
root@ms2:/etc/corosync# crm configure property no-quorum-policy=ignore
新增資源
實驗用的簡單service
https://github.com/xnum/echo_service
sudo apt install libuv1-dev make && sudo make install
設定資源
` crm configure primitive ha-echod lsb:echod op monitor interval=10s crm status`
設定
root@ms1:~/echo# crm config show
node 1: ms1
node 2: ms2
primitive ha-echod lsb:echod \
        op start interval=0s timeout=5s \
        op stop interval=0s timeout=5s \
        op monitor interval=10s on-fail=standby \
        meta target-role=Started migration-threshold=3 failure-timeout=15s
property cib-bootstrap-options: \
        have-watchdog=false \
        dc-version=1.1.16-94ff4df \
        cluster-infrastructure=corosync \
        cluster-name=debian \
        stonith-enabled=false \
        no-quorum-policy=ignore \
        last-lrm-refresh=1516341959
加上Virtual IP
crm configure primitive VIP ocf:IPaddr2 params ip=10.130.51.1 nic=eth1 op monitor interval=10s
嘗試ping 10.130.51.1
把兩個資源綁定在一起
crm configure group ha-group VIP ha-echod
Stack: corosync
Current DC: ms1 (version 1.1.16-94ff4df) - partition with quorum
Last updated: Fri Jan 19 07:11:21 2018
Last change: Fri Jan 19 07:11:18 2018 by root via cibadmin on ms1
2 nodes configured
2 resources configured
Online: [ ms1 ms2 ]
Active resources:
 Resource Group: ha-group
     VIP        (ocf::heartbeat:IPaddr2):       Started ms2
     ha-echod   (lsb:echod):    Started ms2
最後設定
ms1: ms
ms2: ms
primitive VIP IPaddr2 \
        params ip=10.130.51.1 nic=eth1 \
        op monitor interval=10s
primitive ha-echod lsb:echod \
        op start interval=0s timeout=5s \
        op stop interval=0s timeout=5s \
        op monitor interval=10s on-fail=standby \
        meta target-role=Started migration-threshold=3 failure-timeout=15s
group ha-group VIP ha-echod
property cib-bootstrap-options: \
        have-watchdog=false \
        dc-version=1.1.16-94ff4df \
        cluster-infrastructure=corosync \
        cluster-name=debian \
        stonith-enabled=false \
        no-quorum-policy=ignore
嘗試換node啟動
crm node standby ms2
http://linuxlasse.net/linux/howtos/Pacemaker_and_Corosync_HA_-_2_Node_setup
https://www.digitalocean.com/community/tutorials/how-to-create-a-high-availability-setup-with-corosync-pacemaker-and-floating-ips-on-ubuntu-14-04
