corosync + pacemaker實現叢集的高可用
Pacemaker是一個叢集資源管理器。它利用叢集基礎構件(OpenAIS、heartbeat或corosync)提供的訊息和成員管理能力來探測並從節點或資源級別的故障中恢復,以實現群集服務(亦稱資源)的最大可用性。
pacemaker和corosync,後者用於心跳檢測,前者用於資源轉移。兩個結合起來使用,可以實現對高可用架構的自動管理。 心跳檢測是用來檢測伺服器是否還在提供服務,只要出現異常不能提供服務了,就認為它掛掉了。 當檢測出伺服器掛掉之後,就要對服務資源進行轉移。 CoroSync是運行於心跳曾的開源軟體。 PaceMaker是運行於資源轉移層的開源軟體。 corosync是叢集框架引擎程式,pacemaker是高可用叢集資源管理器,crmsh是pacemaker的命令列工具。
1.在server2和server3(兩個節點,相互感應彼此的服務開啟狀態,實現雙機熱備)上安裝pacemaker和corosync首先配置yum源才能下載東西 634 yum install -y pacemaker yum install -y corosync #一般系統自帶,不用下載 636 cd /etc/corosync 637 ls 638 cp corosync.conf.example corosync.conf #複製到官方文件中 640 ls
641 vi corosync.conf totem { version: 2 secauth: off threads: 0 interface { ringnumber: 0 bindnetaddr: 172.25.17.0 #更改此處為你主機的網段 mcastaddr: 226.94.1.17 ##更改多播地址 mcastport: 5405 ttl: 1 } } 其他的不變在最後加 service{ name:pacemaker ##corosync開啟的時候pacemaker也自動載入 ver:0 }
645 scp corosync.conf [email protected]:/etc/corosync #複製到4裡面
646 /etc/init.d/corosync start 647 ps ax #可以看見pacemaker也在程序裡面
648 cat /var/log/messages #產看日至一般沒有錯誤 649 crm_verify -LV #檢查語法,會有錯誤,因為我們沒有開啟fence叢集,接下來的步驟是為了語法正確
650 cd /pub
651 ls ##此處有檢查語法的軟體
653 yum install pssh-2.3.1-2.1.x86_64.rpm crmsh-1.2.6-0.rc2.2.1.x86_64.rpm
654 rpm -q crmsh #檢查有沒有crmsh這個軟體
655 scp crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm
656 crm configure show 657 crm configure show ##此命令同上
658 crm configure property stonith-enabled=false ##把fence禁掉,語法才不會錯誤 commit #每次 更改完成後都要提交,否則不生效
659 crm_verify -LV #此時語法不會出錯
660 crm configure show primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.17.100 cidr_netmask=24 op monitor interval=1min commit
在server4裡面監控 可以看見vip crm_mon
661 /etc/init.d/corosync stop ## crm node stanby也是停掉服務的意思 在server4裡面監控 可以看見vip crm_mon 但是server1停掉了,大家都聽掉了,不符合常規
662 /etc/init.d/corosync start 663 crm configure property no-quorum-policy=ignore commit 664 /etc/init.d/corosync stop ##server1停掉了,但server4還在執行中
在server1做fence和haproxy 666 cd /etc/corosync/ 667 ls 668 vi corosync.conf 669 vi /etc/haproxy/haproxy.cfg 將前端公共節點 bind 改為 *:80 name clear 註釋 use_backend dynamic if write 將兩個後端節點榮為一體 backend static balance roundrobin server dynsrv2 172.25.17.13:80 check inter 1000 server dynsrv1 172.25.17.12:80 check inter 1000 開啟server2和server3的httpd 清空裡面的環境,只有index.html裡 670 ps ax ##檢視程序 671 cd /pub 672 ls 673 cd haproxy-1.6.11 676 ls 680 cd rpmbuild/ 681 ls 682 cd RPMS/ 683 ls 684 cd x86_64/ 685 ls scp haproxy-1.6.11-1.x86_64.rpm [email protected]:/pub #在server4/pub裡面進行下載haproxy 687 cd /etc/haproxy/ 688 ls 689 scp haproxy.cfg [email protected]:/etc/haproxy #把文加考到server4裡面,進入/etc/haproxy裡面看以下 開啟haproxy服務 690 crm configure primitive haproxy lsb:haproxy op monitor interval=30s ##去監控裡面看,兩者vip和haproxy是分離的,需要做下面的步驟 commit group hagroup vip haproxy commit 在server4裡面/etc/init.d/corosync stop 可以看見轉換了
691 ps ax 692 /etc/init.d/corosync status 693 /etc/init.d/corosync start 695 /etc/init.d/haproxy start
##加fence,看有沒有fence這個軟體包 703 rpm -q fence-virt yum install fence-virt-* 704 stonith_admin -I 705 stonith_admin -M -a fence_xvm ##在真機開啟 systemctl status fence_virtd systemctl start fence_virtd cat /etc/fence_virt.conf 看是不是br0 brctl show ##主要看是不是br0 706 cd /etc/cluster/ ##server4裡面也要進 707 ls ##有一個fence_xvm.key這個檔案 708 crm configure show primitive vmfence stonith:fence_xvm params pcmk_host_map="server1:vm1;server4:vm4" op monitor interval=1min property stonith-enabled=true ##開啟fence服務 commit #監控裡面vip haproxy vmfence 都有