所需軟件包:crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm
使用上次的虛擬機
先確定有沒有其它軟件在運行
【server1】
ps ax ##將cman等服務關掉
/etc/init.d/ldirectord stop chkconfig ldirectord off
/etc/init.d/keepalived status /etc/init.d/heartbeat status /etc/init.d/cman status ##沒關掉的關掉
若用新的虛擬機,需要安裝heartbeat、drbd、mysql-server、httpd
yum install -y pacemaker ##【server1/server2】
rpm -q corosync cd /etc/corosync/ cp corosync.conf.example corosync.conf
vim corosync.conf
修改totem段的 interface 段的bindnetaddr爲自己的網段,修改mcastaddr或mcastport不要和他人衝突
並在最後添加以下內容:
service {
name:pacemaker
ver:0
}
當是0時,會自動啓動pacemaker後臺進程,通過組件調動,而不是腳本
scp corosync.conf [email protected]:/etc/corosync
/etc/init.d/corosync start tail -f /var/log/messages ##無報錯則在server2也打開corosync服務
crm_verify -L
crm_verify -LV
此處報錯是fence的原因。
cd yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm -y
##在server2上運行命令:crm_mon 進行監控
[root@server1 ~]# crm
crm(live)# status
crm(live)# configure
crm(live)configure# show
crm(live)configure# property stonith-enabled=false
crm(live)configure# show
crm(live)configure# commit
crm(live)configure# quit
也可以用一條命令進行查看
crm configure show
crm_verify -L crm_verify -LV ##不報錯
另一種方法:可以通過加入fence解決
crm(live)configure# primitive vmfence stonith:fence_xvm params pcmk_host_map="server1.example.com:new1;server2.example.com:new2" op monitor interval=1min
[root@server1 ~]# crm
crm(live)# configure
crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.45.100 cidr_netmask=32 op monitor interval=30s
crm(live)configure# show
crm(live)configure# commit
crm(live)configure# bye
測試:
/etc/init.d/corosync stop
不能切換
/etc/init.d/corosync start
[root@server1 ~]# crm
crm(live)# configure
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# show
crm(live)configure# commit
crm(live)configure# bye
測試:
/etc/init.d/corosync stop
vip切換到server2上
/etc/init.d/corosync start ##不切回
vim /etc/httpd/conf/httpd.conf
取消921到926的註釋,將 Allow from 的值改爲127.0.0.1
scp /etc/httpd/conf/httpd.conf 172.25.45.2:/etc/httpd/conf/
[root@server1 ~]# crm
crm(live)# configure
crm(live)configure# primitive website ocf:heartbeat:apache params configfile=/etc/httpd/conf/httpd.conf op monitor interval=60s
crm(live)configure# show
crm(live)configure# collocation website-with-vip inf: website vip
crm(live)configure# commit
website和vip綁定在一個節點
crm(live)configure# delete website-with-vip
crm(live)configure# commit ##website切回server1
crm(live)configure# group apache vip website
crm(live)configure# commit
crm(live)configure# show
crm(live)configure# cd
crm(live)# node
crm(live)node# standby server2.example.com
crm(live)node# online server2.example.com
不切回server2
cat /proc/drbd drbdadm primary sqldata
mount /dev/drbd1 /var/lib/mysql/ df -h
/etc/init.d/mysqld start ##可以成功啓動mysql
/etc/init.d/mysqld stop unmount /var/lib/mysql/ drbdadm secondary sqldata
[root@server1 ~]# crm
crm(live)# resource
crm(live)resource# show
crm(live)resource# stop apache
crm(live)resource# show
crm(live)resource# cd
crm(live)# configure
crm(live)configure# show
crm(live)configure# delete apache
crm(live)configure# delete website
crm(live)configure# show
crm(live)configure# commit
crm(live)configure# Ctrl-C, leaving
這裏以新的虛擬機環境爲例,若已有相關環境,則有些步驟可省略
【server1/server2】
stonith_admin -I ##檢測fence
yum provides */fence_xvm
yum install -y fence-virt-0.2.3-15.el6.x86_64 stonith_admin -I
stonith_admin -M -a fence_xvm
mkdir /etc/cluster/
【物理機】
systemctl start fence_virtd systemctl status fence_virtd
netstat -anulp | grep :1229
virsh list
scp fence_xvm.key [email protected]:/etc/cluster/ scp fence_xvm.key [email protected]:/etc/cluster/
【server1】
[root@server1 ~]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=true
crm(live)configure# commit
crm(live)configure# primitive vmfence stonith:fence_xvm params pcmk_host_map="server1.example.com:new1;server2.example.com:new2" op monitor interval=1min
crm(live)configure# commit
crm(live)configure# bye
ip addr show
ip addr del 172.25.45.100/32 dev eth0
/etc/init.d/network stop
server1斷電重啓,vip切換到server2上
/etc/init.d/corosync start
vmfence切換到server1上
注意:若crm_mon上已出現報錯,即是修改後也不更新,可通過cleanup手動更新
[root@server1 ~]# crm
crm(live)# configure
crm(live)configure# primitive sqldata ocf:linbit:drbd params drbd_resource=sqldata op monitor interval=60s
crm(live)configure# ms sqldataclone sqldata meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
crm(live)configure# commit
crm(live)configure# bye
cat /proc/drbd
[root@server1 ~]# crm
crm(live)# configure
crm(live)configure# primitive sqlfs ocf:heartbeat:Filesystem params device=/dev/drbd1 directory=/var/lib/mysql fstype=ext4
crm(live)configure# colocation sqlfs_on_drbd inf: sqlfs sqldataclone:Master
crm(live)configure# order sqlfs-after-sqldata inf: sqldataclone:promote sqlfs:start
crm(live)configure# commit
crm(live)configure# primitive mysql lsb:mysqld op monitor interval=30s
crm(live)configure# group mygroup vip sqlfs mysql
crm(live)configure# show
crm(live)configure# commit
crm(live)configure# cd
crm(live)# node
crm(live)node# standby
crm(live)node# online
【server2】
/etc/init.d/mysqld stop
健康檢查,自動修復
/etc/init.d/network stop
server2掛掉重啓
/etc/init.d/corosync start