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# server1和server2都啓動服務
tail -f /var/log/messages
3.在物理機上配置fence_xvm.key並啓動服務查看1229是否啓動
systemctl start fence_virtd
在server1和server2
yum install -y fence-virt
stonith_admin -I #查看安裝的fence相關軟件主要有fence_xvm
stonith_admin -a fence_xvm -M #查看相關的配置內容
4.基本指令
crm_mon #查看在線狀況
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
(2)添加VIP
[root@server1 cluster]# /etc/init.d/corosync restart
(3)當一臺機器掛掉以後另外一臺接管VIP
[root@server1 cluster]# crm
vim /etc/httpd/conf/httpd.conf
(4)添加apache服務
[root@server1 cluster]# crm
# warnning爲設置的時間過長
[root@server1 cluster]# crm_mon
(5)VIP 和服務不在同一個機子上須要進行綁定將website服務和 VIP 兩個綁定
[root@server1 cluster]# /etc/init.d/corosync resatrt
[root@server1 cluster]# crm_mon
測試Server2 down了以後由server1接管
[root@server2 corosync]# /etc/init.d/corosync stop
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
[root@server1 cluster]# crm_mon
(3) VIP 服務 存儲不在一臺機子上進行綁定設置新的資源組apacheservice將VIP webdata website綁定在一塊兒而且肯定前後的啓動順序
[root@server1 cluster]# crm_mon
(4)測試
在被掛載的主機上添加測試頁
echo hello > /var/www/html/index.html
訪問的時候會一直訪問這個測試頁無論如何刷新服務如何中止
問題
出現這種狀況時注意啓動物理機中的fence虛擬機中再從新啓動corosync
補充
從上面的信息中能夠看出vip和httpd有可能會分別運行於兩個節點上這對於經過此IP提供Web服務的應用來講是不成立的即此二者資源必須同時運行在某節點上。有兩種方法能夠解決一種是定義組資源將vip與httpd同時加入一個組中能夠實現將資源運行在同節點上另外一種是定義資源約束可實現將資源運行在同一節點上。
定義組資源 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個基本規則
任何值 + 無窮大 = 無窮大
任何值 - 無窮大 = -無窮大
無窮大 - 無窮大 = -無窮大
定義資源約束時也能夠指定每一個約束的分數。分數表示指派給此資源約束的值。分數較高的約束先應用分數較低的約束後應用。經過使用不一樣的分數爲既定資源建立更多位置約束能夠指定資源要故障轉移至的目標節點的順序。所以對於前述的vip和httpd可能會運行於不一樣節點的問題能夠經過如下命令來解決
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