日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用Heartbeat实现web服务器高可用

發(fā)布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Heartbeat实现web服务器高可用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


用Heartbeat實現(xiàn)web服務器高可用

?

heartbeat概述:

???Heartbeat 項目是 Linux-HA 工程的一個組成部分,它實現(xiàn)了一個高可用集群系統(tǒng)。心跳服務和集群通信高可用集群的兩個關鍵組件,在 Heartbeat 項目里,由 heartbeat 模塊實現(xiàn)了這兩個功能

端口號:694

1heartbeat的工作原理:

heartbeat最核心的包括兩個。部分,心跳監(jiān)測部分和資源接管部分,心跳監(jiān)測可以通過網(wǎng)絡鏈路和串口進行,而且支持冗余鏈路,它們之間相互發(fā)送報文來告訴對方自己當前的狀態(tài),如果在指定的時間內(nèi)未收到對方發(fā)送的報文,那就認為對方失效,這時需啟動資源接管模塊來接管運行在對方主機上的資源或者服務

2高可用集群

高可用集群是指一組通過硬件和軟件連接起來的獨立計算機,它們在用戶面前表現(xiàn)為一個單一系統(tǒng),在這樣的一組計算機系統(tǒng)內(nèi)部的一個或者多個節(jié)點停止工作,服務會從故障節(jié)點切換到正常工作的節(jié)點上運行,不會引起服務中斷。從這個定義可以看出,集群必須檢測節(jié)點和服務何時失效,何時恢復為可用。這個任務通常由一組被稱為心跳的代碼完成。在Linux-HA里這個功能由一個叫做heartbeat的程序完成

3Heartbeat-3.X版本以后被分為了4個模塊

1ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz #集群實驗資源代理

2Heartbeat-3-0-7e3a82377fa8.tar.bz2 # 心跳主程序包

3pacemaker-1.1.9-1512.el6.src.rpm # 起搏器

4Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2 #可重復使用的群集組件

?

一:實驗拓撲

?

二:實驗目標

1:heartbeat實現(xiàn)web服務器高可用

三:實驗環(huán)境

Note1WEBxuegod63.cn 192.168.1.63

Note2WEBxuegod64.cn 192.168.1.64

NFS ?xuegod62.cn 192

準備工作:保持兩臺節(jié)點主機一致??

1. 修改主機名,永久生效

# vim /etc/sysconfig/network

HOSTNAME=xuegod63.cn

2. 解析

# vim /etc/hosts

192.168.1.63 xuegod63.cn

192.168.1.64 xuegod64.cn

3:時間一致

[root@xuegod63 ~]# date

20161030日 星期日 15:18:47 CST

4. 關防火墻,關掉selinux

[root@xuegod63 ~]# service iptables stop

?

四:實驗代碼

--------------------------------------------------------------------------------------------------------------

1配置xuegod62NFS服務器,提供存儲資源

1)安裝NFS服務

[root@xuegod62 ~]# rpm -ivh /mnt/Packages/nfs-utils-1.2.3-39.el6.x86_64.rpm

2)編寫測試網(wǎng)頁并共享

[root@xuegod62 ~]# mkdir /wwwdir

[root@xuegod62 ~]# echo "heartbeat http ha" > /wwwdir/index.html

[root@xuegod62 ~]#vim ?/etc/exports ?#編寫共享文件及網(wǎng)段

/wwwdir 192.168.1.0/24(rw) :

3)添加共享目錄權限:?

[root@xuegod62 ~]# chmod 777 -R /wwwdir/

4開啟nfs服務

[root@xuegod62 ~]# service nfs restart

[root@xuegod62 ~]# chkconfig nfs on

2xuegod63測試nfs 存儲掛載并安裝httpd web服務器:?

1)安裝阿帕奇服務并測試NFS文件有沒有共享成功

[root@xuegod63 ~]# yum install httpd -y

[root@xuegod63 ~]# showmount -e 192.168.1.62 ?#查看NFS共享文件

Export list for 192.168.1.62:

/wwwdir 192.168.1.0/24

2)掛載文件夾到本地網(wǎng)站根目錄

[root@xuegod63 ~]# mount -t nfs 192.168.1.62:/wwwdir /var/www/html/ ?

[root@xuegod63 ~]#df -h

[root@xuegod63 ~]# service httpd restart

3測試:?

[root@xuegod63 ~]# yum install elinks -y

[root@xuegod63 ~]# elinks --dump 192.168.1.63

heartdeat http ha

httpd//:192.168.1.63

4卸載資源:后期這些資源通過heartbeat直接加載

[root@xuegod63 ~]# umount /var/www/html/

[root@xuegod63 ~]# service httpd stop

[root@xuegod63 ~]# chkconfig httpd off #后期依靠hartbeat啟動

3xuegod64測試nfs 存儲掛載并安裝httpd web服務器:?

1)安裝阿帕奇服務并測試NFS文件有沒有共享成功

[root@xuegod64 ~]# yum install httpd -y

[root@xuegod64 ~]# showmount -e 192.168.1.62

Export list for 192.168.1.62:

/wwwdir 192.168.1.0/24

2)掛載文件夾到本地網(wǎng)站根目錄

[root@xuegod64 ~]# mount -t nfs 192.168.1.62:/wwwdir /var/www/html/

[root@xuegod64 ~]# service httpd restart

3測試:

[root@xuegod64 ~]# yum install elinks -y

[root@xuegod64 ~]# elinks --dump 192.168.1.64

heartdeat http ha

4卸載資源:后期這些資源通過heartbeat直接加載

[root@xuegod64 ~]# umount /var/www/html/

[root@xuegod64 ~]# service httpd stop

[root@xuegod64 ~]# chkconfig httpd off

4xuegod63安裝heartbeat

1配置好yum源:

[root@xuegod63 ~]# cat /etc/yum.repos.d/rhel-source.repo

[rhel-source]

name=Red Hat Enterprise Linux $releasever - $basearch - Source

baseurl=file:///mnt/

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

#增加以下紅色內(nèi)容

[rhel-ha]

name=Red ha

baseurl=file:///mnt/HighAvailability

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release?

[root@xuegod63 ~]# yum clean all

[root@xuegod63 ~]#yum list

#說明,如果配置這個baseurl=file:///mnt/HighAvailabilit ,則無法使用yum安裝cluster-glue和resource-agents ?

centos 6.25的源里 cluster-glue、resource-agents、pacemaker 都有,就是沒有heartbeat。 幸好heartbeat的source里提供了.spec 可以用rpmbuild來生成rpm包。

2安裝heartbeat

[root@xuegod63 ~]# tar -jxvf /root/Heartbeat-3-0-958e11be8686.tar.bz2

[root@xuegod63 ~]# cd Heartbeat-3-0-958e11be8686

[root@xuegod63 Heartbeat-3-0-958e11be8686]# rpmbuild -ba heartbeat-fedora.spec

error: File /root/rpmbuild/SOURCES/heartbeat.tar.bz2: #錯誤提示。有那個文件或目錄但是會創(chuàng)建好目錄

[root@xuegod63 ~]# tar -jxvf /root/Heartbeat-3-0-958e11be8686.tar.bz2 -C /root/rpmbuild/SOURCES/

[root@xuegod63 ~]# cd /root/rpmbuild/SOURCES/

[root@xuegod63 SOURCES]# mv Heartbeat-3-0-958e11be8686 heartbeat?#修改名稱

[root@xuegod63 SOURCES]# tar -jcvf heartbeat.tar.bz2??heartbeat #?打包,生成的heartbeat.tar.bz2軟件包,如果直接使用源碼包,生成rpm包時,會報錯。

1開始生成RPM

參數(shù):rpmbuild參數(shù) (-bb 只編譯二進制rpm包 -bs 只編譯源碼srpm包 -ba 同時編譯二進制和源碼srpm包)

[root@xuegod64 ~]# yum install ncurses-devel openssl-devel gettext bison flex mailx cluster-glue-libs-devel docbook-dtds docbook-style-xsl libtool-ltdl-devel -y

[root@xuegod63 SOURCES]# cd heartbeat

[root@xuegod63 heartbeat]# rpmbuild -ba heartbeat-fedora.spec?

3):安裝軟件包

[root@xuegod63 ~]# cd /root/rpmbuild/RPMS/x86_64/

[root@xuegod63 x86_64]# yum install -y cluster-glue resource-agents

[root@xuegod63 x86_64]# rpm -ivh heartbeat-libs-3.0.6-1.el6.x86_64.rpm

[root@xuegod63 x86_64]# rpm -ivh heartbeat-3.0.6-1.el6.x86_64.rpm

5xuegod64上安裝:heartbeat?

1)把軟件包和yum配置文件拷貝到xuegod64上:

[root@xuegod63 ~]#cd /root/rpmbuild/RPMS/x86_64/

[root@xuegod63 x86_64]#?scp -r ./* 192.168.1.64:/root/

[root@xuegod63 x86_64]#scp /etc/yum.repos.d/rhel-source.repo 192.168.1.64:/etc/yum.repos.d/

[root@xuegod64?~]#cd /root/rpmbuild/RPMS/x86_64/ ?

[root@xuegod64?x86_64]#yum install ncurses-devel openssl-devel gettext bison flex mailx cluster-glue-libs-devel docbook-dtds docbook-style-xsl -y

[root@xuegod64?x86_64]#?rpm -ivh heartbeat-libs-3.0.5-1.el6.x86_64.rpm

[root@xuegod64?x86_64]#?yum install -y cluster-glue resource-agents

[root@xuegod64?x86_64]#?rpm -ivh heartbeat-3.0.6-1.el6.x86_64.rpm

2)查看生成的用戶和組:

[root@xuegod64?~]# grep haclient /etc/group

haclient:x:489:

[root@xuegod64?~]# id hacluster

uid=495(hacluster) gid=489(haclient) groups=489(haclient)?

6配置heartbeat xuegod63 xuegod64

xuegod63上生成heartbeat配置文件 xuegod63配置好的文件拷貝的xuegod64

1)拷貝配置文件

[root@xuegod63 ~]# cp /usr/share/doc/heartbeat-3.0.6/ha.cf /etc/ha.d/ #主配置文件

[root@xuegod63 ~]# cp /usr/share/doc/heartbeat-3.0.6/authkeys /etc/ha.d/ #主備節(jié)點間通信時所使用的驗證文件,保證安全性

[root@xuegod63 ~]# cp /usr/share/doc/heartbeat-3.0.6/haresources /etc/ha.d/ #浮資源的配置文件

2)設置主備節(jié)點間通信時所使用的驗證文件,保證安全性。主備節(jié)點配置要求一致。

[root@xuegod63 ~]# vim /etc/ha.d/authkeys

改:

為:

auth 3

#1 crc

#2 sha1 HI!

3 md5 mkkey

[root@xuegod63 ~]# chmod 600 /etc/ha.d/authkeys #此文件權限必須是600,否則啟動不成功

:

/etc/ha.d/authkeys 文件決定了認證密鑰。共有三種認證方式:crc,md5,和sha1。

三種認證方法的用途

???如果Heartbeat運行于安全網(wǎng)絡上,如本例中的交叉線,可以使用crc,從資源的角度來看,這是代價最低的方法。如果網(wǎng)絡并安全,但也希望降低CPU使用,則使用md5。最后,如果想得到最好的認證,而考慮CPU使用情況,則使用sha1,它在三者中最難破解。

3)修改浮動資源,注意添加的順序,::表示分隔符

[root@xuegod63 ~]#vim /etc/ha.d/haresources

改: 44 #node-name resource1 resource2 ... resourceN

為:

xuegod63.cn IPaddr::192.168.1.200/24/eth0 Filesystem::192.168.1.62:/wwwdir::/var/www/html::nfs httpd ?

注:

node-name填的是主服務器的主機名。 xuegod64上需要修改。這樣資源默認會加一這個主機上。當xuegod63壞了,xuegod64會再接管。

IPaddr::192.168.1.200/24/eth0 #VIP及綁定到哪個網(wǎng)卡上

Filesystem::192.168.1.62:/wwwdir::/var/www/html::nfs #定要掛載的存儲

httpd #定要啟的服務。這個服務必須是/etc/init.d下,可以通過service去啟動或關閉

4)測試

1)測試: 加載VIP 192.168.1.200到eth0上

[root@xuegod63 ~]# ll /etc/ha.d/resource.d/IPaddr

-rwxr-xr-x 1 root root 2273 Jul 29 20:49 /etc/ha.d/resource.d/IPaddr

[root@xuegod63 ~]# /etc/ha.d/resource.d/IPaddr 192.168.1.200/24/eth0 start

IPaddr[7116]: INFO: Success

INFO: Success

查看 VIP:

[root@xuegod63 x86_64]#ip addr??#可以看到 eth0:0 的IP為:192.168.1.200

注:在Linux rhel6.2版本中可以使用ifconfig查看,但是在rhel6.5上只能用ip addr 命令來查看到

2)測試: 加載NFS存儲資源到/var/www/html

[root@xuegod63 ~]# /etc/ha.d/resource.d/Filesystem 192.168.1.62:/wwwdir /var/www/html/ nfs start

Filesystem[23575]: INFO: Running start for 192.168.1.62:/wwwdir on /var/www/html

Filesystem[23567]: INFO: Success

INFO: Success

[root@xuegod63 ~]# mount

192.168.1.62:/wwwdir on /var/www/html type nfs (rw,vers=4,addr=192.168.1.62,clientaddr=192.168.1.63)

3)測試: httpd服務

[root@xuegod63 ~]# /etc/init.d/httpd restart

[root@xuegod63 ~]# grep /etc/ha.d/ha.cf #默認只開啟了以下兩行內(nèi)容

logfacility local0

auto_failback on

注釋:

#auto_failback on #為on時,主結點恢復正常后,資源自轉(zhuǎn)給主結點。 建議設為auto_failback off ,等主節(jié)點恢復正常后,在業(yè)務繁忙時,切換回來。防止主節(jié)點恢復正常時,回切時,再次影起網(wǎng)絡中斷。

5)修改配置文件

[root@xuegod63 ~]#?vim /etc/ha.d/ha.cf #將配置文件中,以下內(nèi)前面的#號去掉

24 debugfile /var/log/ha-debug

29 logfile /var/log/ha-log

48 keepalive 2 #設定heartbeat間的時間間隔為2秒。

56 deadtime 30 #在30秒后宣布節(jié)點死亡。

61 warntime 10 #在日志中發(fā)出“l(fā)ate heartbeat“警告前等待的時間,單位為秒。

71 initdead 120 #在某些系統(tǒng)上,系統(tǒng)啟動或重啟后需要經(jīng)過一段時間網(wǎng)絡才能正常工作,該選項用于解決這種情況產(chǎn)生的時間間隔。取值至少為deadtime的兩倍。

76 udpport 694 #使用端口694進行bcast和ucast通信。這是默認的,并且在IANA官方注冊的端口號。

121 ucast eth0 192.168.1.64 #表示從本機的eth0接口發(fā)心跳消息給對方節(jié)點,寫另一端的IP地址 。 這是單播地址。 xuegod64上改為192.168.1.63 。心跳網(wǎng)卡 ,如果你有兩個網(wǎng)卡,可以寫成eth1

注:配置文件中 91 #bcast eth0 #表示在eth0接口上使用廣播heartbeat(將eth1替換為eth0,eth2,者您使用的仸何接口)。

157 auto_failback on #當auto_failback設置為on時,一旦主節(jié)點重新恢復聯(lián)機,將從從節(jié)點取回所有資源。若該選項設置為off,主節(jié)點便能重新獲得資源。

211 node xuegod63.cn #該選項是必須配置的。集群中機器的主機名,“uname –n”的輸出相同。

212 node xuegod64.cn

?

修改以下內(nèi)容

改:223 #ping 10.10.10.254

為:223 ping 192.168.1.1 #通過ping命令來實現(xiàn)仲裁

改:256 #respawn hacluster /usr/lib/heartbeat/ipfail

為:256 respawn hacluster /usr/libexec/heartbeat/ipfail

改:262 #apiauth ipfail gid=haclient uid=hacluster

為: ???apiauth ipfail gid=haclient uid=hacluster

到此修改結束,保存,退出。

7xuegod64上配置heartbeat?

1)復制配置文件到xuegod64上:

root@xuegod63 ~]#?cd /etc/ha.d/

[root@xuegod63 ha.d]# scp ha.cf haresources authkeys 192.168.1.64:/etc/ha.d/

[root@xuegod64 ~]# chmod 600 /etc/ha.d/authkeys #此文件必須是600否則heartbeat啟動不成功

#修改單播地址

[root@xuegod64 ~]# vim /etc/ha.d/ha.cf

改: ucast eth0 192.168.1.64

為: ucast eth0 192.168.1.63

2)兩機器啟heartbeat服務:

[root@xuegod63 ~]# /etc/init.d/heartbeat restart

[root@xuegod64 ~]# /etc/init.d/heartbeat restart

#等待資源接管完成。 takeover接管。 當啟停留在這個界面時,xuegod64會接管所有浮資源。等下面啟成功時,xuegod64會釋放資源,浮云資源,再次加載。

3)xuegod63查看集群資源:

[root@xuegod63 ~]# ifconfig

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:12:EC:1E

inet addr:192.168.1.200?Bcast:192.168.1.255 Mask:255.255.255.0

[root@xuegod63 ~]# df -h

/dev/sr0 3.4G 3.4G 0 100% /mnt

192.168.1.62:/wwwdir 9.7G 3.4G 5.8G 37% /var/www/html

[root@xuegod63 ~]# /etc/init.d/httpd status

httpd (pid 23641) is running...

4)xuegod64上查看,沒有任何浮云資源:?

[root@xuegod64 ~]# ifconfig

[root@xuegod64 ~]# df -h

[root@xuegod63 ~]# /etc/init.d/httpd status

httpd is stopped

?

8測試:

兩臺主機都開啟時,所有請求到轉(zhuǎn)到了xuegod63上。訪問:http://192.168.1.200/ 正常 當?shù)?/span>xuegod63,關閉網(wǎng)卡,等30秒鐘,所有請求都轉(zhuǎn)到xuegod64上了

1)主掛掉,驗證備

[root@xuegod63 ha.d]# ifdown eth0

[root@xuegod64 ~]# ifconfig

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:48:80:95

inet addr:192.168.1.200 Bcast:192.168.1.255 Mask:255.255.255.0

[root@xuegod64 ~]# df -h

192.168.1.62:/wwwdir 9.7G 3.4G 5.8G 37% /var/www/html

[root@xuegod64 ~]# service httpd status

httpd (pid 6375) is running...

2)主再次復活,驗證搶占功能---xuegod63上把eth0網(wǎng)卡再次開啟:

[root@xuegod63 ~]# ifup eth0

30秒后,查看:

[root@xuegod63 ~]# df -h

192.168.1.62:/wwwdir 9.7G 3.4G 5.8G 37% /var/www/html #已經(jīng)加載了httpd資源

[root@xuegod63 ~]# service httpd status

httpd (pid 27097) is running...

[root@xuegod63 ~]# ifconfig

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:12:EC:1E

inet addr:192.168.1.200 Bcast:192.168.1.255 Mask:255.255.255.0

資源已經(jīng)回切過來。

3)xuegod64上查看釋放資料:

[root@xuegod64 ~]# ifconfig #查看eth0:0 192.168.1.200 這個IP地址

[root@xuegod64 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda2 9.7G 3.7G 5.5G 41% /

tmpfs 569M 0 569M 0% /dev/shm

/dev/sda1 194M 28M 157M 15% /boot

/dev/sr0 3.4G 3.4G 0 100% /mnt

[root@xuegod64 ~]# service httpd status

httpd is stopped

?

?


轉(zhuǎn)載于:https://blog.51cto.com/blxueyuan/1927500

總結

以上是生活随笔為你收集整理的用Heartbeat实现web服务器高可用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。