您好,登錄后才能下訂單哦!
這篇文章給大家介紹Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
配置heartbeat v2基于haresources配置文件的httpd高可用集群。
ll 要求
完全掌握heartbeat v2基于haresources配置文件的httpd高可用服務(wù)。
前期準(zhǔn)備
1、heartbeat服務(wù)主機(jī)規(guī)劃
主機(jī) | 接口 | ip | 服務(wù) | 用途 | |
node1.chanedu.com | eth0 | 192.168.1.131 | heartbeat httpd | LAN數(shù)據(jù)轉(zhuǎn)發(fā) | |
eth2 | 192.168.2.131 | 心跳信息鏈路 | |||
vip | 192.168.1.180 | 提供給外部訪問httpd的ip | |||
node1.chanedu.com | eth0 | 192.168.1.132 | heartbeat httpd | LAN數(shù)據(jù)轉(zhuǎn)發(fā) | |
eth2 | 192.168.2.132 | 心跳信息鏈路 | |||
shared.chanedu.com | eth0 | 192.168.1.150 | nfs | LAN數(shù)據(jù)轉(zhuǎn)發(fā) |
2、架構(gòu)圖
3、配置yum源
rpm -ivh https://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm
4、同步時間
兩個節(jié)點的時間必須一致,可以使用網(wǎng)絡(luò)時間服務(wù)器或本地ntpd服務(wù)器同步事件,我這里直接同步網(wǎng)絡(luò)時間服務(wù)器
ntpdate 202.120.2.101
5、節(jié)點名稱和IP地址必須能互相解析,保證/etc/hosts文件中主機(jī)名的正反解析結(jié)果與‘uname -n’的名稱一致
分別在node1和node2中的/etc/hosts添加下面的名稱解析
echo "192.168.1.131 node1.chanedu.com node1" >> /etc/hosts echo "192.168.1.132 node2.chanedu.com node2" >> /etc/hosts
6、配置節(jié)點心跳連接
node1和node2都使用eth2網(wǎng)卡互相連接,不經(jīng)過交換機(jī),直接用網(wǎng)線連接node1上的eth2和node2上的eth2,用作心跳檢測
node1上的eth2:192.168.2.131 node2上的eth2:192.168.2.132
在node1和node2兩臺主機(jī)上分別增加一條主機(jī)路由,實現(xiàn)兩臺主機(jī)檢測對端時通過eth2網(wǎng)卡來實現(xiàn)心跳檢測
在node1上添加:
route add -host 192.168.2.132 dev eth2 # 這條命令的意思是從node1訪問192.168.2.132(node2),走eth2網(wǎng)卡出去 echo "route add -host 192.168.2.132 dev eth2" >> /etc/rc.local
在node2上添加:
route add -host 192.168.2.131 dev eth2 # 這條命令的意思是從node1訪問192.168.2.131(node1),走eth2網(wǎng)卡出去 echo "route add -host 192.168.2.131 dev eth2" >> /etc/rc.local
7、為了保證通信安全,節(jié)點之間使用ssh密碼的方式進(jìn)行通信,可以使用“ssh-keygen -t rsa”命令產(chǎn)生密鑰。
ssh-keygen -t rsa ssh-copy-id root@192.168.1.132
安裝heartbeat v2
由于heartbeat-pils在CentOS-6.5后被cluster-glue取代了,所以需要手動解決依賴關(guān)系
1、解決依賴關(guān)系
yum install perl-TimeDate net-snmp-libs libnet PyXML rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
注意:libnet在epel源中
node1、node2主機(jī)安裝httpd
這里不演示
shared主機(jī)安裝nfs
這里不演示
配置httpd高可用集群
1、復(fù)制ha.cf、haresources、authkey這三個文件至/etc/ha.d文件中
cd /usr/share/doc/heartbeat-2.1.4/ cp ha.cf haresources authkeys /etc/ha.d/ cd /etc/ha.d/ ls authkeys ha.cf harc haresources rc.d README.config resource.d shellfuncs
2、配置heartbeat的基本參數(shù),直接編輯/etc/ha.d/ha.cf
vim /etc/ha.d/ha.cf grep -v "#" /etc/ha.d/ha.cf debugfile /var/log/ha-debug logfile/var/log/ha-log logfacilitylocal0 keepalive 1000ms deadtime 8 warntime 4 initdead 60 udpport694 ucast eth2 192.168.1.132 auto_failback on nodenode1.chanedu.com nodenode2.chanedu.com ping 192.168.1.1
這里有一點要注意,上面的ha.cf配置是node1上的,node2上的配置要修改單播地址
ucast eth2 192.168.1.131
3、配置heartbeat資源,定義node1為主節(jié)點,直接編輯/etc/ha.d/haresources
vim /etc/ha.d/haresources node1.chanedu.com 192.168.1.180/24/eth0 httpd
以上的ip地址即是vip,是向外提供httpd服務(wù)的地址,子網(wǎng)掩碼為24位,從eth0接口配置別名
4、配置認(rèn)證文件,編輯/etc/ha.d/authkeys
chmod 600 /etc/ha.d/authkeys openssl hand -hex 12 6107510ab21f17a41d377135 vim /etc/ha.d/authkeys auth 2 #1 crc 2 sha1 6107510ab21f17a41d377135 #3 md5 Hello!
5、將ha.cf、haresources、authkeys這3各文件copy至node2的/etc/ha.d/目錄下,并保留文件權(quán)限
rsync -p /etc/ha.d/{ ha.cf,haresources,authkeys} root@192.168.1.132:/etc/ha.d/
6、設(shè)置node1和node2節(jié)點的httpd開機(jī)不自動啟動,并停止httpd服務(wù)。
service httpd stop chkconfig httpd off
7、啟動heartbeat服務(wù)
在node1節(jié)點上啟動heartbeat服務(wù)并查看是否存在eth0:0
service heartbeat start
在node1上啟動node2的heartbeat服務(wù)
[root@node1 ha.d]# ssh node2 'service heartbeat start' Starting High-Availability services: 2017/05/08_23:46:22 INFO: Resource is stopped Done. [root@node1 ha.d]# ssh node2 'ss -unl' State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:694 *:* UNCONN 0 0 *:45373 *:*
以上可以看到node2已經(jīng)監(jiān)聽在UDP:694上了,正明node2已經(jīng)成功啟動。
客戶端訪問測試
在客戶端訪問192.168.1.180
可以訪問,表示heartbeat的基本配置沒有問題。接下來模擬node1宕機(jī),這里直接停掉node1的heartbeat服務(wù),看下是否能直接跳轉(zhuǎn)到node2
root@node1 ha.d]# service heartbeat stop Stopping High-Availability services: Done.
查看node2的IP地址,發(fā)現(xiàn)VIP資源已經(jīng)被node2接管了。
再次訪問客戶端,httpd資源也已經(jīng)轉(zhuǎn)移到node2節(jié)點。
基于nfs共享存儲的httpd高可用
配置集群服務(wù)中兩個節(jié)點共享后端NFS文件系統(tǒng)資源,將shared主機(jī)添加一個共享文件夾并修改屬主為apache用戶
cat /etc/exports /www/htdocs 192.168.1.0/24(rw,no_root_squash,async) setfacl -m u:apache:rwx /www/htdocs/ echo "<h2>Page in NFS Server.</h2>" > /www/htdocs/index.html
修改node1的haresources資源配置文件,指定掛載共享NFS文件系統(tǒng),并同步至node2節(jié)點的/etc/ha.d/目錄下
vim /etc/ha.d/haresources node1.chanedu.com 192.168.1.180/24/eth0 Filesystem::192.168.1.180:/www/var/shared::/var/www/html/::nfs httpd rsync /etc/ha.d/haresources root@192.168.2.132:/etc/ha.d/ ssh node2 'service heartbeat stop' service heartbeat stop service network restart ssh node2 'service network restart' service heartbeat start ssh node2 'service heartbeat start'
在客戶端訪問192.168.1.180,成功訪問到了后端nfs共享存儲的頁面。
這里有一點需要注意,請確保node1和node2節(jié)點能夠成功掛載并shared主機(jī)的共享目錄,而后要使用curl命令訪問下本機(jī)的。這里最好測試下,如果你的CentOS或者Redhat是最小化安裝,默認(rèn)是沒有安裝nfs-client客戶端的,mount.nfs命令也就沒有,如果沒有就不能成功掛載nfs共享目錄,那么HA就無法生效。
在node1和node2節(jié)點上掛載/www/htdocs目錄至/var/www/html目錄。
mount -t nfs 192.168.1.150:/www/htdocs /var/www/html [root@node1 heartbeat]# curl http://192.168.1.131 <h2> Page in NFS Server.</h2> [root@node2 heartbeat]# curl http://192.168.1.132 <h2> Page in NFS Server.</h2>
停止node1的heartbeat服務(wù)
ssh node1 'service heartbeat stop'
在/usr/share/heartbeat/目錄下,有很多腳本文件,其中:
運行hb_standby腳本,指將自己變?yōu)閭涔?jié)點;比如在node1上運行hb_standby腳本,資源將被node2接管
運行hb_takeover腳本,指重啟對方節(jié)點;比如,node1已經(jīng)是備節(jié)點,在node1上運行hb_takeover腳本將重啟node2節(jié)點,此時,node1認(rèn)為node2宕機(jī),所以node1將重新接管資源。
這里不演示了,很簡單。
總結(jié)
1、基于haresources配置文件的heartbeat v2.x版本的httpd高可用集群實現(xiàn)起來是比較簡單的,但是它的功能畢竟有限,如果需要更強(qiáng)大的功能,pacemaker無疑是比較好的選擇。
2、因為最小化安裝centos的原因,node2節(jié)點沒有安裝nfs-client等軟件,沒有mount.nfs命令,導(dǎo)致測試到后面node1資源一致不能轉(zhuǎn)移到node2節(jié)點,排查了很多原因,最終找到罪魁禍?zhǔn)资莕ode2無法掛載nfs共享文件系統(tǒng)的緣故,自己不細(xì)心導(dǎo)致實驗時間變長,如果是在生產(chǎn)環(huán)境中,這種情況是不允許發(fā)生的。
關(guān)于Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。