溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-heartbeat高可用軟件的安裝及配置

發(fā)布時(shí)間:2020-06-07 17:32:59 來源:網(wǎng)絡(luò) 閱讀:1767 作者:海風(fēng)掠過 欄目:MySQL數(shù)據(jù)庫

1.部署Heartbeat高可用需求

1.1 操作系統(tǒng)

[root@heartbeat-1-114 ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)

1.2 Heartbeat服務(wù)主機(jī)資源準(zhǔn)備

服務(wù)器A:

主機(jī)名:heartbeat-1-114

eth0網(wǎng)卡地址:192.168.136.114(管理IP)

eth2網(wǎng)卡地址:10.0.10.4/255.255.255.0 (心跳IP)

從服務(wù)器B:

主機(jī)名:heartbeat-1-115

eth0網(wǎng)卡地址:192.168.136.115(管理IP)

eth2網(wǎng)卡地址:10.0.10.5/255.255.255.0(心跳IP)

虛擬VIP:

虛擬VIP在主服務(wù)器heartbeat-1-114上,VIP:192.168.136.116

仲裁主機(jī):10.0.10.6

2.Heartbeat高可用實(shí)施準(zhǔn)備

2.1 搭建虛擬真實(shí)環(huán)境

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-heartbeat高可用軟件的安裝及配置

2.2 給虛擬機(jī)配置IP和主機(jī)名

配置IP就省略了,設(shè)置兩臺(tái)主機(jī)的主機(jī)名分別為heartbeat-1-114和heartbeat-1-115。分別編譯兩臺(tái)機(jī)器的/etc/sysconfig/network配置文件,設(shè)置HOSTNAME=heartbeat-1-114和HOSTNAME=heartbeat-1-115。然后在命令行下執(zhí)行hostname heartbeat-1-114和hostname heartbeat-1-115使設(shè)置馬上生效,注意/etc/hosts文件中127.0.0.1對(duì)應(yīng)的主機(jī)名不要配置。

提示:可以執(zhí)行setup命令然后選network configuration-->Edit configuration即可配置機(jī)器名,然后logout退出重新登錄后生效。

2.3 配置hosts文件(兩個(gè)節(jié)點(diǎn)都要做)

提示:兩臺(tái)機(jī)器必須互相能ping通

在heartbeat-1-114主機(jī)上配置hosts文件

[root@heartbeat-1-114 ~]# cat >>/etc/hosts<<EOF
> 192.168.136.114 heartbeat-1-114
> 192.168.136.115 heartbeat-1-115
> EOF

在heartbeat-1-115主機(jī)上配置hosts文件

[root@heartbeat-1-115 ~]# cat >>/etc/hosts<<EOF
> 192.168.136.114 heartbeat-1-114
> 192.168.136.115 heartbeat-1-115
> EOF

通過ping ip地址的方法檢查測(cè)試,看其返回的IP是不是和/etc/hosts中配置的內(nèi)容一致。

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-heartbeat高可用軟件的安裝及配置

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-heartbeat高可用軟件的安裝及配置

特別強(qiáng)調(diào):機(jī)器名必須是uname –n返回的結(jié)果

[root@heartbeat-1-114 ~]# uname -n
heartbeat-1-114
[root@heartbeat-1-115 ~]# uname -n
heartbeat-1-115

提示:hosts文件的配置在heartbeat服務(wù)中會(huì)用到,后文的drbd及存儲(chǔ)高可用也會(huì)用到,在生產(chǎn)環(huán)境中會(huì)把所有的機(jī)器名對(duì)應(yīng)上所有的機(jī)器IP地址,可以通過分發(fā)工具統(tǒng)一分發(fā)到所有機(jī)器的/etc/hosts中。

2.4 配置服務(wù)間的心跳連接

eth2 10.0.10.5和eth2 10.0.10.4兩塊網(wǎng)卡之間通過普通網(wǎng)線連接的,即不通過交換機(jī),直接用網(wǎng)線將兩塊網(wǎng)卡連在一起,用于做心跳檢測(cè)或傳數(shù)據(jù)等。

提示:高可用服務(wù)器對(duì)上的heartbeat軟件會(huì)利用這條心跳線來檢查對(duì)端的機(jī)器是否存活,進(jìn)而決定是否做故障轉(zhuǎn)移,資源切換,來保證業(yè)務(wù)的連續(xù)性。
如果條件允許,以上連接可同時(shí)使用,來加大保險(xiǎn)系數(shù)防止裂腦問題的發(fā)生。

本次案例:選用以太網(wǎng)電纜兩網(wǎng)卡直連。

選用原因:簡(jiǎn)單,容易部署、效果也不錯(cuò)。

在兩臺(tái)機(jī)器上分別增加一條主機(jī)路由,來實(shí)現(xiàn)兩臺(tái)機(jī)器檢查對(duì)端時(shí)通過這個(gè)心跳線線路檢查。

(1)在heartbeat-1-114上添加主機(jī)主機(jī)路由:

[root@heartbeat-1-114 ~]# /sbin/route add -host 10.0.10.4 dev eth2

添加到開機(jī)自啟動(dòng)配置文件中

[root@heartbeat-1-114 ~]# echo "/sbin/route add -host 10.0.10.4 dev eth2">>/etc/rc.local

(2)在heartbeat-1-115上增加如下主機(jī)路由:

[root@heartbeat-1-115 ~]# /sbin/route add -host 10.0.10.5 dev eth2

添加到開機(jī)自啟動(dòng)配置文件中

[root@heartbeat-1-115 ~]# echo "/sbin/route add -host 10.0.10.5 dev eth2">>/etc/rc.local

提示:要確保心跳線路是通的

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-heartbeat高可用軟件的安裝及配置

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-heartbeat高可用軟件的安裝及配置

2.5 配置虛擬VIP

在主服務(wù)器上heartbeat-1-114上配置輔助VIP,輔助ip用ip addr命令查看

[root@heartbeat-1-114 ha.d]# ip addr add 192.168.136.116/24 dev eth0:1
[root@heartbeat-1-114 ha.d]# ip addr|grep "116"
inet 192.168.136.116/24 brd 192.168.136.255 scope global secondary eth0:1

2.6 關(guān)閉防火墻和selinux(兩臺(tái)節(jié)點(diǎn)都要操作)

[root@heartbeat-1-114 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@heartbeat-1-114 ~]# getenforce
Disabled
[root@heartbeat-1-115 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@heartbeat-1-115 ~]# getenforce
Disabled

3.搭建heartbeat高可用

3.1 安裝heartbeat3.0軟件

CentOS-6.8-x86_64的rpm包沒有heartbeat軟件,所以要下載epel包

[root@heartbeat-1-114 ~]# yum search heartbeat
已加載插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
rhel-local   | 4.1 kB 00:00 ... 
警告:沒有匹配 heartbeat 的軟件包
沒有找到匹配的軟件包

3.2 下載并安裝epel擴(kuò)展源(兩臺(tái)都要操作)

[root@heartbeat-1-114 ~]# mkdir -p /home/linzhongniao/tools 
[root@heartbeat-1-114 ~]# cd /home/linzhongniao/tools  
[root@heartbeat-1-114 tools]# wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
 --2018-11-02 23:04:38--  http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
Resolving mirrors.ustc.edu.cn... 218.104.71.170, 2001:da8:d800:95::110
Connecting to mirrors.ustc.edu.cn|218.104.71.170|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm [following]
 --2018-11-02 23:04:38--  http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm
Reusing existing connection to mirrors.ustc.edu.cn:80.
HTTP request sent, awaiting response... 200 OK
Length: 14540 (14K) [application/x-redhat-package-manager]
Saving to: “epel-release-6-8.noarch.rpm.1”

100%[==================================================================>] 14,540  --.-K/s   in 0.04s   

2018-11-02 23:04:38 (371 KB/s) - “epel-release-6-8.noarch.rpm.1” saved [14540/14540]

[root@heartbeat-1-114 tools]# rpm -ivh epel-release-6-8.noarch.rpm
warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...########################################### [100%]
   1:epel-release   ########################################### [100%]
[root@heartbeat-1-114 tools]# rpm -qa|grep epel
epel-release-6-8.noarch

3.3 安裝heartbeat(兩臺(tái)都要操作)

yum install heartbeat* -y

提示:如果yum安裝后想保留rpm包,用下面的方法。

[root@heartbeat-1-114 ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf 
[root@heartbeat-1-114 ~]# grep keepcache /etc/yum.conf 
keepcache=1

3.4 主節(jié)點(diǎn)配置heartbeat服務(wù)

兩臺(tái)機(jī)器分別執(zhí)行安裝heartbeat軟件后,不出意外就可以安裝好heartbeat軟件了。前面已經(jīng)提到了,heartbeat的默認(rèn)配置文件目錄為/etc/ha.d。heartbeat常用的配置文件有三個(gè),ha.cf、authkey和haresource,各自的作用見下面的表格。

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-heartbeat高可用軟件的安裝及配置

3.4.1 配置ha.cf文件及文件說明

(1)先把ha.cf、haresources和authkeys這三個(gè)文件拷到/etc/ha.d/目錄下

[root@heartbeat-1-114 ~]# ll /usr/share/doc/heartbeat-3.0.4/
total 144
 -rw-r--r-- 1 root root  1873 Dec  3  2013 apphbd.cf
 -rw-r--r-- 1 root root   645 Dec  3  2013 authkeys
 -rw-r--r-- 1 root root  3701 Dec  3  2013 AUTHORS
 -rw-r--r-- 1 root root 58752 Dec  3  2013 ChangeLog
 -rw-r--r-- 1 root root 17989 Dec  3  2013 COPYING
 -rw-r--r-- 1 root root 26532 Dec  3  2013 COPYING.LGPL
 -rw-r--r-- 1 root root 10502 Dec  3  2013 ha.cf
 -rw-r--r-- 1 root root  5905 Dec  3  2013 haresources
 -rw-r--r-- 1 root root  2935 Dec  3  2013 README
[root@heartbeat-1-114 ~]# cd /usr/share/doc/heartbeat-3.0.4/
[root@heartbeat-1-114 heartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/

(2)配置ha.cf配置文件

[root@heartbeat-1-114 ha.d]# cat ha.cf
debugfile /var/log/ha-debug
logfile/var/log/ha-log
logfacility local0

keepalive 2
deadtime 30
warntime 10
initdead 60

udpport 694
#bcast  eth2
#mcast eth2 225.0.0.114 694 1 0
ucast eth2 10.0.10.5
auto_failback on
node  heartbeat-1-114
node  heartbeat-1-115
ping 10.0.10.6
respawn root /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=root uid=root
#crm on

(3)ha.cf文件詳細(xì)說明

debugfile /var/log/ha-debug:寫入調(diào)試信息的文件。

logfile /var/log/ha-log:heartbeat的日志文件。

keepalive 2:心跳的時(shí)間間隔,默認(rèn)時(shí)間單位為秒s。

deadtime 30:超出該時(shí)間間隔未收到對(duì)方節(jié)點(diǎn)的心跳,則認(rèn)為對(duì)方已經(jīng)死亡。

warntime 10:超出該時(shí)間間隔未收到對(duì)方節(jié)點(diǎn)的心跳,則發(fā)出警告并記錄到日志中。

initdead 60:在某系統(tǒng)上,系統(tǒng)啟動(dòng)或重啟之后需要經(jīng)過一段時(shí)間網(wǎng)絡(luò)才能正常工作,該選項(xiàng)用于解決這種情況產(chǎn)生的時(shí)間間隔,取值至少為deadtime的2倍。

bcast eth2:指明心跳使用以太網(wǎng)廣播方式在eth2接口上進(jìn)行廣播,如使用兩個(gè)實(shí)際網(wǎng)絡(luò)來傳送心跳則#bcast eth0 eth2,用udp進(jìn)行廣播建議副節(jié)點(diǎn)不止一個(gè)情況下使用

mcast eth2 225.0.0.130 694 1 0 :設(shè)置多播通信使用的端口,225.0.0.130為多播ip地址在一個(gè)局域網(wǎng)內(nèi)這個(gè)ip地址不能一樣,694為默認(rèn)使用的udp端口號(hào),建議在副節(jié)點(diǎn)不止一臺(tái)使用。

注意:一個(gè)局域網(wǎng)內(nèi)有多組heartbeat服務(wù)同時(shí)正常使用的前提是多播地址不同(可選多播地址段為224.0.0.0-239.255.255.255),一般路由器、交換機(jī)等應(yīng)該都是多播的方式,建議IP的最后八位作為多播地址的最后8位。當(dāng)然不用多播也能解決心跳問題。

udpport 694:設(shè)置廣播通信使用的端口,694為默認(rèn)使用的端口號(hào)。

ucast eth2 10.0.10.5:設(shè)置廣播通信對(duì)方機(jī)器心跳檢測(cè)的網(wǎng)卡和IP和udpport一起用。

auto_failback on:heartbeat的兩臺(tái)主機(jī)分別為主節(jié)點(diǎn)和從節(jié)點(diǎn)。主節(jié)點(diǎn)在正常情況下占用資源并運(yùn)行所有的服務(wù),遇到故障時(shí)把資源交給從節(jié)點(diǎn)由從節(jié)點(diǎn)運(yùn)行服務(wù)。在該選項(xiàng)設(shè)為on的情況下,一旦主節(jié)點(diǎn)恢復(fù)運(yùn)行,則自動(dòng)獲取資源并取代從節(jié)點(diǎn),否則不取代從節(jié)點(diǎn)。

respawn heartbeat /usr/lib64/heartbeat/ipfail:指定與heartbeat一同啟動(dòng)和關(guān)閉的進(jìn)程,該進(jìn)程被自動(dòng)監(jiān)視,遇到故障則重新啟動(dòng)。最常用的進(jìn)程是ipfail,該進(jìn)程用于檢測(cè)和處理網(wǎng)絡(luò)故障,需要配合ping語句指定的ping node來檢測(cè)網(wǎng)絡(luò)連接。如果你的系統(tǒng)是64bit,請(qǐng)注意該文件的路徑。

crm on:是否開啟集群資源管理功能(Cluster Resource Manager)

提示:我們可以查看/usr/share/doc/heartbeat-3.0.4/下的ha.cf來詳細(xì)了解參數(shù)信息。

3.4.2 配置authkey文件及文件說明

(1)配置authkey文件

[root@heartbeat-1-114 ha.d]# sha1sum /etc/ha.d/authkeys 
da39a3ee5e6b4b0d3255bfef95601890afd80709  /etc/ha.d/authkeys
[root@heartbeat-1-114 ha.d]# cat /etc/ha.d/authkeys 
auth 2
2 sha1 da39a3ee5e6b4b0d3255bfef95601890afd80709

將authkey權(quán)限修改為600

[root@heartbeat-1-114 ha.d]# chmod 600 /etc/ha.d/authkeys 
[root@heartbeat-1-114 ha.d]# ll /etc/ha.d/authkeys 
 -rw------- 1 root root 20 Nov  3 20:31 /etc/ha.d/authkeys

(2)文件說明

此處提到authkey權(quán)限必須為600
#   Authentication file.  Must be mode 600
#   Must have exactly one auth directive at the front.
#   authsend authentication using this method-id
#
#   Then, list the method and key that go with that method-id
此處提到可以設(shè)置認(rèn)證方法
#   Available methods: crc sha1, md5.  Crc doesn't need/want a key.
#   You normally only have one authentication method-id listed in this file
#   Put more than one to make a smooth transition when changing auth
#   methods and/or keys.
這里說明sha1是最好的認(rèn)證方法,其次md5是最好的
#   sha1 is believed to be the "best", md5 next best.
#   crc adds no security, except from packet corruption.
#   Use only on physically secure networks.
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!                       
##########

注意:authkeys需要的權(quán)限默認(rèn)為600否則heartbeat服務(wù)會(huì)報(bào)錯(cuò)不發(fā)打開,兩臺(tái)機(jī)器都需要操作

3.4.3 配置haresource文件

[root@heartbeat-1-114 ha.d]# cat /etc/ha.d/haresources 
heartbeat-1-114 IPaddr::192.168.136.116/24/eth0:1

配置參數(shù)說明 :heartbeat-1-114為主節(jié)點(diǎn)hostname,192.168.136.116為vip,24為掩碼是24位的網(wǎng)段,eth0:1為vip的設(shè)備名。IPaddr為heartbeat配置IP的默認(rèn)腳本,其后的IP等都是腳本參數(shù),腳本放置的位置如下所示:

[root@heartbeat-1-114 ha.d]# ll /etc/ha.d/resource.d/IPaddr 
 -rwxr-xr-x 1 root root 2273 Dec  3  2013 /etc/ha.d/resource.d/IPaddr

實(shí)際上面haresources文件中的內(nèi)容,相當(dāng)于在ip為192.168.136.116的機(jī)器上執(zhí)行下面的腳本:

/etc/ha.d/resource.d/IPaddr 192.168.136.116/24/eth0:1 start/stop

IPaddr::192.168.136.116/24/eth0:1:這個(gè)語句的結(jié)構(gòu)是腳本::(兩個(gè)冒號(hào))傳參,確切的說這里并不是傳參只是在ip為192.168.136.116的機(jī)器上執(zhí)行一個(gè)這樣的腳本,所以自己開發(fā)得到腳本只要能夠用start/stop啟動(dòng)和停止并且滿足腳本::傳參這種格式,就能放到haresources文件中這是腳本要寫全路徑。

3.5 從節(jié)點(diǎn)配置heartbeat服務(wù)

把主機(jī)上的三個(gè)文件拷貝到從上,只需配置ha.cf文件

[root@heartbeat-1-114 ha.d]# scp ha.cf authkeys haresources heartbeat-1-115:/etc/ha.d/
The authenticity of host 'heartbeat-1-115 (192.168.136.115)' can't be established.
RSA key fingerprint is 66:cc:1a:b8:c6:68:8e:8f:d1:2f:a3:a3:56:23:4a:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'heartbeat-1-115,192.168.136.115' (RSA) to the list of known hosts.
root@heartbeat-1-115's password: 
ha.cf   100%  341 0.3KB/s   00:00  

從節(jié)點(diǎn)只需要修改ha.cf文件,將10.0.10.5改成10.0.10.4,設(shè)置對(duì)方機(jī)器心跳檢測(cè)的網(wǎng)卡和IP。

[root@heartbeat-1-115 ha.d]# grep "ucast" ha.cf
ucast eth2 10.0.10.4

4.啟動(dòng)heartbeat服務(wù)

先啟動(dòng)主節(jié)點(diǎn)后啟動(dòng)從節(jié)點(diǎn),不要讓heartbeat開機(jī)自啟動(dòng)

[root@heartbeat-1-130 ~]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
Done.
[root@heartbeat-1-114 ~]# chkconfig --list|grep heartbeat
heartbeat   0:off   1:off   2:on3:on4:on5:on6:off
[root@heartbeat-1-114 ~]# chkconfig heartbeat off
[root@heartbeat-1-114 ~]# chkconfig --list|grep heartbeat
heartbeat   0:off   1:off   2:off   3:off   4:off   5:off   6:off

5.測(cè)試heartbeat高可用服務(wù)

有兩種方法

(1)主節(jié)點(diǎn)停止heartbeat服務(wù)

/etc/init.d/heartbeat stop

(2)主節(jié)點(diǎn)禁ping

[root@heartbeat-1-114 ha.d]# iptables -I INPUT -p icmp -j DROP

主節(jié)點(diǎn)允許ping

[root@heartbeat-1-114 ha.d]# iptables -I INPUT -p icmp -j ACCEPT

我們就會(huì)發(fā)現(xiàn)虛擬VIP切換到從節(jié)點(diǎn)上了,來達(dá)到heartbeat高可用功能繼續(xù)為用戶提供服務(wù)。

6.測(cè)試列腦

兩節(jié)點(diǎn)都down掉eth2網(wǎng)卡

ifdown eth2

7.查看heartbeat啟動(dòng)及接管資源的過程

可以查看heartbeat日志和系統(tǒng)日志查看heartbeat啟動(dòng)及接管資源的過程

tail -f /var/log/ha-log

tail -f /var/log/messages

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI