高可用版本下載網站: linux-ha.org
respan ~ [判斷ping的短網切換]
drbd 分佈式複製塊設備
***********************************************
***********HA(高可用集羣)[開源版]***************
***********************************************
一.安裝相應的軟件及其簡介
目前版本(RH6.5),安裝 heartbeat-3.0.4-2.el6.x86_64.rpm,
heartbeat-devel-3.0.4-2.el6.x86_64.rpm,
heartbeat-libs-3.0.4-2.el6.x86_64.rpm,
ldirectord-3.9.5-3.1.x86_64.rpm
主要文件(顯示路徑):/etc/ha.d/README.config [可用 rpm -q heartbeat-d 查看下面所示文件絕對路徑]
They are:
ha.cf Main configuration file
haresources Resource configuration file
authkeys Authentication information
二.依次更改/usr/share/doc/heartbeat-3.0.4/~ 下的上述文件,而且完成後cp到/etc/ha.d/ 下
(1)vim /usr/share/doc/heartbeat-3.0.4/ha.cf [基本類]
[行標]
48 keepalive 2 [心跳互傳等待時間:2S]
56 deadtime 30 [死亡確認時間:30S]
61 warntime 10 [警告時間:10]
71 initdead 60 [資源初始化:60]【一個節點機死亡,另外一個節點機接管資源並開啓的時間】
76 udpport 1060 [設定節點:1060]【每一個節點機這個必須不一樣】
91 bcast eth0 [單波傳播方式,設備eth0]
211 node server1.example.com [寫入所用節點機的主機名,必須是主機名,並且誰先誰主,其次爲輔]
212 node server2.example.com
220 ping 172.25.254.250 [ping,檢測主機是否網通,若不一樣則啓動策略轉移]
253 respawn hacluster/usr/lib64/heartbeat/ipfail [所使用64版本]
259 apiauth ipfail gid=haclientuid=hacluster [開啓hacluster用戶]
(2)vim/usr/share/doc/heartbeat-3.0.4/haresources [策略加載類]
150 server1.example.comIPaddr::172.25.254.168/24/eth0 httpd
[主機名,加載IPaddr 文件,VIP(虛擬IP設置),服務(httpd)]【IPaddr可執行文件在/etc/ha.d/resource.d/】
(3)/usr/share/doc/heartbeat-3.0.4/authkeys [認證類]
1.首先 chmod 600authkets,所小權限
2.其次vim
[行標]
23 auth1 [開啓明文認證]
24 crc
(4)測試,開啓heartbeat(兩個都開啓) 服務,看httpd服務是否能正確運行(在虛擬機上可能比較慢,須要等待),curl 172.25.254.168 的顯示內容;而且關閉heartbeat 服務,看其是否能自動切換節點。
三.添加 drbd(分佈式複製塊設備存儲)
(1)所用軟件下載
drbd-8.4.2.tar.gz(tar -zxf 解壓);
yum install -y gcc
(2)執行./configure --enable-spec 和 ./configure --enbale-spec--with-km,
(a)按照提示(所需) 依次下載軟件(flex,rpm-build,等)
生成drbd.spec,drbd-km.spec,drbd-kernel.spec 等文件,用來製做rpm包
(3)rpmbuild -bb drbd.spec 和 rpmbuild -bbdrbd-km.spec 按照提示將壓縮包放到相應位置,在進行rpmbuild操做。
cp drbd-8.4.2.tar.gz ~/rpmbuild/SOURCES/
執行完上述操做以後會在 ~/rpmbuild/RPMS/x86_64 下生成8個drbd-*包,安裝(rpm -ivh *)它們,且發送給其它節點機並安裝。
(4)**在/etc/brdb.d/ 中編輯自定義文件,此文件很是重要,即drbd服務所加載的服務機及其向關信息。
(a)在配置文件以前,向每一個虛擬機添加兩塊4G的虛擬網卡
(b) vim/etc/brdb.d/example.res
resource example {
meta-disk internal;
device /dev/drbd1;
syncer {
verify-alg sha1;
}
on server1.example.com {
disk /dev/vdb;
address 172.25.254.161:7789;
}
on server2.example.com {
disk /dev/vdb;
address 172.25.254.162:7789;
}
(c)scp example.com -->172.25.254.162
(d)每個節點機都要進行drbd服務添加,drbdadm create-md example,而且開啓drbd服務
(e)設置主/備機,而且進行強行同步存儲內容
drbdadm primary/secondary example --force [那個機子操做此命令那個爲主/輔,而且強行同步信息]
watch cat /proc/drbd [能夠查看同步內容的進程]
(f)同步好了以後製做文件系統而且掛載(mkxfs.ext4),這樣/dev/drbd 設備的內容就能夠同步了。
在掛載設備時,首先要設置當前機爲主,再進行mount 操做
drbdadm primary/secondary example
四.添加 mysql數據庫(存儲),並完成節點服務異常時,自動轉移服務到另外一個節點。
(1)完善掛載mysql點
a.在主節點中下載mysql-server
首先開啓mysql /etc/init.d/mysqld start
掛載mnt,而且刪除/mnt 下的全部內容
關閉mysql(防止產生.sock文件 防止正常開啓),而且將/var/lib/mysql/ 中的內同考到/mnt 下
掛載 mount /dev/drbd1/var/lib/mysql/,進入/var/lib/mysql,將其主組都該爲 mysql(chown mysql.mysql ~ -R)
b.此時,切換主輔 掛載 /dev/drbd1/ 到 /var/lib/mysql 開啓mysqld,就能夠達成mysql 數據庫數據共享了。
(2)設置服務自動掛載,而且基於heartbeat 的服務轉移的策略
配置/etc/ha.d/haresources
[行標]
150 server1.example.comIPaddr::172.25.254.168/24/eth0 drbddisk::exampleFilesystem::/dev/drbd1::/var/lib/mysql::ext4
mysqld
【主機名,VIP,加載drbd example文件,掛載文件系統/dev/drbd1 到 /var/lib/mysql ext4本地文件系統,mysql服務】
(3)測試
前提,關閉兩臺主機的mysql服務,將兩個主機的都設爲輔助機(cat /proc/drbd),關閉兩個主機的heartbeat 服務。
a.開啓兩臺節點機的heatbeat 服務,節點1能夠進入mysql服務,而且節點1爲主機。
b.主機1關閉heartbeat 服務,節點2接管mysql服務,而且節點2改變爲主機。
c.開啓節點1,服務回到節點1上,而且節點1轉爲主機,節點2轉爲輔機
d.關閉節點機1,節點機2接管服務,開啓後,服務回到主機1。反之亦然
e.當服務在節點機1上運行時,使得節點機1網卡down,節點1 mysql 能登入,在 cat /proc/drbd 信息中會顯示對方爲DUnknown
這時,節點2上的heartbeat會將服務在節點2上啓動,可是會由於接受不到主節點機的drbd 和 mysql 信息 其動不了drbd mysql服務,
cat /proc/drbd 中會顯示對方爲 DUnknown
[由於,節點機1網絡故障。節點機2 找不到節點機1 節點機2的 heartbeat 就會啓動節點2,若你從新啓動節點2上的 heatbeat ,
那麼節點機2會一至卡住不動,請求主節點的drbd 和 mysql 策略資源,直到主節點修復好網絡,可是因爲迴轉模式,當主機網絡修復好時,策略資源
會從新回到主節點機上(節點機1)]
(4)小拓展,當網絡出現問題cat /proc/drbd 時,若兩臺機子都 Unkown 對方 除了從新制做新的drbd 並同步 這種毀滅性的方法,其時還能夠恢復並同步數據。
在輔機 執行drbdadm disconnect example [使輔機不鏈接 example]
drbdadm ----discard-my-data connect example [丟掉爲的drbd數據,鏈接 example]
稍等片刻 cat /proc/drbd 正確信息就會出如今本機 和 主節點機上
node