pacemaker+corosync

Pacemakerhtml

Server1 172.25.23.1節點1node

Server2 172.25.23.2節點2linux

Server3 172.25.23.3作存儲分離的web

VIP 172.25.23.100shell

Selinux iptables 關掉 作解析及時間同步apache

 

1.安裝軟件vim

將原來作的實驗所有停掉防止干擾如keepalived.....安全

Server1 server2 獲取安裝包  ssh

  crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  pssh-2.3.1-2.1.x86_64.rpmide

  安裝好pacemaker後就沒有crm shell命令行工具咱們得單獨安裝即yum installcrmsh

yum install -y crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm     

yum install -y pacemaker corosync

 

2.修改配置文件

cd /etc/corosync

cp corosync.conf.example corosync.conf

vim corosync.conf

---->

compatibility: whitetank

totem {

        version: 2# totme的版本

        secauth: off# 安全認證

        threads: 0# 安全認證開啓並行線程數

        interface {

                ringnumber: 0# 迴環數

                bindnetaddr: 172.25.23.0 # 網段地址

                mcastaddr: 226.94.1.1# 心跳信息組播地址

                mcastport: 5428 # 同一個廣播域的要不一樣

                ttl: 1

        }

}

 

logging {

        fileline: off

        to_stderr: no

        to_logfile: yes

        to_syslog: yes

        logfile: /var/log/cluster/corosync.log

        debug: off

 timestamp: on

        logger_subsys {

                subsys: AMF

                debug: off

        }

}

 

amf {

        mode: disabled

}

service {

        name: pacemaker# 添加的服務名

        ver: 0# 0:啓動corosync時會自動啓動pacemaker以插件的方式來啓動不是以腳本的方式來啓動,1:不會自動啓動

 

}

 

scp corosync root@172.25.23.2:/etc/corosync     

/etc/init.d/corosync start# server1server2都啓動服務

tail -f /var/log/messages

 

3.在物理機上配置fence_xvm.key並啓動服務查看1229是否啓動

  systemctl start fence_virtd

  server1server2

yum install -y fence-virt

stonith_admin -I #查看安裝的fence相關軟件主要有fence_xvm

wKiom1fVKP2D7cu_AAAvdQgLG_4474.png 

stonith_admin -a fence_xvm -M #查看相關的配置內容

 

 

4.基本指令

crm_mon  #查看在線狀況

wKiom1fVKP7SokoQAACQmMSnRoY373.png

crm_verify  -LV #檢測是否有語法錯誤

crm status#查看狀態

crm #輸入crm命令進入資源配置模式 

crm(live)# help #輸入help查看一下會出現不少子命令

crm(live)# configure #輸入configure就會進入configure模式下

crm(live)configure# help node #輸入help加你想了解的任意命令就會顯示該命令的使用幫助與案例

crm(live)# standby#令該節點掛掉

 

注簡單說不會的命令help一下

 

5.配置高可用的Web集羣

(1)作映射   

# commit提交配置的資源在命令行配置資源時只要不用commit提交配置好資源就不會生效一但用commit命令提交就會寫入到cib.xml的配置文件中

 

[root@server1 corosync]# crm

wKioL1fVKQGjCPg1AAD8sLUAqnY894.png 

(2)添加VIP

wKioL1fVKQKxlwqEAABTevWJA2Y899.pngwKiom1fVKQOBW8aSAAEa_QMdEa0434.png 

[root@server1 cluster]# /etc/init.d/corosync restart

 

(3)當一臺機器掛掉以後另外一臺接管VIP

[root@server1 cluster]# crm

wKioL1fVKQTDB6PQAABC2PSU0v0330.pngwKiom1fVKQjTcK-gAAEdAakLNPs562.png 

 

vim /etc/httpd/conf/httpd.conf

wKiom1fVKQni0KD7AABQ7u-rXLI870.png

(4)添加apache服務

[root@server1 cluster]# crm

wKioL1fVKQvQRD0vAAClPh4yxms884.png 

# warnning爲設置的時間過長

[root@server1 cluster]# crm_mon

wKioL1fVKQvjjaPfAABXlUa8vOk177.png 

(5)VIP 和服務不在同一個機子上須要進行綁定將website服務和 VIP 兩個綁定

wKiom1fVKQywAlH6AAAzvwLBcT0075.png 

wKioL1fVKQ6SRP9_AAFyDNKX7aQ767.png 

 

[root@server1 cluster]# /etc/init.d/corosync resatrt

[root@server1 cluster]# crm_mon

wKiom1fVKRGxGz-gAAB8FddYqDg542.png 

測試Server2 down了以後由server1接管

[root@server2 corosync]# /etc/init.d/corosync stop

 

wKioL1fVKRTAKBRgAAB37ELLZSo541.png 

 

 

3.存儲分離iscsi

1.在服務端新建一個新的磁盤

vim /etc/tgt/targerts.conf

......

<target iqn.2016-07.com.example:storage1>

    backing-store /dev/vda1

    initiator-address 172.25.23.1

    initiator-address 172.25.23.2

</target>

 

......

 

tgt-admin -s

......

       Backing store type: rdwr

            Backing store path: /dev/vda1

            Backing store flags:

    Account information:

    ACL information:

        172.25.23.1

        172.25.23.2

 

2.兩邊同步server1 server2

[root@server1 cluster]# iscsiadm -m discovery -t st -p 172.25.23.3

Starting iscsid:                                           [  OK  ]

172.25.23.3:3260,1 iqn.2016-07.com.example:storage1

[root@server1 cluster]# iscsiadm -m node -l

Logging in to [iface: default, target: iqn.2016-07.com.example:storage1, portal: 172.25.23.3,3260] (multiple)

Login to [iface: default, target: iqn.2016-07.com.example:storage1, portal: 172.25.23.3,3260] successful.

 

[root@server1 cluster]# fdisk -l  #檢測出多了一個sdb

[root@server1 cluster]# fdisk /dev/sdb

......

[root@server1 cluster]# partprobe

[root@server1 cluster]# cat /proc/partpitions

......

  8       16    8388544 sdb

  8       17    8387568 sdb1 #發現 sdb1

[root@server1 cluster]# mkfs.ext4 /dev/sdb1

 

(2)添加存儲

[root@server1 cluster]# crm

wKiom1fVKRShnAdWAABIyTLaKwc558.png 

[root@server1 cluster]# crm_mon

wKiom1fVKRXAZ8_sAADNiqo-h3A990.png 

(3) VIP 服務 存儲不在一臺機子上進行綁定設置新的資源組apacheserviceVIP webdata website綁定在一塊兒而且肯定前後的啓動順序

 

wKioL1fVKRaiCzpNAABGiBi8S7s869.pngwKioL1fVKRqRG0EbAAG8blm1l9E532.png

[root@server1 cluster]# crm_mon

 

wKiom1fVKRuyhMi0AADJe3O4avM883.png 

 

(4)測試

在被掛載的主機上添加測試頁

echo hello > /var/www/html/index.html

訪問的時候會一直訪問這個測試頁無論如何刷新服務如何中止

 

問題

wKioL1fVKRvhZf2KAABgyD3ZUFw599.png 

出現這種狀況時注意啓動物理機中的fence虛擬機中再從新啓動corosync

 

補充

從上面的信息中能夠看出viphttpd有可能會分別運行於兩個節點上這對於經過此IP提供Web服務的應用來講是不成立的即此二者資源必須同時運行在某節點上。有兩種方法能夠解決一種是定義組資源將viphttpd同時加入一個組中能夠實現將資源運行在同節點上另外一種是定義資源約束可實現將資源運行在同一節點上。

定義組資源 group webservice vip httpd

定義資源約束

crm(live)configure #colocation httpd-with-ip INFUNTY: httpd vip

接着咱們還得確保httpd在某節點啓動以前得先啓動vip這能夠使用以下命令實現

crm(live)configure# order httpd-after-vip mandatory: vip httpd 

 

 

刪除組資源操做

crm(live)# resource 

crm(live)resource# show  

crm(live)resource# stop webservice  #中止資源 

crm(live)resource# show 

crm(live)resource# cleanup webservice  #清理資源 

crm(live)# configure 

crm(live)configure# delete  

crm(live)configure# delete webservice #刪除組資源 

crm(live)configure# commit

 

定義約束使資源運行在同一節點上。首先咱們來回憶一下資源約束的相關知識資源約束則用以指定在哪些羣集節點上運行資源以何種順序裝載資源以及特定資源依賴於哪些其它資源。pacemaker共給咱們提供了三種資源約束方法

Resource Location資源位置定義資源能夠、不能夠或儘量在哪些節點上運行

Resource Collocation資源排列排列約束用以定義集羣資源能夠或不能夠在某個節點上同時運行

Resource Order資源順序順序約束定義集羣資源在節點上啓動的順序

定義約束時還須要指定分數。各類分數是集羣工做方式的重要組成部分。其實從遷移資源到決定在已降級集羣中中止哪些資源的整個過程是經過以某種方式修改分數來實現的。分數按每一個資源來計算資源分數爲負的任何節點都沒法運行該資源。在計算出資源分數後集羣選擇分數最高的節點。INFINITY無窮大目前定義爲 1,000,000。加減無窮大遵循如下3個基本規則

任何值 + 無窮大 = 無窮大

任何值 - 無窮大 = -無窮大

無窮大 - 無窮大 = -無窮大

定義資源約束時也能夠指定每一個約束的分數。分數表示指派給此資源約束的值。分數較高的約束先應用分數較低的約束後應用。經過使用不一樣的分數爲既定資源建立更多位置約束能夠指定資源要故障轉移至的目標節點的順序。所以對於前述的viphttpd可能會運行於不一樣節點的問題能夠經過如下命令來解決

crm(live)configure #colocation httpd-with-ip INFUNTY: httpd vip

接着咱們還得確保httpd在某節點啓動以前得先啓動vip這能夠使用以下命令實現

crm(live)configure# order httpd-after-vip mandatory: vip httpd 

此外因爲HA集羣自己並不強制每一個節點的性能相同或相近。因此某些時候咱們可能但願在正常時服務總能在某個性能較強的節點上運行這能夠經過位置約束來實現

crm(live)configure# location prefer-node1 vip node_pref::200: node1

本站公眾號
   歡迎關注本站公眾號,獲取更多信息