LVS(三)lvs+keeplive
一 場(chǎng)景引入1
??????? 我們知道LVS僅僅是做根據(jù)調(diào)度算法和策略來(lái)做負(fù)載均衡的,LVS本身只是調(diào)度后端服務(wù)器,并不管后端服務(wù)器的死活,想想這樣一個(gè)場(chǎng)景:如果由于由于某種原因,后端服務(wù)器掛掉,而調(diào)度服務(wù)器卻不知道,還一個(gè)勁頭的給其發(fā)送請(qǐng)求,后端服務(wù)器此時(shí)不響應(yīng)數(shù)據(jù),而客戶端會(huì)處于等待的狀態(tài)(直到超時(shí)),客戶體驗(yàn)不好!
??????? 說(shuō)明:后續(xù)有時(shí)間了再模擬這個(gè)場(chǎng)景(后端某個(gè)服務(wù)關(guān)閉,觀察實(shí)驗(yàn)現(xiàn)象)!
??????? 引出了我們今天要講解的心跳檢查(heartbeat),通俗點(diǎn)就是前端服務(wù)器檢查后端服務(wù)器的存活,進(jìn)而采取某種策略!
??????? 說(shuō)明:由于DR模式最常見(jiàn),所以我們以此種模式進(jìn)行講解!
二? lvs+directord
(1)directord的簡(jiǎn)單理解
?????????? directord 對(duì)lvs策略的動(dòng)態(tài)維護(hù):ldirectord是監(jiān)視集群節(jié)點(diǎn)(真實(shí)服務(wù)器),并從集群中自動(dòng)移除節(jié)點(diǎn),我們需要使用ldirectord程序,這個(gè)程序在啟動(dòng)時(shí)自動(dòng)建立IPVS表(不用手動(dòng)建立了),然后監(jiān)視集群節(jié)點(diǎn)的健康情況,在發(fā)現(xiàn)失效節(jié)點(diǎn)時(shí)將其自動(dòng)從IPVS表中移除。
(1)第一次安裝出現(xiàn)的問(wèn)題
yum install -y ldirectord-3.9.5-3.1.x86_64.rpm Error: Package: ldirectord-3.9.5-3.1.x86_64 (/ldirectord-3.9.5-3.1.x86_64)Requires: resource-agents說(shuō)明:安裝包從官網(wǎng)下載即可!
原因:沒(méi)有使用系統(tǒng)自帶的高可用套件,缺乏依賴,yum源進(jìn)行配置(所需安裝軟件在光盤(pán)上就可以,不需要額外配置yum源!
# 自帶附加高可用源 [HighAvailability] name="HighAvailability" baseurl=http://172.25.2.250/rhel7.3/addons/HighAvailability gpgcheck=0(2)正式安裝
yum install -y ldirectord-3.9.5-3.1.x86_64.rpm rpm -ql ldirectord-3.9.5-3.1.x86_64 # 查詢 cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/(3)編寫(xiě)配置文件
# 虛擬VIP-->核心配置文件! virtual=172.25.2.100:80real=172.25.2.201:80 gatereal=172.25.2.202:80 gatefallback=127.0.0.1:80 gateservice=httpscheduler=rr#persistent=600#netmask=255.255.255.255protocol=tcpchecktype=negotiatecheckport=80request="index.html"# 注意:一定要將其注釋!#receive="Test Page"#virtualhost=www.x.y.z檢測(cè):開(kāi)啟ldirectord服務(wù),然后通過(guò)ipvsadm -l 來(lái)看是否有IPVS表的規(guī)則!
注意:還是手動(dòng)寫(xiě)VIP,只是通過(guò)配置文件的形式幫助我們生成ipvs規(guī)則表!
補(bǔ)充:還得手動(dòng)開(kāi)啟服務(wù)!
理解:并不管理資源!
ip addr add 172.25.2.100/24 dev eth0 #配置VIP(由于是DR模式,所以三個(gè)都需要配置)(4)后端服務(wù)器的配置
VIP(手動(dòng)配置)和ARP策略
arptables -A INPUT -d 172.25.2.100 -j DROP arptables -A OUTPUT -s 172.25.2.100 -j mangle --mangle-ip-s 172.25.2.201# 兩個(gè)后端服務(wù)器一樣注意:服務(wù)必須自己開(kāi)啟!
(5)測(cè)試
測(cè)試1:兩個(gè)后端服務(wù)器均開(kāi)啟Apach服務(wù),然后客戶端測(cè)試看是否輪詢!
測(cè)試2:其中一個(gè)后端服務(wù)器關(guān)閉服務(wù),觀察此服務(wù)器是否被IPVS表移出,以及客戶端測(cè)試的內(nèi)容!
測(cè)試3:其中一個(gè)后端服務(wù)器有開(kāi)啟服務(wù),觀察此服務(wù)器是否被IPVS表添加,以及客戶端測(cè)試的內(nèi)容!
測(cè)試4:前端服務(wù)器也安裝httpd軟件,并開(kāi)啟服務(wù),看后端服務(wù)器掛掉的時(shí)候,前端服務(wù)器會(huì)不會(huì)頂上去!
說(shuō)明:在其它后端服務(wù)器都掛了的情況下,前端調(diào)度器也可以作為臨時(shí)服務(wù)器,但是一般時(shí)間很短!
配置文件的詳細(xì)解釋
原理
二:場(chǎng)景引入
???? 假如:lvs調(diào)度服務(wù)器掛掉了呢,是不是整個(gè)就癱瘓了,怎么辦?總得防患于未然,添加lvs的備用機(jī),如何監(jiān)控呢?
???? 引入:我們今天要講解的keepalived
???? 注意:做實(shí)驗(yàn)之前一定要事先關(guān)閉selinux和firewalld !
???? keepalived百度百科
? (1)源碼編譯安裝
#(1)說(shuō)明:第三方的包-->源碼安裝 # 最好進(jìn)入一個(gè)目錄! tar -zxf keepalived-2.0.6.tar.gz cd keepalived-2.0.6 #(2)安裝依賴的軟件 yum install gcc openssl-devel -y #(3)編譯-->6|7的區(qū)別 ./configure --prefix=/usr/local/keepalived --with-init=systemd #核心:Use IPVS Framework是否是Yes #(4)安裝 make && make install #(5)進(jìn)入對(duì)應(yīng)的目錄-->設(shè)置軟鏈接 cd /usr/local/keepalived/ ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ ln -s /usr/local/keepalived/etc/keepalived/ /etc/ ln -s /usr/local/keepalived/sbin/keepalived /sbin/ #(6)安裝郵件軟件 yum install -y mail #看是否發(fā)生報(bào)錯(cuò)信息!# 說(shuō)明:用的也是高可用的包!??? 說(shuō)明:主和備用的安裝方式一致!
(2)? 對(duì)配置文件進(jìn)行配置
安裝之前做一些清理工作
????? 1)IPVS規(guī)則的清理(-C)
????? 2)VIP的手動(dòng)刪除--->會(huì)自動(dòng)生成此VIP
配置文件參數(shù)的說(shuō)明!
# 全局配置 global_defs {notification_email {#(1)節(jié)點(diǎn)宕機(jī)了給誰(shuí)發(fā)送郵件!-->本機(jī)的root用戶(安裝mail軟件,看是否發(fā)送郵件)root@localhost}#(2)發(fā)送人的名稱notification_email_from keeplived@loclhost#(3)發(fā)送的服務(wù)器-->本機(jī)smtp_server 172.0.0.1#(4)指定smtp連接超時(shí)時(shí)間smtp_connect_timeout 30router_id LVS_DEVEL#(5)運(yùn)行keepalived機(jī)器的一個(gè)標(biāo)識(shí)!vrrp_skip_check_adv_addr#(6)必須注釋#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0 }vrrp_instance VI_1 {#(1)主節(jié)點(diǎn)的標(biāo)識(shí)state MASTER #BACKUP(備用的標(biāo)識(shí))interface eth0#(2)說(shuō)明:主和備用的必須一致virtual_router_id 51#(3)優(yōu)先級(jí),越大越優(yōu)先啟動(dòng)priority 100 #說(shuō)明:備用的必須小于100advert_int 1 # 檢查間隔authentication {auth_type PASS #認(rèn)證方式(密碼認(rèn)證)auth_pass 1111 #認(rèn)證的密碼}#(4)虛擬VIP-->不用手動(dòng)創(chuàng)建(可以創(chuàng)建多個(gè),對(duì)應(yīng)不同的服務(wù))virtual_ipaddress {172.25.2.100} } # 虛擬服務(wù)的相關(guān)配置-->理解成IPVS表規(guī)則 virtual_server 172.25.2.100 80 {delay_loop 6 # 當(dāng)rs報(bào)錯(cuò)時(shí)候,嘗試多少次之后才會(huì)發(fā)送郵件告知!lb_algo rr # 負(fù)載均衡的算法(10種)lb_kind DR # 默認(rèn)時(shí)NAT模式(這里選擇DR)#persistence_timeout 50 #注釋(保持連接的時(shí)間)protocol TCPreal_server 172.25.2.201 80 {TCP_CHECK {connect_port 80weight 1connect_timeout 3}}real_server 172.25.2.202 80 {TCP_CHECK {connect_port 80weight 1connect_timeout 3}} }說(shuō)明:備用只修改state和proprity
后端服務(wù)器的配置
ip addr add 172.25.2.100/24 dev eth0 arptables -A INPUT -d 172.25.2.100 -j DROP arptables -A OUTPUT -s 172.25.2.100 -j mangle --mangle-ip-s 172.25.2.201注意:要配置VIP,因?yàn)楹蠖朔?wù)器和前端控制器是想對(duì)獨(dú)立的
重啟之后的現(xiàn)象-->主
備用
測(cè)試1:后端服務(wù)器關(guān)閉和開(kāi)啟,看IPVS表的變化
說(shuō)明:這里省略
測(cè)試2:主LB關(guān)閉keepalived服務(wù),看IPVS表和VIP的走向
測(cè)試3:主LB開(kāi)啟keeplalived服務(wù)
說(shuō)明:keepalived備機(jī)在主機(jī)宕機(jī)的情況會(huì)自動(dòng)接管了資源,但待keepalived主機(jī)恢復(fù)正常的時(shí)候,主機(jī)會(huì)重新接管資源!
小知識(shí):IP/32表示是一個(gè)集群!
補(bǔ)充測(cè)試:看mail是否有郵件發(fā)送
總結(jié)
以上是生活随笔為你收集整理的LVS(三)lvs+keeplive的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java 中参数传递是传值还是引用?
- 下一篇: AC自动机:多模式串匹配实现敏感词过滤