您好,登錄后才能下訂單哦!
[root@heartbeat-1-114 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
主服務器A:
主機名:heartbeat-1-114
eth0網卡地址:192.168.136.114(管理IP)
eth2網卡地址:10.0.10.4/255.255.255.0 (心跳IP)
從服務器B:
主機名:heartbeat-1-115
eth0網卡地址:192.168.136.115(管理IP)
eth2網卡地址:10.0.10.5/255.255.255.0(心跳IP)
虛擬VIP:
虛擬VIP在主服務器heartbeat-1-114上,VIP:192.168.136.116
仲裁主機:10.0.10.6
配置IP就省略了,設置兩臺主機的主機名分別為heartbeat-1-114和heartbeat-1-115。分別編譯兩臺機器的/etc/sysconfig/network配置文件,設置HOSTNAME=heartbeat-1-114和HOSTNAME=heartbeat-1-115。然后在命令行下執行hostname heartbeat-1-114和hostname heartbeat-1-115使設置馬上生效,注意/etc/hosts文件中127.0.0.1對應的主機名不要配置。
提示:可以執行setup命令然后選network configuration-->Edit configuration即可配置機器名,然后logout退出重新登錄后生效。
提示:兩臺機器必須互相能ping通
在heartbeat-1-114主機上配置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主機上配置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地址的方法檢查測試,看其返回的IP是不是和/etc/hosts中配置的內容一致。
特別強調:機器名必須是uname –n返回的結果
[root@heartbeat-1-114 ~]# uname -n
heartbeat-1-114
[root@heartbeat-1-115 ~]# uname -n
heartbeat-1-115
提示:hosts文件的配置在heartbeat服務中會用到,后文的drbd及存儲高可用也會用到,在生產環境中會把所有的機器名對應上所有的機器IP地址,可以通過分發工具統一分發到所有機器的/etc/hosts中。
eth2 10.0.10.5和eth2 10.0.10.4兩塊網卡之間通過普通網線連接的,即不通過交換機,直接用網線將兩塊網卡連在一起,用于做心跳檢測或傳數據等。
提示:高可用服務器對上的heartbeat軟件會利用這條心跳線來檢查對端的機器是否存活,進而決定是否做故障轉移,資源切換,來保證業務的連續性。
如果條件允許,以上連接可同時使用,來加大保險系數防止裂腦問題的發生。
本次案例:選用以太網電纜兩網卡直連。
選用原因:簡單,容易部署、效果也不錯。
在兩臺機器上分別增加一條主機路由,來實現兩臺機器檢查對端時通過這個心跳線線路檢查。
(1)在heartbeat-1-114上添加主機主機路由:
[root@heartbeat-1-114 ~]# /sbin/route add -host 10.0.10.4 dev eth2
添加到開機自啟動配置文件中
[root@heartbeat-1-114 ~]# echo "/sbin/route add -host 10.0.10.4 dev eth2">>/etc/rc.local
(2)在heartbeat-1-115上增加如下主機路由:
[root@heartbeat-1-115 ~]# /sbin/route add -host 10.0.10.5 dev eth2
添加到開機自啟動配置文件中
[root@heartbeat-1-115 ~]# echo "/sbin/route add -host 10.0.10.5 dev eth2">>/etc/rc.local
提示:要確保心跳線路是通的
在主服務器上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
[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
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 的軟件包
沒有找到匹配的軟件包
[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
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
兩臺機器分別執行安裝heartbeat軟件后,不出意外就可以安裝好heartbeat軟件了。前面已經提到了,heartbeat的默認配置文件目錄為/etc/ha.d。heartbeat常用的配置文件有三個,ha.cf、authkey和haresource,各自的作用見下面的表格。
(1)先把ha.cf、haresources和authkeys這三個文件拷到/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文件詳細說明
debugfile /var/log/ha-debug
:寫入調試信息的文件。
logfile /var/log/ha-log
:heartbeat的日志文件。
keepalive 2
:心跳的時間間隔,默認時間單位為秒s。
deadtime 30
:超出該時間間隔未收到對方節點的心跳,則認為對方已經死亡。
warntime 10
:超出該時間間隔未收到對方節點的心跳,則發出警告并記錄到日志中。
initdead 60
:在某系統上,系統啟動或重啟之后需要經過一段時間網絡才能正常工作,該選項用于解決這種情況產生的時間間隔,取值至少為deadtime的2倍。
bcast eth2
:指明心跳使用以太網廣播方式在eth2接口上進行廣播,如使用兩個實際網絡來傳送心跳則#bcast eth0 eth2
,用udp進行廣播建議副節點不止一個情況下使用
mcast eth2 225.0.0.130 694 1 0
:設置多播通信使用的端口,225.0.0.130為多播ip地址在一個局域網內這個ip地址不能一樣,694為默認使用的udp端口號,建議在副節點不止一臺使用。
注意:一個局域網內有多組heartbeat服務同時正常使用的前提是多播地址不同(可選多播地址段為224.0.0.0-239.255.255.255),一般路由器、交換機等應該都是多播的方式,建議IP的最后八位作為多播地址的最后8位。當然不用多播也能解決心跳問題。
udpport 694
:設置廣播通信使用的端口,694為默認使用的端口號。
ucast eth2 10.0.10.5
:設置廣播通信對方機器心跳檢測的網卡和IP和udpport一起用。
auto_failback on
:heartbeat的兩臺主機分別為主節點和從節點。主節點在正常情況下占用資源并運行所有的服務,遇到故障時把資源交給從節點由從節點運行服務。在該選項設為on的情況下,一旦主節點恢復運行,則自動獲取資源并取代從節點,否則不取代從節點。
respawn heartbeat /usr/lib64/heartbeat/ipfail
:指定與heartbeat一同啟動和關閉的進程,該進程被自動監視,遇到故障則重新啟動。最常用的進程是ipfail,該進程用于檢測和處理網絡故障,需要配合ping語句指定的ping node來檢測網絡連接。如果你的系統是64bit,請注意該文件的路徑。
crm on
:是否開啟集群資源管理功能(Cluster Resource Manager)
提示:我們可以查看/usr/share/doc/heartbeat-3.0.4/下的ha.cf來詳細了解參數信息。
(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權限修改為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權限必須為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
此處提到可以設置認證方法
# 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是最好的認證方法,其次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需要的權限默認為600否則heartbeat服務會報錯不發打開,兩臺機器都需要操作
[root@heartbeat-1-114 ha.d]# cat /etc/ha.d/haresources
heartbeat-1-114 IPaddr::192.168.136.116/24/eth0:1
配置參數說明 :heartbeat-1-114為主節點hostname,192.168.136.116為vip,24為掩碼是24位的網段,eth0:1為vip的設備名。IPaddr為heartbeat配置IP的默認腳本,其后的IP等都是腳本參數,腳本放置的位置如下所示:
[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
實際上面haresources文件中的內容,相當于在ip為192.168.136.116的機器上執行下面的腳本:
/etc/ha.d/resource.d/IPaddr 192.168.136.116/24/eth0:1 start/stop
IPaddr::192.168.136.116/24/eth0:1
:這個語句的結構是腳本::(兩個冒號)傳參,確切的說這里并不是傳參只是在ip為192.168.136.116的機器上執行一個這樣的腳本,所以自己開發得到腳本只要能夠用start/stop啟動和停止并且滿足腳本::傳參這種格式,就能放到haresources文件中這是腳本要寫全路徑。
把主機上的三個文件拷貝到從上,只需配置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
從節點只需要修改ha.cf文件,將10.0.10.5改成10.0.10.4,設置對方機器心跳檢測的網卡和IP。
[root@heartbeat-1-115 ha.d]# grep "ucast" ha.cf
ucast eth2 10.0.10.4
先啟動主節點后啟動從節點,不要讓heartbeat開機自啟動
[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
有兩種方法
(1)主節點停止heartbeat服務
/etc/init.d/heartbeat stop
(2)主節點禁ping
[root@heartbeat-1-114 ha.d]# iptables -I INPUT -p icmp -j DROP
主節點允許ping
[root@heartbeat-1-114 ha.d]# iptables -I INPUT -p icmp -j ACCEPT
我們就會發現虛擬VIP切換到從節點上了,來達到heartbeat高可用功能繼續為用戶提供服務。
兩節點都down掉eth2網卡
ifdown eth2
可以查看heartbeat日志和系統日志查看heartbeat啟動及接管資源的過程
tail -f /var/log/ha-log
tail -f /var/log/messages
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。