環境:Centos 6.6 64位
伺服器:
Master節點: GuoletaoTest01 IP位址:192.168.2.25
Slave節點:GuoletaoTest02 Ip位址: 192.168.2.26
VIP位址:192.168.2.30
一 DRBD 環境搭建:
1) 添加附加庫:
以下測試針對Centos 6.6 版本:
1)import public key:
2)安裝庫:
2) 安裝 DRBD:
yum install drbd kmod-drbd
3)兩台伺服器上的分區/dev/sdb1作為drbd的網絡mirror分區;
格式化分區 fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
4)開始配置drbd
編輯drbd檔案:
#設定資源名稱為: mysql_data
resource mysql_data {
protocol C;
net {
cram-hmac-alg sha1;
shared-secret "abc";
}
on GuoletaoTest01 {
device /dev/drbd1;
disk /dev/sdb1; #挂載drbd對應的系統分區;
address 192.168.2.25:7898;
meta-disk internal;
on GuoletaoTest02 {
disk /dev/sdb1;
address 192.168.2.26:7898;
}
兩邊啟動drbd服務:
/etc/init.d/drbd start
檢視drbd的狀态:
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.16 (api:88/proto:86-97)
m:res cs ro ds p mounted fstype
1:mysql_data Connected Primary/Secondary UpToDate/UpToDate C /data ext4
如果heartbeat沒有安裝或者啟動,測試時可以手動指定主drbd,指令如下:
指定 drbd的本地為master節點:drbdadm primary mysql_data
挂載drbd分區到本地:mount /dev/drbd1 /data
二 Heartbeat安裝:
yum -y install heartbeat*
配置要點:
HA有三個配置檔案:
密鑰檔案:authkeys
配置主檔案:ha.cf
HA主管的資源配置檔案:haresources
PS:
自寫的資源啟動腳本存放目錄:/etc/ha.d/resource.d
HA配置主目錄:/etc/ha.d/
1)認證檔案配置:
cat authkeys
auth 1
1 crc
2)ha.cf配置:
master上的配置檔案:
cat ha.cf
logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
#bcast em1
#設定單點傳播位址,對方ip
ucast eth0 192.168.2.26
auto_failback off
node GuoletaoTest01
node GuoletaoTest02
ping 192.168.2.1 #填寫網絡中網關的位址
hopfudge 1
deadping 5
respawn hacluster /usr/lib64/heartbeat/ipfail
#apiauth ipfail gid=haclient uid=hacluster2
slave節點上的配置檔案:
ucast eth0 192.168.2.25
ping 192.168.2.1
3)資源配置檔案:
cat haresources
GuoletaoTest01 IPaddr::192.168.2.30/32/eth0 drbd_primary
說明:
GuoletaoTest01 為主節點的主機名
IPaddr::192.168.2.30/32/eth0 network用于設定叢集的IP位址、子網路遮罩和網絡裝置辨別 等。需要注意的是,這裡指定的IP位址就是叢集對外服務的IP位址
drbd_primary resource-group用來指定需要Heartbeat托管的服務,也就是這些 服務可以由Heartbeat來啟動和關閉。如果要托管這些服務,就必須将服務寫成可以通過start/stop來啟動和關閉的腳步,然後放到/etc /init.d/或者/etc/ha.d/resource.d/目錄下,Heartbeat會根據腳本的名稱自動去/etc/init.d或者/etc /ha.d/resource.d/目錄下找到相應腳步進行啟動或關閉操作。
4)資源切換腳本:
本腳本複制drbd的切換,已經mysql,redis服務的啟動和關閉:
#!/bin/bash
case "$1" in
start)
drbdadm primary mysql_data
mount /dev/drbd1 /data
service mysql55 start
service redis start
;;
stop)
service mysql55 stop
service redis stop
umount /dev/drbd1
drbdadm secondary mysql_data
esac
exit 0
三 mysql和redis資料庫data存放目錄的修改與調整:
1)mysql資料庫data存放目 錄修改到/data/mysql55/var/
具體做法如下(在drbd主節點啟動後,并且mount成功後執行即可,從節點不需要操作,因為會通過drbd的機制同步過去!):
mkdir -p /data/mysql55/var/
chown -R mysql:mysql /data/mysql55
2)修改mysql配置檔案:
[client]
port=33066
socket="/var/lib/mysql/mysql.sock"
[mysql]
default-character-set=utf8
[mysqld]
basedir="/webser/mysql55"
#datadir="/webser/mysql55/var"
datadir="/data/mysql55/var"
然後執行以下指令:
/webser/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql55/var/ --basedir=/webser/mysql55/
最後在drbd的主節點上啟動mysql即可。
然後建立相關目錄:
mkdir -p data/redis/
然後在drbd節點上啟動redis服務即可!
以上測試都沒有問題了。就可以關閉mysql,drbd服務;
啟動整個叢集順序:
依次主從,然後啟動drbd,再heartbeat服務;
/etc/init.d/heartbeat start
注意設定成開機自啟動;
關閉叢集的順序:
先從後主:
先關閉heartbeat,然後關閉drbd服務!
/etc/init.d/heartbeat stop
/etc/init.d/drbd stop
本文轉自 shine_forever 51CTO部落格,原文連結:http://blog.51cto.com/shineforever/1633519