溫馨提示×

溫馨提示×

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

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

heartbeat+LVS

發(fā)布時(shí)間:2020-07-10 16:02:52 來源:網(wǎng)絡(luò) 閱讀:381 作者:heiheiheihahaha 欄目:建站服務(wù)器

####heartbeat簡介####
Heartbeat 項(xiàng)目是 Linux-HA 工程的一個(gè)組成部分,它實(shí)現(xiàn)了一個(gè)高可用集群系統(tǒng)。心跳服務(wù)和集群通信是高可用集群的兩個(gè)關(guān)鍵組件,在 Heartbeat 項(xiàng)目里,由 heartbeat 模塊實(shí)現(xiàn)了這兩個(gè)功能。
這個(gè)集群方案是利用第三方軟件搭建的,要比RedHat自帶的集群軟件在功能上簡化一些,但是搭建起來非常的方便。而且是一種快速解決方案。
heartbeat的高可用集群采用的通信方式是udp協(xié)議和串口通信,而且heartbeat插件技術(shù)實(shí)現(xiàn)了集群間的串口、多播、廣播和組播通信。它實(shí)現(xiàn)了HA 功能中的核心功能——心跳,將Heartbeat軟件同時(shí)安裝在兩臺(tái)服務(wù)器上,用于監(jiān)視系統(tǒng)的狀態(tài),協(xié)調(diào)主從服務(wù)器的工作,維護(hù)系統(tǒng)的可用性。它能偵測服務(wù)器應(yīng)用級(jí)系統(tǒng)軟件、硬件發(fā)生的故障,及時(shí)地進(jìn)行錯(cuò)誤隔絕、恢復(fù);通過系統(tǒng)監(jiān)控、服務(wù)監(jiān)控、IP自動(dòng)遷移等技術(shù)實(shí)現(xiàn)在整個(gè)應(yīng)用中無單點(diǎn)故障,簡單、經(jīng)濟(jì)地確保重要的服務(wù)持續(xù)高可用性。  Heartbeat采用虛擬IP地址映射技術(shù)實(shí)現(xiàn)主從服務(wù)器的切換對(duì)客戶端透明的功能。
但是單一的heartbeat是無法提供健壯的服務(wù)的,所以我們在后臺(tái)使用lvs進(jìn)行負(fù)載均衡



####安裝heartbeat####
一:設(shè)置環(huán)境
1.系統(tǒng):redhat6.5 ;
2.節(jié)點(diǎn):一共要用到四個(gè)虛擬機(jī)作為節(jié)點(diǎn),其中server10與server11安裝heartbeat和lvs,另外兩個(gè)節(jié)點(diǎn)server12與server13只提供apache和vsftpd服務(wù);
3.這四個(gè)節(jié)點(diǎn)之間的解析一定要做好;
4.防火墻關(guān)閉,時(shí)間同步,四個(gè)機(jī)子的系統(tǒng)版本最好相同。

二:安裝heartbeat:(這個(gè)是第三方軟件,不是redhat自帶的,所以大家要自己去下載)
heartbeat-3.0.4-2.el6.x86_64.rpm
heartbeat-devel-3.0.4-2.el6.x86_64.rpm
heartbeat-libs-3.0.4-2.el6.x86_64.rpm

在下載之前還要修改本機(jī)的yum源配置
vim /etc/yum.repos.d/rhel-source.repo
######################################
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.60.250/rhel6.5/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.60.250/rhel6.5/HighAvailability
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.60.250/rhel6.5/LoadBalancer
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.60.250/rhel6.5/ResilientStorage
gpgcheck=0

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.60.250/rhel6.5/ScalableFileSystem
gpgcheck=0

##############################################
heartbeat+LVS

heartbeat的配置文件存放在/etc/ha.d/中
但是在默認(rèn)情況下,配置文件中并沒有,因此我們需要從其他地方拷貝
[root@server10 ~]# cd /usr/share/doc/heartbeat-3.0.4/
[root@server10 heartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/

接下來編寫配置文件:
[root@server10 ha.d]# vim ha.cf
#############################
29   logfile /var/log/ha-log    ##日志存放位置
48   keepalive 2        ##設(shè)定heartbeat之間的時(shí)間間隔為2秒
56   deadtime 30        ##在30秒后宣布節(jié)點(diǎn)死亡。
61   warntime 10        ##在日志中發(fā)出“l(fā)ate heartbeat“警告之前等待的時(shí)間,單位為秒
71   initdead 120        ##在某些配置下,重啟后網(wǎng)絡(luò)需要一些時(shí)間才能正常工作。它的取值至少應(yīng)該為通常deadtime的兩倍
76   udpport 694        ##使用端口694進(jìn)行bcast和ucast通信。這是默認(rèn)的
91   bcast   eth0    
211  node    server10        ##有兩個(gè)節(jié)點(diǎn)安裝heartbeat
212  node    server11

#################################

heartbeat+LVS

heartbeat+LVS

heartbeat+LVS


[root@server10 ha.d]# vim authkeys
################
 23 auth 1
 24 1 crc
################

最后我們修改haresources,我們要在其中添加一個(gè)apache服務(wù),但是我們要給它一個(gè)虛擬的ip(這個(gè)ip一定是沒有被別人占用的),讓這兩個(gè)節(jié)點(diǎn)作它的論尋

[root@server10 ha.d]# vim haresources
#######################################################
149 server10        IPaddr::172.25.60.100/24/eth0   httpd
########################################################
在兩邊都安裝httpd服務(wù)作為測試,為了區(qū)分,我們在他們的index.html中寫入不同的內(nèi)容

做完上述內(nèi)容后開啟兩邊的heartbeat服務(wù)及httpd服務(wù):
[root@server10 ha.d]# /etc/init.d/heartbeat start
[root@server10 ha.d]# /etc/init.d/httpd start
然后我們來通過firefox檢驗(yàn)效果:

heartbeat+LVS

然后我們讓當(dāng)前的節(jié)點(diǎn)heartbeat關(guān)閉,發(fā)現(xiàn)另外一個(gè)節(jié)點(diǎn)自動(dòng)接管了:
heartbeat+LVS
再讓剛才那個(gè)節(jié)點(diǎn)的heartbeat開啟,因?yàn)樗侵鞴?jié)點(diǎn)(server10),所以又接管回來了:

heartbeat+LVS

這樣就起到了負(fù)載均衡的效果

####LVS簡介####
LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務(wù)器,是一個(gè)虛擬的服務(wù)器集群系統(tǒng)
1.LVS的三種負(fù)載均衡技術(shù):
(1).通過NAT實(shí)現(xiàn)虛擬服務(wù)器(VS/NAT)
(2).通過IP隧道實(shí)現(xiàn)虛擬服務(wù)器(VS/TUN
(3).通過直接路由實(shí)現(xiàn)虛擬服務(wù)器(VS/DR)

####LVS的安裝和配置####
首先下載ipvsadm
[root@server10 ha.d]# yum install ipvsadm -y
[root@server10 ha.d]# ipvsadm -l    ##查看調(diào)度,此時(shí)應(yīng)當(dāng)沒有任何調(diào)度
接下來添加虛擬ip作為公共訪問ip
[root@server10 ha.d]# ifconfig eth0:0 172.25.60.200 netmask 255.255.255.0 up
我們添加虛擬ip的httpd服務(wù)的端口,并且采用了輪叫的算法(RR):
[root@server10 ha.d]# ipvsadm -A -t 172.25.60.200:80 -s rr
[root@server10 ha.d]# ipvsadm -l    ##再次查看調(diào)度時(shí),會(huì)發(fā)現(xiàn)有了一條調(diào)度
    
允許server12和server13的httpd服務(wù)作為輪叫的節(jié)點(diǎn):
[root@server10 ha.d]# ipvsadm -a -t 172.25.60.200:80 -r 172.25.60.12:80 -g
[root@server10 ha.d]# ipvsadm -a -t 172.25.60.200:80 -r 172.25.60.13:80 -g
heartbeat+LVS

在serevr12和server13上分別安裝httpd服務(wù):
server12和server13要能夠識(shí)別172.25.60.200這個(gè)虛擬IP,所以他們也要添加這個(gè)虛擬網(wǎng)卡。
[root@server12 ~]# ifconfig eth0:0 172.25.60.200 netmask 255.255.255.0 up

現(xiàn)在控制節(jié)點(diǎn)和提供真實(shí)服務(wù)的節(jié)點(diǎn)都能夠識(shí)別VIP(172.25.60.200),接下來我們要在提供服務(wù)的節(jié)點(diǎn)上添加策略,這個(gè)感覺和防火墻很類似,不過要安裝一個(gè)額外的軟件:
[root@server12 ~]# yum install arptable* -y
添加策略,把直接進(jìn)來訪問172.25.60.200的包全部丟棄,讓從172.25.60.200出去的包從172.25.60.12出去(172.25.60.13同理)。
[root@server13 ~]# arptables -A IN -d 172.25.60.200 -j DROP
[root@server13 ~]# arptables -A OUT -s 172.25.60.200 -j mangle --mangle-ip-s 172.25.60.12
[root@server13 ~]# arptables -nL

heartbeat+LVS

[root@server13 ~]# /etc/init.d/arptables_jf save    ##保存策略
現(xiàn)在我們通過瀏覽器反復(fù)訪問172.25.60.200(確保服務(wù)節(jié)點(diǎn)的httpd服務(wù)開啟),多刷新幾次:
用ipvsdm -l查看訪問之前控制節(jié)點(diǎn)記錄的信息

heartbeat+LVS

heartbeat+LVS


在訪問了12次之后,我們發(fā)現(xiàn)兩個(gè)節(jié)點(diǎn)各輪叫了6次,但是訪問的ip都是虛擬ip(172.25.60.200),這就是直連情況下的LVS方案
heartbeat+LVS
####heartbeat+lvs
讓這兩個(gè)軟件能夠互相協(xié)作,并且讓該平臺(tái)具有能夠報(bào)警和挽救的機(jī)制,我們需要安裝ldirectord軟件。
ldirectord-3.9.2-1.2.x86_64.rpm
在server10和server11上安裝ldirectord(因?yàn)榘拖到y(tǒng)的包有依賴性,所有使用yum安裝
[root@server10 ha.d]# yum install ldirectord-3.9.2-1.2.x86_64.rpm -y
拷貝配置文件到heartbeat的配置文件目錄下
[root@server10 ha.d]# cp /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/
heartbeat+LVS

兩邊的節(jié)點(diǎn)上都安裝perl-IO-Socket-INET6-2.56-4.el6.noarch:,否則后面的ldirectord會(huì)因?yàn)槿鄙倌_本無法打開:

[root@server10 ha.d] yum install perl-IO-Socket-INET -y

編輯ldirectord的配置文件
[root@server10 ha.d] vim directord.cf
################################
 25 virtual=172.25.60.200:80
 26         real=172.25.60.12:80 gate
 27         real=172.25.60.13:80 gate
 28         fallback=127.0.0.1:80 gate
 29         service=http
 30         scheduler=rr
 31         #persistent=600
 32         #netmask=255.255.255.255
 33         protocol=tcp
 34         checktype=negotiate
 35         checkport=80
 36         request="index.html"
################################
heartbeat+LVS

我們指定兩個(gè)真實(shí)服務(wù)的節(jié)點(diǎn)172.25.60.12和172.25.60.13,他們的訪問順序采用輪叫的方式,當(dāng)兩個(gè)節(jié)點(diǎn)都掛掉的話,172.25.60.10這個(gè)節(jié)點(diǎn)自己提供服務(wù)。
把這個(gè)配置文件拷貝到另外一個(gè)控制節(jié)點(diǎn)172.25.60.11的配置文件處:
[root@server10 ha.d]# scp ldirectord.cf 172.25.60.11:/etc/ha.d/
heartbeat+LVS

編輯haresources文件,添加ldirectord服務(wù)到heartbeat中:
[root@server10 ha.d]# vim haresources
##################################
149 server10        IPaddr::172.25.60.100/24/eth0   httpd ldirectord
##################################

heartbeat+LVS

在server11下也作同樣的修改
這個(gè)時(shí)候我們直接啟動(dòng)heartbeat服務(wù),他會(huì)自動(dòng)調(diào)用ldirectord服務(wù),而我們的ldirectord的配置文件里的內(nèi)容完成著和LVS一樣的調(diào)度功能,這樣平臺(tái)搭建基本完成:

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

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

AI