集羣管理之Heartbeat與DRBD

環境需求:rhel6以上,iptablssselinx disabled

新虛擬機(未進行其他集羣操作的)server1server2爲兩節點

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_64mysql-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 #指定用戶和用戶組

添加2node,後面接節點的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

server1mysqld或者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/*

複製這些rpmserver2上安裝。

 

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上,由於drbdprimary,可以看到drbd1以被掛載到/var/lib/mysql上,eth0添加了vip。這些都是heartbeat自動完成的

節點2上,則沒掛載沒加vip

 

附註:接着上篇博客利用遠端存儲通過HA使用mysql服務

M端啓用lucitgtd  

兩節點啓用ricciiscsi並安裝mysql-server,停用mysql服務

 

web上禁用apache服務組並不勾選獨立運行。

添加回錯域(failover domainnamesqldb,其他與webfail相同。

添加resource->ip address 設置虛擬ip172.25.0.101

                  -> script     name=mysqld   path/etc/init.d/mysqld

 Server1

卸載之前的添加的邏輯卷、卷組、物理卷

#service clvmd restart //重啓clvmd服務

#cat /proc/partitions  //查看塊設備信息

重新遠端存儲重新分爲2個區

server2 上, 運行partprobe然後查看/proc/partitions能看到sda1sda2兩個分區。。

掛載sda1mnt。 在mnt下創建index.html,內容爲www.redhat.org.然後卸載,數據寫入sda1中。再掛載sda2,將/var/lib/mysql下的所有複製到mnt

#chown mysql.mysql /mnt

卸載mntmysql寫入sda2中。

 

web

修改resource中的webdatadevice/dev/sda1

添加resourcename=dbdata  文件系統名爲ext4,掛載點爲/var/www/html,設備爲/dev/sda2,勾選force unmountuse quick status checks ,reboot host node if unmount fails.

添加服務組。Namemysql,勾選自動啓動,回錯域爲sqldb,然後點添加resource to service

依次添加新的vip等服務,虛擬ip172.25.0.101)就和mysql綁定。啓用apache服務組。

這時若server2apache服務被破壞,如network disabled,集羣會自動從server1上啓動apache

哪個節點上開啓了mysql,那麼它會ip會增加vip


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