pacemaker+corosync实现集群管理
前言:
高可用集群,是指以減少服務(wù)中斷(如因服務(wù)器宕機(jī)等引起的服務(wù)中斷)時(shí)間為目的的服務(wù)器集群技術(shù)。簡(jiǎn)單的說(shuō),集群就是一組計(jì)算機(jī),它們作為一個(gè)整體向用戶提供一組網(wǎng)絡(luò)資源。這些單個(gè)的計(jì)算機(jī)系統(tǒng)就是集群的節(jié)點(diǎn)。
高可用集群的出現(xiàn)是為了減少由計(jì)算機(jī)硬件和軟件易錯(cuò)性所帶來(lái)的損失。它通過(guò)保護(hù)用戶的業(yè)務(wù)程序?qū)ν獠婚g斷提供的服務(wù),把因軟件/硬件/人為造成的故障對(duì)業(yè)務(wù)的影響降低到最小程度。
什么是pacemaker :
Pacemaker是一個(gè)集群資源管理器。它利用集群基礎(chǔ)構(gòu)件(OpenAIS 、heartbeat或corosync)提供的消息和成員管理能力來(lái)探測(cè)并從節(jié)點(diǎn)或資源級(jí)別的故障中恢復(fù),以實(shí)現(xiàn)群集服務(wù)(亦稱資源)的最大可用性。
Corosync
Corosync是集群管理套件的一部分,他在傳遞信息的時(shí)候可以通過(guò)一個(gè)簡(jiǎn)單的配置文件來(lái)定義信息傳遞的方式和協(xié)議等。也就是說(shuō),corosync是Messaging Layer集群信息層軟件,需要pacemaker資源管理器,才能構(gòu)成一個(gè)完整的高可用集群。它也是運(yùn)行于心跳層的開(kāi)源軟件。(是集群框架引擎程序)
實(shí)驗(yàn)搭建:
準(zhǔn)備三臺(tái)7.3的虛擬機(jī)
server1:ip為172.25.5.111 作為管理節(jié)點(diǎn)和HA節(jié)點(diǎn)
server2:ip為172.25.5.112 作為HA節(jié)點(diǎn)
server3:ip為172.25.5.113 作為iscsi共享磁盤
三臺(tái)虛擬機(jī)關(guān)火墻,selinux狀態(tài)disabled,
首先需要配好高可用yum源(server1和server2):
yum源配好之后安裝工具(一和二都裝)
因?yàn)楣俜揭?guī)定為了安全起見(jiàn)要生成ssh密鑰,給自己和server2發(fā)送一份
server2重復(fù)相同操作
發(fā)送不了你看下自己的解析寫(xiě)好沒(méi):
在server1上
pcs cluster auth server1 server2 pcs cluster setup --name mycluster server1 server2 pcs cluster start --all pcs cluster enable --all pcs status pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore crm_verify -L pcs resource list pcs resource standards在server1和server2上安裝httpd,并寫(xiě)入網(wǎng)頁(yè)
在server1上創(chuàng)建vip:
pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.5.100 cidr_netmask=32 op monitor interval=30s在server2上查看
crm_mon測(cè)試:
pcs cluster stop server1 crm_mon pcs cluster start server1在sever1上添加httpd資源和組
pcs resource create apache systemd:httpd op monitor interval=1min pcs resource group add apache_group vip apache crm_mon pcs constraint order vip then apache添加fence柵設(shè)備
在server1、server2和物理機(jī)上分別安裝fence
yum install fence-virt -y mkdir /etc/cluster在物理機(jī)上
fence_virtd -c ##配置fence Interface [virbr0]: br0 ##設(shè)備選擇br0,其他用默認(rèn)生成fence_xvm.key mkdir /etc/cluster dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1把fence_xvm.key分發(fā)到HA節(jié)點(diǎn),通過(guò)這個(gè)key來(lái)管理節(jié)點(diǎn) scp fence_xvm.key root@server1:/etc/cluster/ scp fence_xvm.key root@server2:/etc/cluster/systemctl start fence_virtd.service在server1上識(shí)別并添加fence
注意:server1(主機(jī)名):server1(虛擬機(jī)名)
stonith_admin -I pcs stonith create vmfence fenxe_xvm pcmk_host_map="server1:server1;server2:server2" op monitor interval=1min測(cè)試:
寫(xiě)壞server2的內(nèi)核,通過(guò)fence重啟
pcs property set stonith-enabled=true echo c >/proc/sysrq-trigger添加iscsi網(wǎng)絡(luò)共享磁盤
server3作為共享磁盤
為server3添加一塊20G的虛擬磁盤
安裝共享磁盤服務(wù)并設(shè)置
yum install targetcli -y targetcli /backstores/block create my_disk1 /dev/vdaiscsi/ create iqn.2019-06.com.example:server3iscsi/iqn.2019-06.com.cc.example:server3:/tpg1/luns create /backstores/block/my_disk1 iscsi/iqn.2019-06.com.cc.example:server3/tpg1/acls create iqn.2019-06.com.example:client exit在server1和server2上安裝iscsi
并編寫(xiě)文件
識(shí)別并登陸共享磁盤
iscsiadm -m discovery -t st -p 172.25.5.113 iscsiadm -m node -l partprobe cat /proc/partitions在共享磁盤上創(chuàng)建一個(gè)分區(qū)并格式化
fdisk /dev/sdb mkfs.ext4 /dev/sdb1 partprobe在server2同步并查看
partprobe cat /proc/partitions添加mysql數(shù)據(jù)庫(kù)資源
在server1和server2上分別安裝mariadb
yum install mariadb-* -y sysemctl start mariadbserver1掛載到共享磁盤并登陸數(shù)據(jù)庫(kù)
chown mysql.mysql /var/lib/mysql mount /dev/sdb1 /var/lib/mysql systemctl start mariadb mysql -uroot關(guān)閉server1的mariadb并在server2登陸數(shù)據(jù)庫(kù)
server1 systemctl stop mariadbserver2 mount /dev/sdb1 /var/lib/mysqlsystemctl start mariadbmysql -uroot測(cè)試完畢卸載并關(guān)閉mariadb
umount /var/lib/mysql systemctl stop mariadb刪除之前創(chuàng)建的apache組
并創(chuàng)建新的vip和組
在server1登陸mysql測(cè)試
mysql -uroot在server2把內(nèi)核寫(xiě)崩測(cè)試fence
pcs property set stonith-enabled=true echo c >/proc/sysrq-trigger解決fence資源的bug
目的:寫(xiě)崩server2內(nèi)核,在server2重啟過(guò)程中,資源會(huì)回到server1上,當(dāng)server2重啟以后,資源也會(huì)一直在server1上
解決辦法:
刪除之前創(chuàng)建資源、組、fence
重新添加資源、組、fence
pcs resource create vip1 ocf:heartbeat:IPaddr2 ip=172.25.5.200 cidr_netmask=32 op monitor interval=30s pcs resource create mysql_data ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mysql fstype=xfs op monitor interval=30s pcs resource create mariadb systemd:mariadb op monitor interval=1min pcs resource group add mysql_group vip1 mariadb更改resource-stickiness值
pcs resource defaults pcs resource defaults resource-stickiness=100 pcs resource defaults添加fence并再次更改resource-stickiness值
pcs stonith create vmfence fenxe_xvm pcmk_host_map="server1:server1;server2:server2" op monitor interval=1min pcs resource defaults resource-stickiness=0 pcs resource defaults pcs property set stonith-enabled=true測(cè)試:
寫(xiě)崩server2內(nèi)核,在server2重啟過(guò)程中,資源會(huì)回到server1上,當(dāng)server2重啟以后,資源也會(huì)一直在server1上
總結(jié)
以上是生活随笔為你收集整理的pacemaker+corosync实现集群管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python教程循环语句_Python教
- 下一篇: computed set 自定义参数_深