LVS(三)lvs+keeplive
一 場景引入1
??????? 我們知道LVS僅僅是做根據(jù)調(diào)度算法和策略來做負(fù)載均衡的,LVS本身只是調(diào)度后端服務(wù)器,并不管后端服務(wù)器的死活,想想這樣一個場景:如果由于由于某種原因,后端服務(wù)器掛掉,而調(diào)度服務(wù)器卻不知道,還一個勁頭的給其發(fā)送請求,后端服務(wù)器此時不響應(yīng)數(shù)據(jù),而客戶端會處于等待的狀態(tài)(直到超時),客戶體驗(yàn)不好!
??????? 說明:后續(xù)有時間了再模擬這個場景(后端某個服務(wù)關(guān)閉,觀察實(shí)驗(yàn)現(xiàn)象)!
??????? 引出了我們今天要講解的心跳檢查(heartbeat),通俗點(diǎn)就是前端服務(wù)器檢查后端服務(wù)器的存活,進(jìn)而采取某種策略!
??????? 說明:由于DR模式最常見,所以我們以此種模式進(jìn)行講解!
二? lvs+directord
(1)directord的簡單理解
?????????? directord 對lvs策略的動態(tài)維護(hù):ldirectord是監(jiān)視集群節(jié)點(diǎn)(真實(shí)服務(wù)器),并從集群中自動移除節(jié)點(diǎn),我們需要使用ldirectord程序,這個程序在啟動時自動建立IPVS表(不用手動建立了),然后監(jiān)視集群節(jié)點(diǎn)的健康情況,在發(fā)現(xiàn)失效節(jié)點(diǎn)時將其自動從IPVS表中移除。
(1)第一次安裝出現(xià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說明:安裝包從官網(wǎng)下載即可!
原因:沒有使用系統(tǒng)自帶的高可用套件,缺乏依賴,yum源進(jì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)編寫配置文件
# 虛擬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檢測:開啟ldirectord服務(wù),然后通過ipvsadm -l 來看是否有IPVS表的規(guī)則!
注意:還是手動寫VIP,只是通過配置文件的形式幫助我們生成ipvs規(guī)則表!
補(bǔ)充:還得手動開啟服務(wù)!
理解:并不管理資源!
ip addr add 172.25.2.100/24 dev eth0 #配置VIP(由于是DR模式,所以三個都需要配置)(4)后端服務(wù)器的配置
VIP(手動配置)和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# 兩個后端服務(wù)器一樣注意:服務(wù)必須自己開啟!
(5)測試
測試1:兩個后端服務(wù)器均開啟Apach服務(wù),然后客戶端測試看是否輪詢!
測試2:其中一個后端服務(wù)器關(guān)閉服務(wù),觀察此服務(wù)器是否被IPVS表移出,以及客戶端測試的內(nèi)容!
測試3:其中一個后端服務(wù)器有開啟服務(wù),觀察此服務(wù)器是否被IPVS表添加,以及客戶端測試的內(nèi)容!
測試4:前端服務(wù)器也安裝httpd軟件,并開啟服務(wù),看后端服務(wù)器掛掉的時候,前端服務(wù)器會不會頂上去!
說明:在其它后端服務(wù)器都掛了的情況下,前端調(diào)度器也可以作為臨時服務(wù)器,但是一般時間很短!
配置文件的詳細(xì)解釋
原理
二:場景引入
???? 假如:lvs調(diào)度服務(wù)器掛掉了呢,是不是整個就癱瘓了,怎么辦?總得防患于未然,添加lvs的備用機(jī),如何監(jiān)控呢?
???? 引入:我們今天要講解的keepalived
???? 注意:做實(shí)驗(yàn)之前一定要事先關(guān)閉selinux和firewalld !
???? keepalived百度百科
? (1)源碼編譯安裝
#(1)說明:第三方的包-->源碼安裝 # 最好進(jìn)入一個目錄! 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)入對應(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)錯信息!# 說明:用的也是高可用的包!??? 說明:主和備用的安裝方式一致!
(2)? 對配置文件進(jìn)行配置
安裝之前做一些清理工作
????? 1)IPVS規(guī)則的清理(-C)
????? 2)VIP的手動刪除--->會自動生成此VIP
配置文件參數(shù)的說明!
# 全局配置 global_defs {notification_email {#(1)節(jié)點(diǎn)宕機(jī)了給誰發(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連接超時時間smtp_connect_timeout 30router_id LVS_DEVEL#(5)運(yùn)行keepalived機(jī)器的一個標(biāo)識!vrrp_skip_check_adv_addr#(6)必須注釋#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0 }vrrp_instance VI_1 {#(1)主節(jié)點(diǎn)的標(biāo)識state MASTER #BACKUP(備用的標(biāo)識)interface eth0#(2)說明:主和備用的必須一致virtual_router_id 51#(3)優(yōu)先級,越大越優(yōu)先啟動priority 100 #說明:備用的必須小于100advert_int 1 # 檢查間隔authentication {auth_type PASS #認(rèn)證方式(密碼認(rèn)證)auth_pass 1111 #認(rèn)證的密碼}#(4)虛擬VIP-->不用手動創(chuàng)建(可以創(chuàng)建多個,對應(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)錯時候,嘗試多少次之后才會發(fā)送郵件告知!lb_algo rr # 負(fù)載均衡的算法(10種)lb_kind DR # 默認(rèn)時NAT模式(這里選擇DR)#persistence_timeout 50 #注釋(保持連接的時間)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}} }說明:備用只修改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ù)器和前端控制器是想對獨(dú)立的
重啟之后的現(xiàn)象-->主
備用
測試1:后端服務(wù)器關(guān)閉和開啟,看IPVS表的變化
說明:這里省略
測試2:主LB關(guān)閉keepalived服務(wù),看IPVS表和VIP的走向
測試3:主LB開啟keeplalived服務(wù)
說明:keepalived備機(jī)在主機(jī)宕機(jī)的情況會自動接管了資源,但待keepalived主機(jī)恢復(fù)正常的時候,主機(jī)會重新接管資源!
小知識:IP/32表示是一個集群!
補(bǔ)充測試:看mail是否有郵件發(fā)送
總結(jié)
以上是生活随笔為你收集整理的LVS(三)lvs+keeplive的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 中参数传递是传值还是引用?
- 下一篇: AC自动机:多模式串匹配实现敏感词过滤