corosync是高可用集羣中的Cluster Messaging Layer(集羣信息層),是主要傳遞發集羣信息與心跳信息的,並沒有資源管理功能,資源管理還得依賴於上層的crm(Cluster resource Manager,集羣資源管理器),最著名的資源管理器,就是pacemaker,現在corosync+pacemaker成了高可用集羣中的最佳組合.
pacemaker的配置命令行接口有兩種,一是crmsh,另一個是pcs,這裏主裏以crmsh的使用爲例
實例:
準備兩臺主機192.168.0.188, 192.168.0.150 環境都爲CentOS7.2
準備工作:
1.時間同步ntp
[root@node3 ~]# ntpdate 192.168.0.111
20 Aug 10:29:12 ntpdate[4861]: step time server 192.168.0.111 offset -48.870862 sec
###都使用同步至時間服務器
[root@node3 ~]# crontab -e
*/5 * * * * /usr/sbin/ntpdate 192.168.0.111 &> /dev/null ###每5分鐘與時間服務器同步一次
2.dns解析文件需能互相解析主機名
配置/etc/hosts文件實現
[root@node1 ~]# cat /etc/hosts
192.168.0.188 node1.xiao.com node1
192.168.0.150 node2.xiao.com node2
兩臺都需配置。
3.主機名需與配置文件保持一致,修改主機名
[root@node1 ~]# hostname set-hostname node1.xiao.com
至此開始安裝
[root@node1 ~]# yum install pacemaker -y ###安裝會依賴於corosync
[root@node1 ~]# cd /etc/corosync/
[root@node1 corosync]# cp corosync.conf.example corosync.conf ###使用此示例模板爲配置文件
totem{}:節點間的通信方式,通信協議,加密與否...
logging{}:日誌系統,日誌記錄方式及存儲位置
quorum{}:投票系統
nodelist{}:節點列表
[root@node1 dylan]# corosync-keygen -l ###傳遞心跳信息時的預共享密鑰,生成密鑰時需要用到 /dev/random 一共需要1024位的長度,此處使用簡單方式生成-l
生成的密鑰文件權限爲400
[root@node1 corosync]# grep -v "^[[:space:]]*#" corosync.conf |grep -v "^$" ###配置示例
totem {
version: 2
cluster_name: mycluster
crypto_cipher: aes128
crypto_hash: sha1
interface {
ringnumber: 0
bindnetaddr: 192.168.0.0
mcastaddr: 239.255.10.1
mcastport: 5405
ttl: 1
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: yes
debug: off
timestamp: on
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
}
nodelist {
node {
ring0_addr: 192.168.0.188
nodeid: 1
}
node {
ring0_addr: 192.168.0.150
nodeid: 2
}
}
[root@node1 corosync]# scp corosync.conf authkey root@node2:/etc/corosync/ ###相同的配置文件複製一份到node2 節點
[root@node1 ~]# systemctl start corosync.service
[root@node1 ~]# ss -unl
UNCONN 0 0 239.255.10.1:5405 *:*
UNCONN 0 0 192.168.0.188:5405 *:*
[root@node1 ~]# tail /var/log/cluster/corosync.log ###查看日誌信息
Aug 21 08:14:32 [19049] node1.xiao.com corosync notice [QUORUM] Members[1]: 1
Aug 21 08:14:32 [19049] node1.xiao.com corosync notice [MAIN ] Completed service synchr
onization, ready to provide service.Aug 21 08:15:09 [19049] node1.xiao.com corosync notice [TOTEM ] A new membership (192.16
8.0.150:20) was formed. Members joined: 2Aug 21 08:15:09 [19049] node1.xiao.com corosync notice [QUORUM] This node is within the
primary component and will provide service.Aug 21 08:15:09 [19049] node1.xiao.com corosync notice [QUORUM] Members[2]: 2 1
Aug 21 08:15:09 [19049] node1.xiao.com corosync notice [MAIN ] Completed service synchr
onization, ready to provide service.
[root@node1 corosync]# systemctl start pacemaker.service ###啓動pacemaker
[root@node1~]# crm_mon###查看狀態
Stack: corosync
Current DC: node1.xiao.com (version 1.1.15-11.el7_3.5-e174ec8) - partition with quorum
Last updated: Mon Aug 21 08:27:10 2017 Last change: Mon Aug 21 08:26:03 2017 by
hacluster via crmd on node1.xiao.com
2 nodes and 0 resources configured
Online: [ node1.xiao.com node2.xiao.com ] ###兩臺都在線
No active resources
要使用crmsh
[root@node1 ~]# yum localinstall crmsh-2.1.4-1.1.x86_64.rpm pssh-2.3.1-4.2.x86_64.rpm python-pssh-2.3.1-4.2.x86_64.rpm
###安裝這三個包,crmsh會依賴於pssh-2.3.1-4.2.x86_64.rpm python-pssh-2.3.1-4.2.x86_64.rpm