heartbeat+drbd

heartbeat簡介:Heartbeat 項目是 Linux-HA 工程的一個組成部分,它實現了一個高可用集羣系統。心跳服務和集羣通信高可用集羣的兩個關鍵組件,在 Heartbeat 項目裏,由 heartbeat 模塊實現了這兩個功能。下面描述了 heartbeat 模塊的可靠消息通信機制,並對其實現原理做了一些介紹。

hartbeat原理:heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網絡鏈路和串口進行,而且支持冗 餘鏈路,它們之間相互發送報文來告訴對方自己當前的狀態,如果在指定的時間內未收到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運 行在對方主機上的資源或者服務。


實驗環境:

                server1:172.25.45.1

                server2:172.25.45.2

iptables off and selinux disabled

所需軟件包:heartbeat-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 heartbeat-devel-3.0.4-2.el6.x86_64.rpm

 

所需環境:若有其它集羣,要先關閉相關進程

 

server1/server2

1

rpm -ivh 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

 

需要先解決依賴性如下圖:

wKioL1eW7qvTuGRcAAEi5ty6WNU937.png

 

 可以直接yum install

 

如果是純淨的虛擬機還需要安裝以下服務

 

server1/server2

1

2

yum install -y mysql-server 

yum install -y iscsi-initiator-utils

 

server3

1

yum install -y scsi-target-utils

 

添加一個硬盤  /dev/vdb

1

vim /etc/tgt/targets.conf

<target iqn.2016-07.com.example:server.target1>

    backing-store /dev/vdb

    initiator-address 172.25.45.1

    initiator-address 172.25.45.2

</target>

1

/etc/init.d/tgtd start

 

server1/server2

1

2

iscsiadm -t st -m discovery -p 172.25.45.3

iscsiadm -m node -l

增加一個分區/dev/sda1,並格式化。

 

server1

1

2

3

cd /usr/share/doc/heartbeat-3.0.4/

cp haresources ha.cf authkeys /etc/ha.d/

cd /etc/ha.d/

 

1

vim ha.cf

48行、56行、61行、71行、76行、91行、211行、212行、220行、253行、259行的註釋取消

71行的initdead的值改爲60

211node後改爲server1.example.com

212node後改爲server2.example.com

220pingIP改爲172.25.45.250

253行的目錄改爲/usr/lib64/heartbeat/ipfail

 

1

vim haresources

在最後添上以下內容:

server1.example.com IPaddr::172.25.45.100/24/eth0 mysqld

 

1

vim authkeys

23行、24行的註釋取消

 

1

2

chmod 600 authkeys

scp ha.cf haresources authkeys  172.25.45.2:/etc/ha.d/

 

1

2

/etc/init.d/heartbeat start

tail -f /var/log/message

wKioL1eW7xXiVpw5AAC63yJIK20219.png

 

server2

1

/etc/init.d/heartbeat start

 

server1

1

ip addr show

wKiom1eW7zbD7cuIAABFCiZ4EyI715.png

 

關閉server1heartbeat的服務,vip切到server2上,但把server1heartbeat服務打開,vip會切回server1

 

2.

server1

1

vim haresources

修改最後一行的內容爲以下:

server1.example.com IPaddr::172.25.45.100/24/eth0 Filesystem::/dev/sda1::/var/lib/mysql::ext4  mysqld

 

1

scp haresources  172.25.45.2:/etc/ha.d/

 

1

/etc/init.d/mysqld stop

 

1

2

3

4

5

6

7

8

mount /dev/sda1 /mnt

cd /var/lib/mysql/

cp -rp * /mnt/

chown mysql.mysql /mnt/

umount /mnt

/etc/init.d/heartbeat stop

/etc/init.d/heartbeat start

tail -f /var/log/message

 

1

/etc/init.d/heartbeat start    ##在server2上

 

1

ip addr show

wKioL1eW75SB1z70AABFHYV0_lY323.png

 

wKiom1eW75SxUc98AABBwF6v0UY192.png

 

wKiom1eW73Ww68sfAAAUxxFDJpU781.png

 

1

/etc/init.d/heartbeat stop

 

1

ip addr show    ##在server2上

wKioL1eW79SiE_06AABFqSWb3_0932.png

 

wKioL1eW78CBHv3WAABCysWZMiw174.png

 

server1上的heartbeat服務再次打開,則server2上的vip和掛載都會切回server1

 

 

##drbd##

server1server2都添加一個4G的虛擬硬盤

 

server1/server2

1

2

/etc/init.d/heartbeat stop

/etc/init.d/iscsi stop

 

1

fdisk -l

wKioL1eW7-ui622NAAA79Giul88562.png

 

所需軟件包:drbd-8.4.3.tar.gz

 

1

2

3

tar zxf drbd-8.4.3.tar.gz

cd drbd-8.4.3

./configure --enable-spec --with-km

 

1

yum install -y gcc flex rpm-build    ##解決依賴性

 

1

rpmbuild -bb drbd.spec    ##報錯

 

1

2

3

4

cd

cp drbd-8.4.3.tar.gz rpmbuild/SOURCES/

cd -

rpmbuild -bb drbd.spec

 

1

rpmbuild -bb drbd-km.spec    ##解決依賴性: yum install -y kernel-devel

 

1

2

cd /root/rpmbuild/RPMS/x86_64

ls

wKioL1eW7_ywG9qHAAB7FUyykiU755.png

 

1

rpm -ivh *

 

1

scp * 172.25.45.2:

 

server2

1

rpm -ivh drbd-*

 

server1

1

2

cd /etc/drbd.d/

vim example.res

添加以下內容:

resource sqldata {

meta-disk internal;

device /dev/drbd1;

 

syncer {

verify-alg sha1;

}

 

on server1.example.com {

disk /dev/vdb;

address 172.25.45.1:7789;

}

 

on server2.example.com {

disk /dev/vdb;

address 172.25.45.2:7789;

}

}

 

1

scp example.res 172.25.45.2:/etc/drbd.d/

 

server1/server2

1

2

drbdadm create-md sqldata

/etc/init.d/drbd start

 

server1

1

cat /proc/drbd

wKioL1eW8Vfx3sX3AABCqHxtZxI214.png

 

1

2

drbdadm primary sqldata --force

cat /proc/drbd

wKiom1eW8Wni4kAIAABl6BxBjPc648.png

 

1

watch cat /proc/drbd

wKiom1eW8XSCrWShAABpe4iAjBo200.png

 

 

wKiom1eW8XXB0CsoAABNPtGxxhg954.png

 

1

2

mkfs.ext4 /dev/drbd1

mount /dev/drbd1 /mnt

 

1

2

3

4

cd /var/lib/mysql/

cp -rp * /mnt/

chown mysql.mysql /mnt

umount /mnt

 

1

2

drbdadm secondary sqldata

cat /proc/drbd

wKioL1eW8YuxxBhAAABMGGPxunc030.png

 

server2

1

2

drbdadm primary sqldata

cat /proc/drbd

wKioL1eW8ZujdbeCAABJvm5UOko056.png

 

1

2

3

mount /dev/drbd1 /mnt

cd /mnt

ls

wKiom1eW8aSArx8PAAAVwqHeR90426.png

 

1

2

cd

umount /mnt

 

1

drbdadm secondary sqldata

 

server1

1

vim /etc/ha.d/haresources

修改內容爲以下:

server1.example.com IPaddr::172.25.45.100/24/eth0 drbddisk::sqldata  Filesystem::/dev/drbd1::/var/lib/mysql::ext4  mysqld

 

1

scp /etc/ha.d/haresources 172.25.45.2:/etc/ha.d/

 

1

cat /proc/drbd    ##此時ro:Secondary/Secondary

 

1

2

/etc/init.d/heartbeat start

tail -f /var/log/messages

 

server2

1

/etc/init.d/heartbeat start

 

server1

1

cat /proc/drbd

wKiom1eW8brjgfLaAABMDutviH8829.png

 

wKioL1eW8buwoTYOAABB8jti0bI961.png

 

wKiom1eW8cvhsyCwAABFtKUa8mA490.png

 

wKioL1eW8dag7V--AABKK3NdYF8948.png

 

1

/etc/init.d/heartbeat stop

 

server2

1

cat /proc/drbd

wKiom1eW8eTDNls7AABKWODo5bY464.png

 

wKiom1eW8eXTYQrTAABCsMPkHic597.png

 

wKioL1eW8eTSt6bJAABH6UACnh8457.png

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章