溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么搭建Lvs+heartbeat高可用高性能web站點(diǎn)

發(fā)布時間:2021-11-17 15:00:43 來源:億速云 閱讀:193 作者:小新 欄目:云計算

這篇文章主要為大家展示了“怎么搭建Lvs+heartbeat高可用高性能web站點(diǎn)”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“怎么搭建Lvs+heartbeat高可用高性能web站點(diǎn)”這篇文章吧。

說明:每臺服務(wù)器需要有兩塊網(wǎng)卡:eth0連接內(nèi)網(wǎng)的交換機(jī),用私網(wǎng)ip,實(shí)現(xiàn)服務(wù)器間內(nèi)部訪問;eth2連接公網(wǎng)交換機(jī),供外網(wǎng)訪問。如果想節(jié)約成本可以只用一個交換機(jī),劃分2個vlan分別連接內(nèi)網(wǎng)和外網(wǎng)也可以,但這樣有風(fēng)險,一旦交換機(jī)出問題,內(nèi)網(wǎng)和外網(wǎng)都不能訪問,一定要權(quán)衡一下得失。

怎么搭建Lvs+heartbeat高可用高性能web站點(diǎn)

各個服務(wù)器ip配置如下:

主ha  eth2:1.1.1.14   eth0:192.168.1.8(心跳)

從ha  eth2:1.1.1.15   eth0:192.168.1.30(心跳)

real1:eth2:1.1.1.16 eth0:192.168.1.9

real1:eth2:1.1.1.16 eth0:192.168.1.10

real1:eth2:1.1.1.16 eth0:192.168.1.11

real1:eth2:1.1.1.16 eth0:192.168.1.12

一. 主ha的配置:

1. hosts文件的內(nèi)容如下(如果有自己的DNS的話,也可以用DNS做解析):

127.0.0.1 primary.fantong.com localhost.localdomain localhost
::1  localhost6.localdomain6 localhost6
1.1.1.14  primary.fantong.com
192.168.1.8  primary.fantong.com
1.1.1.15  backup.fantong.com
192.168.1.30  backup.fantong.com

2.修改主機(jī)名: 編輯/etc/sysconfig/network

HOSTNAME=primary.fantong.com

3. 用命令修改一下主機(jī)名:

#hostname primary.fantong.com

4. 安裝軟件

yum -y install libnet

yum -y install heartbeat-*

yum -y install heartbeat(如果報錯,再安裝一次就ok了)

yum  -y install ipvsadm

如果是redhat系統(tǒng)沒有yum源的話,可以參考我的一篇博客文章來更改yum的一些設(shè)置: http://gehailong.blog.51cto.com/765312/610127

5. 軟件安裝完成以后會生成目錄/etc/ha.d,該目錄下存放heartbeat 的配置文件,驗(yàn)證文件,資源文件(腳本,注意:在heartbeat中,腳本都被稱為資源)等,這三個文件是必不可少的,本文中這三個文件都是我手工寫的。

1). Heatbeat的主配文件:/etc/ha.d/ha.cf/ha.cf

logfile /var/log/ha-log
debugfile /var/log/ha-debug
logfacility     local0 
keepalive 2 #主從切換的保持時間
deadtime 30 #宣布對方死亡時間
warntime 10 #警告時間
udpport 694 #主從之間的通信端口
ucast eth0 192.168.1.30  #采用單播方式探測心跳,bcast是廣播方式;后面的地址是對端地址
auto_failback on #自動恢復(fù),就是說如果主從故障中恢復(fù)會搶回主的位置
node    primary.fantong.com #主節(jié)點(diǎn)主機(jī)名
node    backup.fantong.com #從節(jié)點(diǎn)主機(jī)名
ping 192.168.1.30
ping_group lbgroup 1.1.1.14 1.1.1.15
ping_group lbgroup 192.168.1.8 192.168.1.30
respawn hacluster /usr/lib64/heartbeat/ipfail  #如果是32位系統(tǒng),則目錄應(yīng)該為/usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster #驗(yàn)證用的用戶和組ID(已經(jīng)自動建好了)

2). 資源列表 /etc/ha.d/haresources后面跟的是資源名(腳本),要保證跟backup的內(nèi)容完全一致。

primary.fantong.com lvs ldirectord

3). 驗(yàn)證文件 /etc/ha.d/authkeys 主從驗(yàn)證 testlab驗(yàn)證密碼 ,要保證跟backup的內(nèi)容一致,否則主從驗(yàn)證失敗。注意:改為該文件權(quán)限必須為600

auth2
1 sha1 testlab

6. 在安裝heatbeat-*的時候會安裝一個叫heartbeat-ldirectord 的文件,他的作用是管理后端的realserver。比如后端某個realserver死掉了,他會自動從列表當(dāng)中刪除該資源,當(dāng)該資源恢復(fù)后再自動添加進(jìn)去。配置文件是:/etc/ha.d/ldirectord.cf ,內(nèi)容如下(是我自己手工寫的):

# Global Directives監(jiān)控realserver
checktimeout=3 #realserver超時時間
checkinterval=1 #檢查的間隔時間
fallback=127.0.0.1:80 #如果所有realserver宕機(jī),由誰來承擔(dān)
autoreload=yes
logfile="/var/log/ldirectord.log"
emailalert="ftyw@fantong.com" #出問題發(fā)郵件給誰(可以定義郵件組)
emailalertfreq=3600
emailalertstatus=all
quiescent=no #如果realserver出問題,立即從資源列表刪除
# Sample for an http virtual service
virtual=1.1.1.13:80  #(注意這個文件的格式,下面的內(nèi)容必須至少空4格)
   real=1.1.1.16:80 gate #gate表示采用的是lvs中DR模式,有關(guān)lvs的模式和工作原理大家可以查找相關(guān)資料來了解一下。
     real=1.1.1.17:80 gate
real=1.1.1.18:80 gate

real=1.1.1.19:80 gate
fallback=127.0.0.1:80 gate
service=http
scheduler=wrr #realserver的調(diào)動方法:加權(quán)輪訓(xùn)
persistent=5 #客戶端連接的持久時間
protocol=tcp
checktype=connect
   checkport=80

7. 該腳本的作用是啟動資源 /etc/init.d/lvs

#!/bin/bash
# description: start LVS of DirectorServer
#Written by :NetSeek http://www.linuxtone.org GW=192.168.1.254
# website director vip.
GW=1.1.1.13  #網(wǎng)關(guān)地址千萬不要填錯了,否則你的輔助(浮動)ip是無法訪問的。
WEB_VIP=1.1.1.13
WEB_RIP1=1.1.1.16
WEB_RIP2=1.1.1.17
WEB_RIP3=1.1.1.18

WEB_RIP3=1.1.1.19
. /etc/rc.d/init.d/functions
logger $0 called with $1
case "$1" in
start)
# Clear all iptables rules.
/sbin/iptables –F #這個地方要注意一下,如果公司最外端有防火墻,就可以清空iptables內(nèi)容(都做允許,或者停止),把改行注釋掉;如果沒有就需要有防火墻了,自己寫策略或者寫腳本。
# Reset iptables counters.
/sbin/iptables –Z #同上
# Clear all ipvsadm rules/services.
/sbin/ipvsadm -C
#set lvs vip for dr
/sbin/ipvsadm --set 30 5 60
/sbin/ifconfig eth2:0 $WEB_VIP broadcast $WEB_VIP netmask 255.255.255.255 up
/sbin/route add -host $WEB_VIP dev eth2:0
/sbin/ipvsadm -A -t $WEB_VIP:80 -s wrr -p 3
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP1:80 -g -w 1
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP2:80 -g -w 1

/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP3:80 -g -w 1

/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP4:80 -g -w 1

touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
# set Arp
/sbin/arping -I eth2 -c 5 -s $WEB_VIP $GW >/dev/null 2>&1
;;
stop)
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
ifconfig eth2:0 down
route del $WEB_VIP >/dev/null 2>&1
rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
/sbin/arping -I eth2 -c 5 -s $WEB_VIP $GW
echo "ipvsadm stoped"
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm is stoped"
exit 1
else
ipvsadm -ln
echo "..........ipvsadm is OK."
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac

exit 0

8.  做一下兩步操作:

chmod 755 /etc/init.d/lvs 

     ln -s  /etc/init.d/lvs  /etc/ha.d/resource.d  #啟動ldirectord的時候它會從/etc/init.d 和/etc/ha.d/resource.d 目 錄里面搜索資源(腳本)。

9. 讓heartbeat開機(jī)自啟動。

chkconfig   heartbeat  on

二.  backup上面的配置

1.安裝軟件包,同primary

2. 把primary上所有的腳本拷貝到backup上面,包括hosts文件,/etc/ha.d/*里面的所有的內(nèi)容。

3.修改/etc/ha.d/ha.cf。其他文件的內(nèi)容與主的保持一致就可以。

ucast eth0 192.168.1.8  #采用單播方式探測心跳,bcast是廣播方式;后面的地址是對端地址(主的ip)
.........

ping 192.168.1.8

4. chkconfig heartbeat  on

三. realserver的配置

1. 編寫腳本/root/real.sh,主要作用是屏蔽arp,否則的話會與其他realserver和ha的地址發(fā)生沖突,腳本內(nèi)容如下:

#/bin/sh
VIP=1.1.1.13
source /etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of RealServer"
/sbin/ifconfig lo:0 ${VIP} broadcast ${VIP} netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:0 down
echo "Close LVS of RealServer"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "wrong,please use start|stop"
exit 1
esac

2. 修改一下腳本權(quán)限:chmod 755 real.sh

3. 啟動腳本/root/real.sh start

4. 加入啟動項:

修改/etc/rc.local在最后寫入一行

/root/real.sh  start

四. 測試。

1. 在主從上面分別啟動heartbeat。(注意:先主后從)

service heartbeat start

2. 觀察主日志文件/var/log/ha-log

怎么搭建Lvs+heartbeat高可用高性能web站點(diǎn)

看到后面兩行表示已經(jīng)啟動完畢,資源加載成功。

3. 觀察從日志文件/var/log/ha-log

怎么搭建Lvs+heartbeat高可用高性能web站點(diǎn)

看到最后一行,表示從啟動成功,它并不啟動資源。

以上是“怎么搭建Lvs+heartbeat高可用高性能web站點(diǎn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI