Heartbeat項(xiàng)目是 Linux-HA 工程的一個(gè)組成部分,它實(shí)現(xiàn)了一個(gè)高可用集群系統(tǒng)。心跳服務(wù)和集群通信是高可用集群的兩個(gè)關(guān)鍵組件,在 Heartbeat 項(xiàng)目里,由 Heartbeat 模塊實(shí)現(xiàn)了這兩個(gè)功能。
一、環(huán)境說明
#uname -r
3.10.0-862.9.1.el7.x86_64
# cat /etc/RedHat-release
CentOS Linux release 7.5.1804 (Core)
雙節(jié)點(diǎn)互備集群:
節(jié)點(diǎn)1:node1 node1.pjy.com 192.168.146.141
節(jié)點(diǎn)2:node2 node2.pjy.com 192.168.146.150
VIP地址:192.168.146.222
二、前提條件準(zhǔn)備
在每個(gè)節(jié)點(diǎn)上做以下配置:
1.關(guān)閉firewalld
2.關(guān)閉selinux
3.同步時(shí)間
4.配置主機(jī)名
5.配置主機(jī)間ssh互信,免密鑰認(rèn)證
以下配置是在節(jié)點(diǎn)1(141)主機(jī)上的配置,節(jié)點(diǎn)2(150)省略:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config
ntpdate 10.0.0.100
hostname node1.pjy.com
echo “node1.pjy.com” >> /etc/hostname
ssh-keygen -q -t rsa -N ” -f ~/.ssh/id_rsa
ssh-copy-id root@192.168.146.150
echo -e “192.168.146.141 node1.pjy.com node1n192.168.146.150 node2.pjy.com node2” >> /etc/hosts
三、開始安裝
1.安裝基礎(chǔ)環(huán)境包:
yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc
2.創(chuàng)建用戶和組
groupadd haclient
useradd -g haclient hacluster
3.下載軟件包:Reusable-Components-glue、resource-agents、heartbeat
可以到Linux公社資源站下載:
——————————————分割線——————————————
免費(fèi)下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2019年資料/2月/26日/CentOS 7下安裝配置Heartbeat高可用集群/
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
——————————————分割線——————————————
4.安裝glue
tar xf 0a7add1d9996.tar.bz2
cd Reusable-Cluster-Components-glue–0a7add1d9996/
./autogen.sh
./configure –prefix=/usr/local/heartbeat –with-daemon-user=hacluster –with-daemon-group=haclient –enable-fatal-warnings=no LIBS=’/lib64/libuuid.so.1′
make && make install
echo $?
cd ..
5.安裝Resource Agents
tar xf v3.9.6.tar.gz
cd resource-agents-3.9.6/
./autogen.sh
./configure –prefix=/usr/local/heartbeat –with-daemon-user=hacluster –with-daemon-group=haclient –enable-fatal-warnings=no LIBS=’/lib64/libuuid.so.1′
make && make install
echo $?
cd ..
6.安裝HeartBeat
tar xf 958e11be8686.tar.bz2
cd Heartbeat-3-0-958e11be8686/
./bootstrap
export CFLAGS=”$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib”
./configure –prefix=/usr/local/heartbeat –with-daemon-user=hacluster –with-daemon-group=haclient –enable-fatal-warnings=no LIBS=’/lib64/libuuid.so.1′
make && make install
echo $?
7.配置網(wǎng)卡支持插件文件
mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
#注意:一般啟動(dòng)時(shí)會報(bào)錯(cuò)因?yàn)?ping和ucast這些配置都需要插件支持 需要將lib64下面的插件軟連接到lib目錄 才不會拋出異常
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
#以上在節(jié)點(diǎn)1上安裝完成,在節(jié)點(diǎn)2上執(zhí)行以上同樣的步驟,此處省略…
#下面開始配置
四、配置heartbeat
#拷貝三個(gè)模版配置文件到 /usr/local/heartbeat/etc/ha.d 目錄下
cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/
1.配置ha.cf配置文件
#該配置文件用于配置 心跳的核心配置
vim /usr/local/heartbeat/etc/ha.d/ha.cf
debugfile /var/log/ha-debug #表示調(diào)試的日志文件 一般測試建議開啟
logfile /var/log/ha-log #表示系統(tǒng)的的日志文件路徑
logfacility local0 #表示使用系統(tǒng)日志與上面只能開啟一個(gè)
keepalive 2 #主備之間的心跳間隔時(shí)間單位:s
deadtime 30 #表示如果連接對方30s還無法連接,表示節(jié)點(diǎn)死亡需要考慮vip轉(zhuǎn)移
warntime 10 #表示10s時(shí)間未收到心跳時(shí)發(fā)出警告日志
initdead 120 #有時(shí)機(jī)器啟動(dòng)后需要一段時(shí)間網(wǎng)卡才能正常工作 需要預(yù)留一定的時(shí)間后,再開始判斷心跳檢測
udpport 694 #多播的udp端口
#baud 19200 #串行端口的波特率
#serial /dev/ttyS0 # Linux #串口的接口名
#serial /dev/cuaa0 # FreeBSD
#serial /dev/cuad0 # FreeBSD 6.x
#serial /dev/cua/a # Solaris
#bcast eth0 # Linux #傳播心跳的廣播網(wǎng)卡信息
#bcast eth1 eth2 # Linux
#bcast le0 # Solaris
#bcast le1 le2 # Solaris
#mcast eth0 225.0.0.1 694 1 0 #多播傳送心跳的網(wǎng)卡 多播組 端口 躍點(diǎn)數(shù) 是否回環(huán)內(nèi)傳送
ucast ens33 192.168.146.150 #設(shè)置單播心跳,設(shè)置對方的ip地址,此處使用單播
auto_failback on #表示如果主機(jī)停止后,從機(jī)接管設(shè)置為on當(dāng)主機(jī)從新啟動(dòng)后,主機(jī)立即接管vip off從機(jī)不會釋放vip給主機(jī)
node node1.pjy.com #配置主從的節(jié)點(diǎn)信息,要與uname -n保持一致
node node2.pjy.com
#############################################
#使用ping模式 有時(shí)當(dāng)主機(jī)掛掉或者h(yuǎn)eartbeat掛掉后vip才會轉(zhuǎn)移 有時(shí)出現(xiàn)某個(gè)進(jìn)程掛掉 切換需要使用腳本
#ping模式用于測試 如果網(wǎng)卡ping不同 某個(gè)主機(jī) 就認(rèn)為當(dāng)前斷網(wǎng) 需要轉(zhuǎn)移vip
#respawn root /usr/local/heartbeat/libexec/heartbeat/ipfail 表示當(dāng)ping不通時(shí) 自動(dòng)調(diào)用 ipfail這個(gè)腳本
#apiauth ipfail gid=haclient uid=hacluster 表示有權(quán)限操作ipfail腳本的組和用戶
############################################
ping 192.168.146.2
#ping組的所有主機(jī)
#ping_group group1 10.10.10.254 10.10.10.253
#respawn userid /path/name/to/run
#指定與heartbeat一同啟動(dòng)和關(guān)閉的進(jìn)程,該進(jìn)程被自動(dòng)監(jiān)視,遇到故障則重新啟動(dòng)。最常用的進(jìn)程是ipfail,該進(jìn)程用于檢測和處理網(wǎng)絡(luò)故障,需要配合ping語句指定的ping node來檢測網(wǎng)絡(luò)連接。如果你的系統(tǒng)是64bit,請注意該文件的路徑。
#respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
#apiauth ipfail gid=haclient uid=hacluster
2.配置authkeys配置文件
#該文件表示發(fā)送心跳時(shí) 機(jī)器用于驗(yàn)證的key的hash算法,節(jié)點(diǎn)之間必須配置成一致的密碼
vim /usr/local/heartbeat/etc/ha.d/authkeys
auth 2 #表示使用id為2的驗(yàn)證 下邊需要定義一個(gè)2的驗(yàn)證算法
2 sha1 1a2b3c #ID 2的驗(yàn)證加密為shal,并添加密碼
#更改權(quán)限為600
chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
3.配置haresources配置文件
#該文件表示資源的管理,如果是主機(jī),當(dāng)主機(jī)啟動(dòng)后自動(dòng)加載該文件中配置的所有啟動(dòng)資源,資源腳本默認(rèn)在haresources同級目錄下的resource.d目錄下
vim /usr/local/heartbeat/etc/ha.d/haresources
#指定節(jié)點(diǎn)主機(jī)名,和VIP地址,以雙冒號分隔資源,此處以apache為例進(jìn)行配置
node1.pjy.com 192.168.146.222 apache::/etc/httpd/conf/httpd.conf
4.節(jié)點(diǎn)2上準(zhǔn)備配置文件
#拷貝三個(gè)配置好的文件到節(jié)點(diǎn)2上,只需修改ha.cf配置文件中的單播地址為對方地址即可(ucast ens33 192.168.146.141)。
scp authkeys ha.cf haresources root@node2:/usr/local/heartbeat/etc/ha.d/
5.安裝httpd資源服務(wù)
#在每個(gè)節(jié)點(diǎn)上安裝httpd服務(wù)并測試
yum install httpd
echo “<h1>node1.pjy.com</h1>” >>/var/www/html/index.html
systemctl start httpd
curl 192.168.146.141
#測試httpd服務(wù)正常后關(guān)閉httpd服務(wù)并關(guān)閉自啟動(dòng)
systemctl stop httpd
systemctl disable httpd
6.啟動(dòng)服務(wù)
#啟動(dòng)每個(gè)節(jié)點(diǎn)上heartbeat服務(wù)
systemctl enable heartbeat
systemctl start heartbeat
ssh node2 ‘systemctl start heartbeat’
7.測試結(jié)果
# curl http://192.168.146.222
<h1>node1.pjy.com</h1>
#使用heartbeat自帶腳本切換主備節(jié)點(diǎn)
# /usr/local/heartbeat/share/heartbeat/hb_standby
Going standby [all].
# curl http://192.168.146.222
<h1>node2.pjy.com</h1>
8.配置NFS共享存儲
#在建立NFS的服務(wù)器上建立NFS存儲:
yum install nfs-utils rpcbind
systemctl start rpcbind
systemctl start nfs
cat /etc/exports #建立NFS共享存儲
/data 192.168.146.0/24(ro)
mkdir /data #建立測試文件
echo ‘<h1>nfs server</h1>’ > /data/index.html
#然后修改haresources配置文件添加自動(dòng)掛載nfs資源:
node1.pjy.com IPaddr::192.168.146.222/24/ens33 Filesystem::192.168.146.151:/data::/var/www/html::nfs::ro apache::/etc/httpd/conf/httpd.conf
#重啟heartbeat服務(wù)加載配置
systemctl restart heartbeat
ssh node2 ‘systemctl restart heartbeat’
#測試是否加載資源:
ip addr
netstat -lntup
mount
#資源轉(zhuǎn)移測試:
/usr/local/heartbeat/share/heartbeat/hb_standby