1. 程式人生 > >corosync + pacemaker實現叢集的高可用

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  

[email protected]:/pub    ##把這兩個軟體包考到4裡面去

  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  都有