開源高可用性HA之Heartbeat服務

開源高可用性HAHeartbeat服務

開源Heartbeat服務的安裝:

準備材料:

heartbeat-libs-3.0.4-2.el6.x86_64.rpm   ldirectord-3.9.5-3.1.x86_64.rpm

heartbeat-3.0.4-2.el6.x86_64.rpm      heartbeat-devel-3.0.4-2.el6.x86_64.rpm

 

工作機制:

   Heartbeat最核心的兩部分就是:心跳檢測和資源監管。心跳檢測一般是通過以太網交叉線來連接集羣中的節點,作爲心跳監控,其他還有串口線也可以用來做心跳監控,心跳監控通過集羣主機之間相互發送報文來告訴對方自己運行的狀態,如果在指定的時間內未收到對方發送報文,那麼就認爲對方失效,這時Heartbeat就啓動資源接管模塊將對方主機上運行的服務資源接管過來,從而保證服務運行的可靠性。


步驟:

#yum install -y mysql-server  #server50  server51上均安裝mysql服務,後面雙機集羣就在上面運行此服務.

#/etc/init.d/mysqld   start   #初始化數庫據服務;

#/etc/init.d/mysqld  stop    

#yum install -y      heartbeat-libs-3.0.4-2.el6.x86_64.rpm   heartbeat-3.0.4-2.el6.x86_64.rpm  heartbeat-3.0.4-2.el6.x86_64.rpm     ####server50  server51上均安裝heartbeat服務.

#cd   /etc/ha.d/

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

# vim ha.cf

 29 logfile /var/log/ha-log    #指明heartbeat的日誌存放位置

 34 logfacility     local0    #如果未定義上述的日誌文件,那麼日誌信息將送往local0(對應的/var/log/messages裏面)

 48 keepalive     2   #發送報文的間隔,默認爲2s

 56 deadtime     30  #指定若備用節點唉30s內沒有收到主節點的心跳信號,則立即接管主節點的服務資源。

 61 warntime  10     #指定心跳的延時時間爲10s,當10s內備份節點不能收到主機誒到哪的心跳就會往日誌中寫入一個警告日誌,當此時不會切換服務。

 71 initdead  60   #在某些系統上,系統啓動或重啓之後需要經過一段時間才能正常工作,該選項用於解決這種問題。

 76 udpport   694    #設置廣播、單播通信使用的端口號

 80 baud    19200  #設置串行通信的波特率

 91 bcast   eth0  #單播 

 157 auto_failback on  #用來定義主節點回復後,是否回切

 211 node   server50.example.com  #定義爲主節點

 212 node   server51.example.com  #定義爲輔節點

 220 ping 172.25.45.250    #ping真機的網關,能ping通,代表主節點沒壞。

 253 respawn hacluster/usr/lib64/heartbeat/ipfail  #ipfail 用於檢測和處理網絡故障,需要配合pingping_group來配合。

 259 apiauth ipfail gid=haclient uid=hacluster           #指定對客戶端api的訪問控制,這裏指定了有權限訪問的/ipfail的用戶和用戶組。

注意:我在配置時,忘了更改253行的lib64,因爲我的電腦是64位的,所以一直報錯,錯誤提示爲:”ERROR:Client child command [/usr/lib/heartbeat/ipfail] is not executable”ipfail這個文件是不可執行的,因爲我64位系統不能執行32位的文件,,記住這個錯誤哈!

#vimharesources

150  server50.example.comIPaddr::172.25.45.100/24/eth0  mysqld

#vim authkeys

23 auth 1    #密碼爲明文

24 1 crc

#chmod 600  authkeys   記住:一定要更改認證文件的權限,否則heartbeat服務無法起來。

#scp ha.cf haresources authkeys [email protected]:/etc/ha.d/

#/etc/init.d/heartbeat start     #server50上開啓heartbeat服務;

# /etc/init.d/heartbeat start     #server51上開啓heartbeat服務;

#tail -f /var/log/messages  可以查看相關啓動日誌;

共享遠程存儲,使得heartbeat+遠程存儲+mysql服務結合起來;

首先開一個虛擬機提供遠程存儲,將存儲快共享給指定ip的主機;

Server3: #yum install -y scsi-target-utils.x86_64

#vim /etc/tgt/targets.conf

 38 <targetiqn.2016-06.com.example:server.disk>

 39    backing-store /dev/vdc

 40    initiator-address 172.25.45.50

 41    initiator-address 172.25.45.51

 42 </target>

#/etc/init.d/tgtd restart

 

配置雙機集羣:server50   server51

#yum install -yiscsi-initiator-utils.x86_64

#iscsiadm -t st -mdiscovery -p 172.25.45.22

#iscsiadm -m node -l

#fdisk /dev/sda  #

#mkfs.ext4 /dev/sda1

#mount /dev/sda1 /mnt

#cp -rp /var/lib/mysql/*  /mnt

#chown mysql.mysql  /mnt

#umount /mnt

#vim /etc/ha.d/haresources

150 server50.example.com      IPaddr::172.25.45.100/24/eth0Filesystem::/dev/sda1::/var/lib/mysql::ext4  mysqld

#/etc/init.d/heartbeat stop

# /etc/init.d/heartbeat start

注意:標紅色部分均需要在集羣的兩臺主機上進行操作,,黑色部分之用在其中一臺主機(server50)進行操作就好了,,強調一點,就是server50做完分區過後,server51一定要同步分區表:partprobe!

 

驗證:server50df查看掛在情況,可以看到遠程存儲塊掛載在/var/lib/mysql,可以直接打開mysql,還可以命令ip addrshow可以查看虛擬ip地址在哪臺主機上,就說明服務運行在哪臺主機.

 

 

作磁盤陣列:使兩個虛擬機都分4G虛擬硬盤;相當於做一個RAID1陣列,數據塊同步,使得掛載時,都能看到另外一個虛擬機的操作,剛好也符合heartbeat的工作機制;

下載好:drbd-8.4.3.tar.gz

步驟:

#tar zxf drbd-8.4.3.tar.gz

#yum install -y gcc

#yum install -y flex

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

#cd drbd-8.4.3

#yum install -y kernel-devel

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

#rpmbuild -bb drbd.spec  #將源碼.spec文件編譯成二進制文件(-bb)

# rpmbuild drbd-km.spec  #同上

#cd /root/rpmbuild/RPMS/x86_64/

#rpm -ivh *   #安裝裏面所有rpm包

#vim /etc/drbd.d/example.res

#scp example.res [email protected]:/etc/drbd.d/

#drbdadm create-md  sqldata      

#/etc/init.d/drbd start

#cat /proc/drbd

#drbdadm primery sqldata --force

# mkfs.ext4 /dev/drbd1

#mount /dev/drbd1  /mnt

#cp -rp /var/lib/mysql/*  /mnt

#chown mysql.mysql /mnt

#umount /mnt

#drbdadm secondary sqldata

#vim /etc/ha.d/haresources

     150   server50.example.com IPaddr::172.25.45.100/24/eth0drbddisk::sqldata Filesystem::/dev/drbd1::/var/lib/mysql   ::ext4  mysqld

#scp -r/etc/ha.d/haresources  [email protected]:/etc/dha.d/

#/etc/init.d/heartbeat start

 

Server51主機:

#cd /root/

#rpm -ivh drbd-*

#rbdadm create-md sqldata

# /etc/init.d/drbd start

#cat /proc/drbd

#/etc/init.d/heartbeat start

 

##df查看/dev/drbd1 自動掛載在/var/lib/mysql上面,且能夠打開mysql


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