您好,登錄后才能下訂單哦!
這篇文章給大家介紹Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
配置heartbeat v2基于haresources配置文件的httpd高可用集群。
ll 要求
完全掌握heartbeat v2基于haresources配置文件的httpd高可用服務。
前期準備
1、heartbeat服務主機規劃
主機 | 接口 | ip | 服務 | 用途 | |
node1.chanedu.com | eth0 | 192.168.1.131 | heartbeat httpd | LAN數據轉發 | |
eth2 | 192.168.2.131 | 心跳信息鏈路 | |||
vip | 192.168.1.180 | 提供給外部訪問httpd的ip | |||
node1.chanedu.com | eth0 | 192.168.1.132 | heartbeat httpd | LAN數據轉發 | |
eth2 | 192.168.2.132 | 心跳信息鏈路 | |||
shared.chanedu.com | eth0 | 192.168.1.150 | nfs | LAN數據轉發 |
2、架構圖
3、配置yum源
rpm -ivh https://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm
4、同步時間
兩個節點的時間必須一致,可以使用網絡時間服務器或本地ntpd服務器同步事件,我這里直接同步網絡時間服務器
ntpdate 202.120.2.101
5、節點名稱和IP地址必須能互相解析,保證/etc/hosts文件中主機名的正反解析結果與‘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、配置節點心跳連接
node1和node2都使用eth2網卡互相連接,不經過交換機,直接用網線連接node1上的eth2和node2上的eth2,用作心跳檢測
node1上的eth2:192.168.2.131 node2上的eth2:192.168.2.132
在node1和node2兩臺主機上分別增加一條主機路由,實現兩臺主機檢測對端時通過eth2網卡來實現心跳檢測
在node1上添加:
route add -host 192.168.2.132 dev eth2 # 這條命令的意思是從node1訪問192.168.2.132(node2),走eth2網卡出去 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網卡出去 echo "route add -host 192.168.2.131 dev eth2" >> /etc/rc.local
7、為了保證通信安全,節點之間使用ssh密碼的方式進行通信,可以使用“ssh-keygen -t rsa”命令產生密鑰。
ssh-keygen -t rsa ssh-copy-id root@192.168.1.132
安裝heartbeat v2
由于heartbeat-pils在CentOS-6.5后被cluster-glue取代了,所以需要手動解決依賴關系
1、解決依賴關系
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主機安裝httpd
這里不演示
shared主機安裝nfs
這里不演示
配置httpd高可用集群
1、復制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的基本參數,直接編輯/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為主節點,直接編輯/etc/ha.d/haresources
vim /etc/ha.d/haresources node1.chanedu.com 192.168.1.180/24/eth0 httpd
以上的ip地址即是vip,是向外提供httpd服務的地址,子網掩碼為24位,從eth0接口配置別名
4、配置認證文件,編輯/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/目錄下,并保留文件權限
rsync -p /etc/ha.d/{ ha.cf,haresources,authkeys} root@192.168.1.132:/etc/ha.d/
6、設置node1和node2節點的httpd開機不自動啟動,并停止httpd服務。
service httpd stop chkconfig httpd off
7、啟動heartbeat服務
在node1節點上啟動heartbeat服務并查看是否存在eth0:0
service heartbeat start
在node1上啟動node2的heartbeat服務
[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已經監聽在UDP:694上了,正明node2已經成功啟動。
客戶端訪問測試
在客戶端訪問192.168.1.180
可以訪問,表示heartbeat的基本配置沒有問題。接下來模擬node1宕機,這里直接停掉node1的heartbeat服務,看下是否能直接跳轉到node2
root@node1 ha.d]# service heartbeat stop Stopping High-Availability services: Done.
查看node2的IP地址,發現VIP資源已經被node2接管了。
再次訪問客戶端,httpd資源也已經轉移到node2節點。
基于nfs共享存儲的httpd高可用
配置集群服務中兩個節點共享后端NFS文件系統資源,將shared主機添加一個共享文件夾并修改屬主為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文件系統,并同步至node2節點的/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節點能夠成功掛載并shared主機的共享目錄,而后要使用curl命令訪問下本機的。這里最好測試下,如果你的CentOS或者Redhat是最小化安裝,默認是沒有安裝nfs-client客戶端的,mount.nfs命令也就沒有,如果沒有就不能成功掛載nfs共享目錄,那么HA就無法生效。
在node1和node2節點上掛載/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服務
ssh node1 'service heartbeat stop'
在/usr/share/heartbeat/目錄下,有很多腳本文件,其中:
運行hb_standby腳本,指將自己變為備節點;比如在node1上運行hb_standby腳本,資源將被node2接管
運行hb_takeover腳本,指重啟對方節點;比如,node1已經是備節點,在node1上運行hb_takeover腳本將重啟node2節點,此時,node1認為node2宕機,所以node1將重新接管資源。
這里不演示了,很簡單。
總結
1、基于haresources配置文件的heartbeat v2.x版本的httpd高可用集群實現起來是比較簡單的,但是它的功能畢竟有限,如果需要更強大的功能,pacemaker無疑是比較好的選擇。
2、因為最小化安裝centos的原因,node2節點沒有安裝nfs-client等軟件,沒有mount.nfs命令,導致測試到后面node1資源一致不能轉移到node2節點,排查了很多原因,最終找到罪魁禍首是node2無法掛載nfs共享文件系統的緣故,自己不細心導致實驗時間變長,如果是在生產環境中,這種情況是不允許發生的。
關于Linux中如何配置heartbeat v2基于haresources配置文件的httpd高可用集群就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。