環境需求:rhel6以上,iptablss與selinx disabled,
新虛擬機(未進行其他集羣操作的)server1與server2爲兩節點
Instructor爲服務機(M端)。
集羣管理之Heartbeat
Heartbeat 項目是 Linux-HA 工程的一個組成部分,它實現了一個高可用集羣系統。心跳服務和集羣通信是高可用集羣的兩個關鍵組件,在 Heartbeat 項目裏,由 heartbeat 模塊實現了這兩個功能。heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網絡鏈路和串口進行,而且支持冗 餘鏈路,它們之間相互發送報文來告訴對方自己當前的狀態,如果在指定的時間內未收到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運 行在對方主機上的資源或者服務。
兩節點上安裝hearbeat-3.0.4-2.e16.x86_64 heartbeat-llibs-3.0.4-2.e16.x86_64 heartbeat-devel-3.0.4-e16.x86_64 ldirectord-3.9.5-3.1.x86_64、mysql-server。
在srever1上,
#vim /etc/ha.d/ha.cf
logfile /var/log/ha-log #日誌文件
keepalive 2 #心跳時間
deadtime 30 #無響應時間
warntime 10 #警告時間
initdead 60 #守護進程啓動後主機啓動資源需要等待的時間
udpport 694 #端口
cast eth0 #使用物理網卡eth0傳輸心跳消息
auto_failback on #設置當主機修復後服務是否回返到主機
node server2.example.com node server3.example.com #設置節點,主機在上副機在下
ping 172.25.254.55 #判斷主副機的網絡狀況
respawn hacluster /usr/lib64/heartbeat/ipfailapiauth ipfail gid=haclient uid=hacluster #指定用戶和用戶組
添加2個node,後面接節點的hostname
#vim /etc/ha.d/haresource
在最後添加server1.example.com IPaddr::172.25.0.100/24/eth0 Filesystem::/dev/sda1::/var/lib/mysql::ext4 mysqld
Server1.example.com: 主節點
IPaddr::172.25.254.100/24/eth0: 虛擬IP
Filesystem::/dev/sda1::/var/lib/mysql::ext4 : 文件系統
Mysql: 服務
#vim authkeys ,取消auth 1 、1 crc的註釋 //crc爲明文(不加密)。
#chmod 600 authkeys.
將server的遠端存儲分區並格式化爲ext4,分區由heartbeat同步到server2中。
將這三個文件複製給server2。兩節點都啓動heartbeat服務。
#mount /dev/sda1/ /mnt
#cp -rp /var/lib/mysql/* /mnt
#chown mysql.mysql /mnt
#umount /mnt
若server1的mysqld或者heartbeat停止,則server2mysql啓動,vip加在server2上,這就是集羣的高可用性。
集羣管理之DRBD
DRBD(Distributed Replicated Block Device分佈式複製塊設備),DRBD 號稱是 “網絡 RAID”,開源軟件,由
LINBIT 公司開發。DRBD實際上是一種塊設備的實現,主要被用於Linux平臺下的高可用(HA)方案之
中。他有內核模塊和相關程序而組成,通過網絡通信來同步鏡像整個設備,有點類似於一個網絡
RAID-1的功能。也就是說當你將數據寫入本地的DRBD設備上的文件系統時,數據會同時被髮送到網絡
中的另外一臺主機之上,並以完全相同的形式記錄在文件系統中。本地節點與遠程節點的數據可以保證
實時的同步,並保證IO的一致性。所以當本地節點的主機出現故障時,遠程節點的主機上還會保留有一
份完全相同的數據,可以繼續使用,以達到高可用的目的
安裝
首先關閉兩節點的iscsi,並本地添加4g的存儲。
在節點1上,解壓drbd-8.4.3
#./configure --enable-spec --with-km
#yum install flex rpm-build kernel-devel//解決依賴性
#cp drbd-8.4.3.tar.gz rpmbuild/SOURCES
#rpmbuild -bb drbd.spec drbd-km.spec //創建rpm包
#rpm -ivh /root/rpmbuild/RPMS/x86_64/*
複製這些rpm到server2上安裝。
在server1上,/etc/drbd.d/drbd.conf, 可以看到drbd包含drbd.d/下所有以.res結尾的文件。因此可以在/etc/drbd.d下創建example.res文件,對當前集羣進行配置
resource sqldata { //源爲sqldata
meta-disk internal; //磁盤爲內部的
device /dev/drbd1; //設備爲/dev/drbd1
syncer {
verify-alg sha1; //同步方式
}
on server1.example.com { //節點1的設置
disk /dev/vdb;
address 172.25.0.1:7789;
}
on server2.example.com { //節點2的設置
disk /dev/vdb;
address 172.25.0.2:7789;
}
}
將該文件複製到節點2.兩節點都對drbd進行初始化:
#drbdadm create-md sqldata
兩節點都啓動drbd服務。
在節點1上
#cat /proc/drbd 可以看到drbd塊信息。顯示 secondary/secondary表示server1(第一個secondary)爲從設備,server2(第二個secondary)爲從設備。
#drbdadm primary sqldata --force //強制將server1設爲主設備,集羣服務只會在主設備上運行
在節點2上,
#cat /proc/drbd 顯示secondary/primary表示本機爲從設備,server1爲主設備。
#mkfs.ext4 /dev/drbd1
#mount /dev/drbd1 /mnt
#cp -rp /var/lib/mysql/* /mnt
#chown mysql.mysql /mnt
#umount /mnt
數據會同步寫入到節點2的/dev/drbd1上。
#drbdadm secondary sqldata // 將節點1設爲從設備
在節點2上
#mount /dev/drbd1 /mnt
#drbdadm primary sqldata //將本節點設爲主設備
#ls /mnt 會看到mysql文件
注意:兩臺主機上的/dev/drbd1 不能同時掛載,只有狀態爲 primary 時,才能被掛載使
用,而此時另一方的狀態爲 secondary。
Heartbeat集成drbd
在節點1的/etc/ha.d/haresource,修改最後一行爲
server1.example.com IPaddr::172.25.0.100/24/eth0 drbddisk::sqldata Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld
並將該文件複製到節點2中。
兩節點都啓動heartbeat
節點1上,由於drbd爲primary,可以看到drbd1以被掛載到/var/lib/mysql上,eth0添加了vip。這些都是heartbeat自動完成的
節點2上,則沒掛載沒加vip。
附註:接着上篇博客利用遠端存儲通過HA使用mysql服務
M端啓用luci、tgtd
兩節點啓用ricci、iscsi並安裝mysql-server,停用mysql服務
在web上禁用apache服務組並不勾選獨立運行。
添加回錯域(failover domain)name爲sqldb,其他與webfail相同。
添加resource->ip address 設置虛擬ip爲172.25.0.101;
-> script name=mysqld path爲/etc/init.d/mysqld
Server1上
卸載之前的添加的邏輯卷、卷組、物理卷
#service clvmd restart //重啓clvmd服務
#cat /proc/partitions //查看塊設備信息
重新遠端存儲重新分爲2個區
在server2 上, 運行partprobe然後查看/proc/partitions能看到sda1和sda2兩個分區。。
掛載sda1到mnt。 在mnt下創建index.html,內容爲www.redhat.org.然後卸載,數據寫入sda1中。再掛載sda2,將/var/lib/mysql下的所有複製到mnt。
#chown mysql.mysql /mnt
卸載mnt,mysql寫入sda2中。
在web上
修改resource中的webdata的device爲/dev/sda1
添加resource,name=dbdata 文件系統名爲ext4,掛載點爲/var/www/html,設備爲/dev/sda2,勾選force unmount,use quick status checks ,reboot host node if unmount fails.
添加服務組。Name爲mysql,勾選自動啓動,回錯域爲sqldb,然後點添加resource to service
依次添加新的vip等服務,虛擬ip(172.25.0.101)就和mysql綁定。啓用apache服務組。
這時若server2apache服務被破壞,如network disabled,集羣會自動從server1上啓動apache。
哪個節點上開啓了mysql,那麼它會ip會增加vip。