pacemaker+corosync实现集群管理
前言:
高可用集群,是指以減少服務中斷(如因服務器宕機等引起的服務中斷)時間為目的的服務器集群技術。簡單的說,集群就是一組計算機,它們作為一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集群的節點。
高可用集群的出現是為了減少由計算機硬件和軟件易錯性所帶來的損失。它通過保護用戶的業務程序對外不間斷提供的服務,把因軟件/硬件/人為造成的故障對業務的影響降低到最小程度。
什么是pacemaker :
Pacemaker是一個集群資源管理器。它利用集群基礎構件(OpenAIS 、heartbeat或corosync)提供的消息和成員管理能力來探測并從節點或資源級別的故障中恢復,以實現群集服務(亦稱資源)的最大可用性。
Corosync
Corosync是集群管理套件的一部分,他在傳遞信息的時候可以通過一個簡單的配置文件來定義信息傳遞的方式和協議等。也就是說,corosync是Messaging Layer集群信息層軟件,需要pacemaker資源管理器,才能構成一個完整的高可用集群。它也是運行于心跳層的開源軟件。(是集群框架引擎程序)
實驗搭建:
準備三臺7.3的虛擬機
server1:ip為172.25.5.111 作為管理節點和HA節點
server2:ip為172.25.5.112 作為HA節點
server3:ip為172.25.5.113 作為iscsi共享磁盤
三臺虛擬機關火墻,selinux狀態disabled,
首先需要配好高可用yum源(server1和server2):
yum源配好之后安裝工具(一和二都裝)
因為官方規定為了安全起見要生成ssh密鑰,給自己和server2發送一份
server2重復相同操作
發送不了你看下自己的解析寫好沒:
在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,并寫入網頁
在server1上創建vip:
pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.5.100 cidr_netmask=32 op monitor interval=30s在server2上查看
crm_mon測試:
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柵設備
在server1、server2和物理機上分別安裝fence
yum install fence-virt -y mkdir /etc/cluster在物理機上
fence_virtd -c ##配置fence Interface [virbr0]: br0 ##設備選擇br0,其他用默認生成fence_xvm.key mkdir /etc/cluster dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1把fence_xvm.key分發到HA節點,通過這個key來管理節點 scp fence_xvm.key root@server1:/etc/cluster/ scp fence_xvm.key root@server2:/etc/cluster/systemctl start fence_virtd.service在server1上識別并添加fence
注意:server1(主機名):server1(虛擬機名)
stonith_admin -I pcs stonith create vmfence fenxe_xvm pcmk_host_map="server1:server1;server2:server2" op monitor interval=1min測試:
寫壞server2的內核,通過fence重啟
pcs property set stonith-enabled=true echo c >/proc/sysrq-trigger添加iscsi網絡共享磁盤
server3作為共享磁盤
為server3添加一塊20G的虛擬磁盤
安裝共享磁盤服務并設置
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
并編寫文件
識別并登陸共享磁盤
iscsiadm -m discovery -t st -p 172.25.5.113 iscsiadm -m node -l partprobe cat /proc/partitions在共享磁盤上創建一個分區并格式化
fdisk /dev/sdb mkfs.ext4 /dev/sdb1 partprobe在server2同步并查看
partprobe cat /proc/partitions添加mysql數據庫資源
在server1和server2上分別安裝mariadb
yum install mariadb-* -y sysemctl start mariadbserver1掛載到共享磁盤并登陸數據庫
chown mysql.mysql /var/lib/mysql mount /dev/sdb1 /var/lib/mysql systemctl start mariadb mysql -uroot關閉server1的mariadb并在server2登陸數據庫
server1 systemctl stop mariadbserver2 mount /dev/sdb1 /var/lib/mysqlsystemctl start mariadbmysql -uroot測試完畢卸載并關閉mariadb
umount /var/lib/mysql systemctl stop mariadb刪除之前創建的apache組
并創建新的vip和組
在server1登陸mysql測試
mysql -uroot在server2把內核寫崩測試fence
pcs property set stonith-enabled=true echo c >/proc/sysrq-trigger解決fence資源的bug
目的:寫崩server2內核,在server2重啟過程中,資源會回到server1上,當server2重啟以后,資源也會一直在server1上
解決辦法:
刪除之前創建資源、組、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測試:
寫崩server2內核,在server2重啟過程中,資源會回到server1上,當server2重啟以后,資源也會一直在server1上
總結
以上是生活随笔為你收集整理的pacemaker+corosync实现集群管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python教程循环语句_Python教
- 下一篇: computed set 自定义参数_深