版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
可擴展高可用負載均衡網(wǎng)站架構(gòu)設(shè)計方案(完整版)doc資料
可擴展、高可用、負載均衡網(wǎng)站架構(gòu)設(shè)計方案可擴展高可用負載均衡網(wǎng)站架構(gòu)設(shè)計方案(完整版)doc資料2021-06-0813:22基本需求:1、高可用性:將停止服務(wù)時間降低到最低甚至是不間斷服務(wù)2、可擴展性:隨著訪問的增加,系統(tǒng)具備良好的伸縮能力3、可視性:系統(tǒng)、服務(wù)的狀態(tài)處于一個實時的監(jiān)控之下4、高性能高可靠性:經(jīng)過優(yōu)化的體系結(jié)構(gòu)及合理的備份策略5、安全性:結(jié)構(gòu)上的安全及主機的安全策略基本思路1、對于訪問頻繁,用戶量大的對象(bbs,blog)采用某種合理的方式負載到多個服務(wù)器上。把數(shù)據(jù)庫獨立出來,準備2套mysql數(shù)據(jù)庫,以實現(xiàn)主從復(fù)制,即減輕負載,又提高了可靠性。更近一步,使用mysqlproxy技術(shù),實現(xiàn)主從服務(wù)器的讀寫分離,大大提高這個系統(tǒng)的性能和負載能力。2、數(shù)據(jù)庫與外部網(wǎng)絡(luò)隔離,只允許web服務(wù)器(bbs,blog等)通過私有地址方式訪問。這樣就提高了數(shù)據(jù)庫的安全性,同時也節(jié)省了寶貴的帶寬。3、部署監(jiān)控系統(tǒng),通過監(jiān)控主機存活、服務(wù)、主機資源,實時把系統(tǒng)的健康狀態(tài)置于可視狀態(tài),對系統(tǒng)的運營狀態(tài)心中有數(shù)。4、備份是想都不用想的事情,使用單獨的服務(wù)器集中備份,是一個比較不錯的主意。拓撲結(jié)構(gòu)業(yè)務(wù)邏輯技術(shù)實現(xiàn)1、負載均衡。2臺同樣配置的linux服務(wù)器,內(nèi)核支持lvs,配置keepalived工具,即可實現(xiàn)負載轉(zhuǎn)發(fā)。一旦其后的真實服務(wù)器出現(xiàn)故障,keepalived會自動把故障機器從轉(zhuǎn)發(fā)隊列刪除掉,等到故障修復(fù),它又會自動把真實服務(wù)器的地址加入轉(zhuǎn)發(fā)列表。由于lvs支持會話保持,因此對于bbs這樣的應(yīng)用,一點也不用擔(dān)心其登錄丟失。2、mysql主從復(fù)制。即保證數(shù)據(jù)的安全,又提高了訪問性能。我們在前端的每個web服務(wù)器上加入mysqlproxy這個工具,即可期待實現(xiàn)讀寫的自動分離,讓寫的操作發(fā)生在主數(shù)據(jù)庫,讓查詢這類讀操作發(fā)生在從數(shù)據(jù)庫。3、nagios是一個開源的,受廣泛歡迎的監(jiān)控平臺。它可對主機的存活、系統(tǒng)資源(磁盤空間、負載等)、網(wǎng)絡(luò)服務(wù)進行實時監(jiān)控。一旦探測到故障,將自動發(fā)送郵件(短信)通知故障。4、備份。包括web數(shù)據(jù)和數(shù)據(jù)庫服務(wù)器的備份。對于web服務(wù)而言,GNUtar即可實現(xiàn)備份的一切愿望。簡單的設(shè)置一下crontab就可以讓系統(tǒng)在我們做夢的時刻老老實實的幫我們備份了。但是,由于空間的限制,不可能一直備份下去,所以要做一個合適的策略,以不斷的用新的備份去替換陳舊的備份數(shù)據(jù);多少天合適?看磁盤容量吧。對于數(shù)據(jù)庫,先mysqldump一下,再tar.完成這些工作后把備份文件傳輸?shù)絺浞莘?wù)器集中。一個比較省事的方法是把備份服務(wù)器以NFS方式掛接到web服務(wù)器及數(shù)據(jù)庫服務(wù)器。5、web服務(wù)器。至少包括apache和mysqlproxy這兩個組件。Apache做bbs和blog的容器,以虛擬機方式把用戶的請求轉(zhuǎn)發(fā)到bbs目錄或blog目錄。6、安全措施。包含兩層安全,一層是主機本身,另一層是結(jié)構(gòu)(mysql從外部網(wǎng)絡(luò)隔離)。實踐證明,iptables是一個非常值得信賴的防火墻工具。在實際應(yīng)用中,采取先關(guān)門后開窗的策略,大大增強系統(tǒng)的安全性。組件一、硬件:負載均衡2臺(dell1950),web服務(wù)器2-3臺(dell1950),數(shù)據(jù)庫2臺(dell2950),存儲NAS(5T格式化后容量),備份4u服務(wù)器(帶磁盤陣列5T容量),監(jiān)控服務(wù)器1臺(dell1850).二、軟件:操作系統(tǒng)centos5(定制安裝),負載均衡ipvsadm、keepalived,監(jiān)控nagios,web服務(wù)apache+php等,數(shù)據(jù)庫mysql,數(shù)據(jù)庫代理mysqlproxy.進度安排1、lvs負載均衡配置及測試:2-3天2、web服務(wù)器配置:2-3天3、mysql主從服務(wù)器配置:1-3天4、web數(shù)據(jù)遷移:1天5、數(shù)據(jù)庫數(shù)據(jù)遷移:2天6、上線測試:1-2天7、正式上線:2天!ConfigurationFileforkeepalivedglobal_defs{router_idLVS_DEVEL}vrrp_instanceVI_1{
statemaster
interfaceeth0
virtual_router_id59
priority100
advert_int1
authentication{
auth_typePASS
auth_pass1111
}virtual_ipaddress{}}virtual_server0080{
delay_loop6
lb_algorr
lb_kindDR
persistence_timeout50
protocolTCPreal_server0280{
weight100
TCP_CHECK{
connect_timeout3
nb_get_retry3
delay_before_retry3
connect_port80
}
}
real_server0380{
weight100
TCP_CHECK{
connect_timeout3
nb_get_retry3
delay_before_retry3
connect_port80
}
}
}真實服務(wù)器虛擬ip設(shè)置腳本#!/bin/bash
#description:startrealserver
VIP=00
./etc/rc.d/init.d/functions
case"$1"in
start)
echo"startLVSofREALServer"
/sbin/ifconfiglo:0$VIPbroadcast$VIPnetmask55up
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/ifconfiglo:0down
echo"closeLVSDirectorserver"
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"Usage:$0{start|stop}"
exit1
esac負載均衡及服務(wù)器集群(lvs)作者:田逸在互連網(wǎng)應(yīng)用技術(shù)里,負載均衡一直是熱門話題,本書討論的負載均衡技術(shù),包括但不限于負載均衡本身。使用負載均衡技術(shù)主要的目的包括如下幾點:◆系統(tǒng)高可用性。組成系統(tǒng)的某些設(shè)備或部件失效,并不會影響正常的服務(wù)?!粝到y(tǒng)可擴展性。用戶的增加,引起訪問數(shù)乃至流量的增加,這種情形下,需要對系統(tǒng)進行擴容,以應(yīng)對這種快速增長。對于提供高可用服務(wù)的互聯(lián)網(wǎng)網(wǎng)站,其對可擴展的基本要求就是在保持系統(tǒng)服務(wù)不終止的情況下,透明的擴充容量,即用戶不知道擴容的存在,或者說是擴容不對現(xiàn)有的服務(wù)產(chǎn)生任何負面作用。這些擴展主要包括:帶寬擴展、服務(wù)器擴展、存儲容量擴展、數(shù)據(jù)庫擴展等,當(dāng)然也包括主機增加內(nèi)存等方面的擴展。◆負載均衡能力。一個應(yīng)用或服務(wù)由數(shù)個物理服務(wù)器提供,并且每個物理服務(wù)器運行的應(yīng)用或服務(wù)是相同的,我們可以讓用戶的訪問通過某種控制策略,把負載分攤到不同的物理服務(wù)器,從而保持每個物理服務(wù)器有比較合理的負載。當(dāng)整個系統(tǒng)的負載趨于飽和時,通過增加物理服務(wù)器和擴充物理帶寬來解決這個麻煩。增加物理服務(wù)器以后,系統(tǒng)的負載情況將重新在所有集群的物理服務(wù)器之間按照指定的算法重新達到新的均衡。一個完整的負載均衡項目,一般由虛擬服務(wù)器、故障隔離及失敗切換3個功能框架所組成。虛擬服務(wù)器是負載均衡體系的基本架構(gòu),它分兩層結(jié)構(gòu):轉(zhuǎn)發(fā)器(Director)和真實服務(wù)器。為什么稱虛擬服務(wù)器?因為從用戶的角度看來,似乎只是一個服務(wù)器在提供服務(wù)。虛擬服務(wù)器最主要的功能是提供包轉(zhuǎn)發(fā)和負載均衡,這個功能可以通過撰寫ipvsadm腳本具體實現(xiàn)。虛擬服務(wù)器項目由章文嵩博士所貢獻,目前已被添加到各種linux發(fā)行版的內(nèi)核。故障隔離指虛擬服務(wù)器中的某個真實服務(wù)器(或某幾個真實服務(wù)器)失效或發(fā)生故障,系統(tǒng)將自動把失效的服務(wù)器從轉(zhuǎn)發(fā)隊列中清理出去,從而保證用戶訪問的正確性;另一方面,當(dāng)實效的服務(wù)器被修復(fù)以后,系統(tǒng)再自動地把它加入轉(zhuǎn)發(fā)隊列。失敗切換,這是針對負載均衡器Director采取的措施,在有兩個負載均衡器Director的應(yīng)用場景,當(dāng)主負載均衡器(MASTER)失效或出現(xiàn)故障,備份負載均衡器(BACKUP)將自動接管主負載均衡器的工作;一旦主負載均衡器故障修復(fù),兩者將恢復(fù)到最初的角色。要從技術(shù)上實現(xiàn)虛擬服務(wù)器、故障隔離及失敗切換3個功能,需要兩個工具:ipvsadm和keepalived。當(dāng)然也有heartbeat這樣的工具可以實現(xiàn)同樣的功能,但相對于keepalived,heartbeat的實現(xiàn)要復(fù)雜得多(如撰寫ipvsadm腳本,部署ldirectord,編寫資源文件等)。在采用keepalived的方案里,只要ipvsadm被正確的安裝,簡單的配置唯一的文件keepalived就行了。6.1lvs核心ipvsIpvs(IPVirtualServer)是整個負載均衡的基礎(chǔ),如果沒有這個基礎(chǔ),故障隔離與失敗切換就毫無意義了。在大部分linux發(fā)行版中,ipvs被默認安裝,而以本書前面介紹的方法定制安裝系統(tǒng),則ipvs沒有被默認安裝。除大部分linux發(fā)行版支持ipvs外,F(xiàn)reeBSD也可以支持LVS,只不過實現(xiàn)起來要麻煩一些。安裝ipvsIpvs具體實現(xiàn)是由ipvsadm這個程序來完成,因此判斷一個系統(tǒng)是否具備ipvs功能,只需要察看ipvsadm程序是否被安裝。察看ipvsadm程序最簡單的辦法就是在任意路徑執(zhí)行命令ipvsadm。執(zhí)行ipvsadm后的輸出未安裝ipvsadm-bash:ipvsadm:commandnotfoun安裝ipvsadmIPVirtualServerversion(size=4096)ProtLocalAddress:PortSchedulerFlags->RemoteAddress:PortForwardWeightActiveConnInActConn表6-1ipvsadm輸出對比(樣例來源)●Centos5.2安裝ipvsadm(假定當(dāng)前目錄為/root)1、從官方網(wǎng)站下載ipvsadm,目前最新的版本為,其發(fā)布時間是2021年11月5日。Wget取得該版本[1]。2、創(chuàng)建一個連接文件,其命令為:ln–sv/usr/src/kernels/-92.el5PAE-i686/usr/src/linux.注意一定要與當(dāng)前的運行的內(nèi)核相一致,因為/usr/src/kernels目錄下可多個目錄。如果不創(chuàng)建這個連接文件,在編譯時會出錯,從而不能繼續(xù)進行安裝。3、解包。4、編譯并安裝。cdipvsadm-1.24;make;makeinstall可執(zhí)行文件被安裝到/sbin/ipvsadm.●檢驗ipvsadm是否被正確安裝1、執(zhí)行ipvsadm。2、檢查當(dāng)前加載的內(nèi)核模塊,看是否存在ip_vs模塊。[root@hd-4ipvsadm-1.24]#lsmod|grepip_vsip_vs775690注1、只有執(zhí)行ipvsadm以后,才會在內(nèi)核加載ip_vs模塊。注2、不能以查進程的方式判斷ipvs是否運行。注[1]:如果下載最新的這個版本,在創(chuàng)建連接文件/usr/src/linux后,執(zhí)行編譯時,可能需要修改/boot/grub/grub.conf啟動內(nèi)核名稱。一旦當(dāng)前運行內(nèi)核與連接文件所代表的內(nèi)核名不一致時,將出現(xiàn)找不到*.h這樣的錯誤,從而導(dǎo)致安裝不能正常進行。lvs客戶端Lvs的客戶端指負載均衡其/轉(zhuǎn)發(fā)器(director)后面提供服務(wù)的真實機器。負載均衡類型(lb_kind)一般分直接路由模式DR、網(wǎng)絡(luò)地址轉(zhuǎn)換模式NAT以及隧道模式TUN三種。Lvs客戶端的配置是根據(jù)其所采用的負載均衡種類(lb_kind)來做相應(yīng)操作的。在我們的應(yīng)用環(huán)境里,為了獲得最高的性能,采用的負載均衡種類(lb_kind)是直接路由模式DR。不管采取哪一種模式,lvs客戶端都不需安裝額外的軟件。Lvs可支持的客戶端包括:各種GNU/linux、大部分unix已經(jīng)windows。目前我已經(jīng)成功運行的lvs客戶端環(huán)境有centos、redhat、freebsd、windows等。需要注意的是,由于客戶端操作系統(tǒng)的不同,lvs客戶端的配置也就各不相同了。本書中,將以centos及freebsd兩種操作系統(tǒng)作為lvs的客戶端,給出其直接路由模式DR的配置方法?!駆vs客戶端(真實服務(wù)器)操作系統(tǒng)是centos時的配置文件[root@huludao-2~]#more/usr/local/bin/lvs_real#!/bin/bash#description:startrealservercase"$1"instart)echo"startLVSofREALServer"echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignoreecho"2">/proc/sys/net/ipv4/conf/lo/arp_announceecho"1">/proc/sys/net/ipv4/conf/all/arp_ignoreecho"2">/proc/sys/net/ipv4/conf/all/arp_announce;;stop)/sbin/ifconfiglo:0downecho"closeLVSDirectorserver"echo"0">/proc/sys/net/ipv4/conf/lo/arp_ignoreecho"0">/proc/sys/net/ipv4/conf/lo/arp_announceecho"0">/proc/sys/net/ipv4/conf/all/arp_ignoreecho"0">/proc/sys/net/ipv4/conf/all/arp_announce;;*)echo"Usage:$0{start|stop}"exit1esac這里對配置文件里重要的一些項進行說明:1、vip(virtualip)。直接路由模式的vip必須跟服務(wù)器對外提供服務(wù)的ip地址在同一個網(wǎng)段,并且lvs負載均衡器和其他所有提供相同功能的服務(wù)器都使用這個vip.2、vip被綁定在環(huán)回接口lo0:0上,其廣播地址是其本身,子網(wǎng)掩碼是。這與標(biāo)準的網(wǎng)絡(luò)地址設(shè)置有很大的不同。采用這種可變長掩碼方式把網(wǎng)段劃分成只含一個主機地址的目的是避免ip地址沖突。3、echo“1”,echo“2”這段的作用是抑制arp廣播。如果不做arp抑制,將會有眾多的機器向其他宣稱:“嗨!我是奧巴馬,我在這里呢!”,這樣就亂套了。●lvs客戶端(真實服務(wù)器)操作系統(tǒng)是freebsd時的配置文件fav1#more/usr/local/bin/lvs_real_bsd#!/usr/local/bin/bash#description:startrealservercase"$1"instart)echo"startLVSofREALServer";;stop)/sbin/ifconfiglo0aliasdownecho"closeLVSDirectorserver";;*)echo"Usage:$0{start|stop}"exit1esac在這里,我們同樣對這個配置腳本的某些項進行說明:1、vip地址設(shè)置和arp抑制用這么一行就實現(xiàn)了。我們把這兩種操作系統(tǒng)的lvs客戶端做個比較,發(fā)現(xiàn)freebsd的配置書寫上要簡潔一些,是不是可以認為freebsd的網(wǎng)絡(luò)功能比linux強大呢?lvs客戶端驗證lvs客戶端不必依賴負載均衡器就可以獨立運行,只不過這種運行對負載均衡沒有任何作用,當(dāng)然也沒有任何副作用,所以我們把lvs客戶端配置完成后(配置文件就是一個shell腳本),可以單獨運行它,來檢驗配置是否正確?!馽entos腳本配置腳本寫好保存,給予腳本執(zhí)行權(quán)限。腳本啟停以start和stop這兩個參數(shù)來控制。首先,我們來啟動配置腳本,執(zhí)行命令/usr/local/bin/lvs_realstart,接著我們來檢查網(wǎng)絡(luò)的狀態(tài):[root@huludao-2~]#ipadd1:lo:<LOOPBACK,UP,LOWER_UP>mtu16436qdiscnoqueuelink/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet6::1/128scopehostvalid_lftforeverpreferred_lftforever2:eth0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_fastqlen100link/ether00:15:17:60:21:a0brdff:ff:ff:ff:ff:ffinet6fe80::215:17ff:fe60:21a0/64scopelinkvalid_lftforeverpreferred_lftforever3:eth1:<BROADCAST,MULTICAST>mtu1500qdiscnoopqlen1000link/ether00:15:17:60:21:a1brdff:ff:ff:ff:ff:ff4:sit0:<NOARP>mtu1480qdiscnooplink/sit從輸出可以看出,lo0:0確實綁定了我們指定的vip地址。那么當(dāng)我們執(zhí)行/usr/local/bin/lvs_real時,vip應(yīng)當(dāng)從lo0:0接口卸載。我們來看看輸出是什么:[root@huludao-2~]#lvs_realstopcloseLVSDirectorserver[root@huludao-2~]#ipadd1:lo:<LOOPBACK,UP,LOWER_UP>mtu16436qdiscnoqueuelink/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet6::1/128scopehostvalid_lftforeverpreferred_lftforever2:eth0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscpfifo_fastqlen100link/ether00:15:17:60:21:a0brdff:ff:ff:ff:ff:ffinet6fe80::215:17ff:fe60:21a0/64scopelinkvalid_lftforeverpreferred_lftforever3:eth1:<BROADCAST,MULTICAST>mtu1500qdiscnoopqlen1000link/ether00:15:17:60:21:a1brdff:ff:ff:ff:ff:ff4:sit0:<NOARP>mtu1480qdiscnooplink/sit噢,上帝!正是我們所期待的結(jié)果:vip從lo上消失了。●freebsd腳本/usr/local/bin/lvs_real_bsd啟停所使用的方法和參數(shù)與centos那個配置腳本是一樣的,但察看方法有所不同(freebsd無ipadd工具)。這里使用的方法是ifconfig,啟動時輸出如下:fav1#ifconfigem0:flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>metric0mtu1500options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>ether00:15:17:6e:c8:46media:Ethernetautoselect(100baseTX<full-duplex>)status:activelo0:flags=80c9<UP,LOOPBACK,RUNNING,NOARP,MULTICAST>metric0mtu16384inet6fe80::1%lo0prefixlen64scopeid0x3inet6::1prefixlen128當(dāng)執(zhí)行/usr/local/bin/lvs_real_bsdstop時,vip被卸載。有時可能卸載不成功,可能需要多執(zhí)行幾次停止命令。●arp抑制驗證如果不配置負載均衡器的轉(zhuǎn)發(fā)功能,那么在這個步驟所設(shè)置的vip將不會提供任何ip功能,除了能用ifconfig輸出顯示而外。在沒有配置或開啟lvs負載均衡器的情況下,我們用其他機器pingvip,應(yīng)該是不通的。當(dāng)然在網(wǎng)絡(luò)前面啟用了防火墻阻止ping不算。為了不影響測試,最好把你的防火墻打開。Arp抑制生效后,再也沒有機器知道vip的存在,這是一個問題,誰來響應(yīng)vip請求?這個問題交給負載均衡器吧,它知道這背后的一切。6.2故障隔離、失敗切換框架keepalivedKeepalived是運行在lvs之上,它的主要功能是實現(xiàn)真實機的故障隔離及負載均衡器間的失敗切換FailOver.lvs結(jié)合keepalived,就實現(xiàn)了3層、4層、5/7層交換的功能,下面摘錄來自官方網(wǎng)站的一段描述:Themaingoalofthekeepalivedprojectistoaddastrong&robustkeepalivefacilitytotheLinuxVirtualServerproject.ThisprojectiswritteninCwithmultilayerTCP/IPstackchecks.Keepalivedimplementsaframeworkbasedonthreefamilychecks:Layer3,Layer4&Layer5/7.ThisframeworkgivesthedaemontheabilityofcheckingaLVSserverpoolstates.WhenoneoftheserveroftheLVSserverpoolisdown,keepalivedinformsthelinuxkernelviaasetsockoptcalltoremovethisserverentriefromtheLVStopology.InadditionkeepalivedimplementsanindependentVRRPv2stacktohandledirectorfailover.SoinshortkeepalivedisauserspacedaemonforLVSclusternodeshealthchecksandLVSdirectorsfailover.從這段描述中,我們可以得到幾個有用的信息:1、keepalived是lvs的擴展項目,因此它們之間具備良好的兼容性。這點應(yīng)該是keepalived部署比其他類似工具能更簡潔的原因吧!2、通過對服務(wù)器池對象的健康檢查,實現(xiàn)對失效機器/服務(wù)的故障隔離。3、負載均衡器之間的失敗切換failover,是通過VRRPv2(VirtualRouterRedundancyProtocol)stack實現(xiàn)的。keepalived體系結(jié)構(gòu)Keepalived大致分兩層結(jié)構(gòu):用戶空間userspace和內(nèi)核空間kernelspace.圖6-2是來自官方站點()關(guān)于其結(jié)構(gòu)的展示。圖6-2keepalived內(nèi)部結(jié)構(gòu)圖在這個結(jié)構(gòu)圖里,處于下端的是內(nèi)核空間,它包括ipvs和NETLINK兩個部分。Ipvs的作用在前面的章節(jié)已經(jīng)做過描述,不再重復(fù)敘述;netlink提供高級路由及其他相關(guān)的網(wǎng)絡(luò)功能,如果我們在負載均衡器上啟用netfilter/iptable,將會直接影響它的性能。出于圖形上方的組件為用戶空間,由它來實現(xiàn)具體的功能,下面選取幾個重要的來做說明:1、WatchDog負責(zé)監(jiān)控checkers和VRRP進程的狀況。2、Checkers負責(zé)真實服務(wù)器的健康檢查healthchecking,是keepalived最主要的功能。換句話說—可以沒有VRRPStack,但健康檢查healthchecking是一定要有的。3、_______VRRPStack負責(zé)負載均衡器之間的失敗切換FailOver.如果只用一個負載均衡器,則VRRP不是必須的。4、IPVSwrapper用來發(fā)送設(shè)定的規(guī)則到內(nèi)核ipvs代碼。5、NetlinkReflector用來設(shè)定vrrp的vip地址等。Keepalived各種功能的實現(xiàn)是通過設(shè)置其配置文件keepalived.conf來完成的,關(guān)于配置文件各項的用途,將在后面的章節(jié)進行描述。安裝keepalived安裝keepalived非常的簡單和容易,這跟安裝其他GNU源碼軟件步驟是以模一樣的。下面給出其安裝過程。1、下載最新穩(wěn)定版wget2、解包tarzxvfkeepalived-3、切換目錄cdkeepalived-4、配置./configure–prefix=/usr/local/keepalive因為keepalived運行在ipvs之上,因此這兩個軟件一定要安裝在一個系統(tǒng)里面。如果configure操作能正常進行,運行完畢后將有如下的匯總輸出:KeepalivedconfigurationKeepalivedversion:Compiler:gccCompilerflags:-g-O2ExtraLib:-lpopt-lssl-lcryptoUseIPVSFramework:YesIPVSsyncdaemonsupport:YesUseVRRPFramework:YesUseLinkWatch:NoUseDebugflags:No5、編譯和安裝make;makeinstallkeepalived安裝驗證Keepalived安裝完成后,會在安裝目錄/usr/local/keepalived生成bin,etc,man,sbin這4個目錄。其中etc為配置文件所在的目錄,進入這個目錄,看看里面都有些什么?[root@ChinaTelecom-1etc]#pwd/usr/local/keepalived/etc[root@ChinaTelecom-1etc]#lltotal12drwxr-xr-x3rootroot4096Apr2310:23keepaliveddrwxr-xr-x2rootroot4096Apr2310:23sysconfig還有子目錄,這里著重關(guān)注一下keepalived目錄,它的下面包含一個完整的配置文件(實際上是一個樣例)以及一些單獨的配置樣例文件。[root@ChinaTelecom-1keepalived]#tree-l.`--samples值得注意的是,keepalived的啟動過程并不會對配置文件進行語法檢查,就算沒有配置文件,keepalived的守護進程照樣能夠被運行起來。在默認狀態(tài)下--即不指定配置文件的位置—keepalived先查找文件/etc/keepalived/keepalived.conf,如果為了省事,可以手動創(chuàng)建這個文件,然后在這個文件里書寫規(guī)則,來達到控制keepalived運行的目的。這里我們先來試試默認情況,即沒有配置文件下運行keepalived.運行前先了解一下其語法:[root@lvs-mkeepalived]#keepalived--helpKeepalivedv(06/23,2021)Usage:keepalivedkeepalived-nkeepalived-dkeepalived-hkeepalived-vCommands:Eitherlongorshortoptionsareallowed.keepalived--vrrp-POnlyrunwithVRRPsubsystem.keepalived--check-COnlyrunwithHealth-checkersubsystem.keepalived--dont-release-vrrp-VDontremoveVRRPVIPs&VROUTEsondaemonstop.keepalived--dont-release-ipvs-IDontremoveIPVStopologyondaemonstop.keepalived--dont-fork-nDontforkthedaemonprocess.keepalived--use-file-fUsethespecifiedconfigurationfile.Defaultis/etc/keepalived/keepalived.conf.keepalived--dump-conf-dDumptheconfigurationdata.keepalived--log-console-lLogmessagetolocalconsole.keepalived--log-detail-DDetailedlogmessages.keepalived--log-facility-S0-7SetsyslogfacilitytoLOG_LOCAL[0-7].(default=LOG_DAEMON)keepalived--help-hDisplaythisshortinlinedhelpscreen.keepalived--version-vDisplaytheversionnumberkeepalived--pid-ppidfilekeepalived--checkers_pid-ccheckerspidfilekeepalived--vrrp_pid-rvrrppidfile接下來我們參照這個幫助語法,執(zhí)行命令/usr/local/keepalived/sbin/keepalive–D,然后來檢查keepalived運行后的狀況。1、查看進程psaux|grepkeepalived,其輸出為:[root@lvs-m~]#psaux|grepkeepalived|grep-vgreproot217860.00.04840564?Ss15:390:00keepalived-Droot217874.80.048841336?S15:3923:47keepalived-Droot217884.90.04884904?S15:3924:15keepalived-DKeepalived正常運行時,共啟動3個進程,其中一個進程是父進程,負責(zé)監(jiān)控其子進程;一個是vrrp子進程;另外一個是checkers子進程。圖6-3為keepalived3個進程之間的關(guān)系。圖6-3keepalived進程相關(guān)性2、查看內(nèi)核模塊,ip_vs模塊應(yīng)該被加載到內(nèi)核空間。Lsmod|grepip_vs.3、查看系統(tǒng)日志。因為我在啟動keepalived是使用了選項–D,這將詳細的打印日志消息。[root@lvs-m~]#tail-f/var/log/messagesJun2700:58:05lvs-mKeepalived:StartingVRRPchildprocess,pid=22021Jun2700:58:05lvs-mKeepalived_healthcheckers:NetlinkreflectorreportsIPJun2700:58:05lvs-mKeepalived_healthcheckers:RegisteringKernelnetlinkreflectoraddedJun2700:58:05lvs-mKeepalived_healthcheckers:RegisteringKernelnetlinkcommandchannelJun2700:58:05lvs-mKeepalived_vrrp:RegisteringKernelnetlinkreflectorJun2700:58:05lvs-mKeepalived_vrrp:RegisteringKernelnetlinkcommandchannelJun2700:58:05lvs-mKeepalived_vrrp:RegisteringgratutiousARPsharedchannelJun2700:58:05lvs-mKeepalived_healthcheckers:Configurationisusing:2285BytesJun2700:58:05lvs-mKeepalived_vrrp:Configurationisusing:28803Bytes逐項檢查這個輸出。從而進一步證實keepalived安裝的正確性。配置文件一個功能比較完整的keepalived的配置文件,其配置文件keepalived.conf可以包含三個文本塊:全局定義塊、VRRP實例定義塊及虛擬服務(wù)器定義塊。全局定義塊和虛擬服務(wù)器定義塊是必須的,如果在只有一個負載均衡器的場合,就不須VRRP實例定義塊。接下來,我們以一個配置文件模版為例,有選擇的說明其中一些重要項的功能或作用。#全局定義塊global_defs{notification_email{emailemail}notification_email_fromemailsmtp_serverhostsmtp_connect_timeoutnumlvs_idstring}#VRRP實例定義塊vrrp_sync_groupstring{group{stringstring}vrrp_instancestring{stateMASTER|BACKUPinterfacestringmcast_src_ip@IPlvs_sync_daemon_interfacestringvirtual_router_idnumprioritynumadvert_intnumsmtp_alertauthentication{auth_typePASS|AHauth_passstring}virtual_ipaddress{#Blocklimitedto20IPaddresses@IP@IP@IP}virtual_ipaddress_excluded{#UnlimitedIPaddressesnumber@IP@IP@IP}#虛擬服務(wù)器定義塊virtual_server(@IPPORT)|(fwmarknum){delay_loopnumlb_algorr|wrr|lc|wlc|sh|dh|lblclb_kindNAT|DR|TUN(nat_mask@IP)persistence_timeoutnumpersistence_granularity@IPvirtualhoststringprotocolTCP|UDPsorry_server@IPPORTreal_server@IPPORT{weightnumTCP_CHECK{connect_portnumconnect_timeoutnum}}real_server@IPPORT{weightnumMISC_CHECK{misc_path(ormisc_path“/path_to_script/script.sh<arg_list>”)}}real_server@IPPORT{weightnum_GET|SSL_GET{url{#Youcanaddmultipleurlblockpathalphanumdigestalphanum}connect_portnumconnect_timeoutnumnb_get_retrynumdelay_before_retrynum}}}●全局定義塊1、email通知。作用:有故障,發(fā)郵件報警。這是可選項目,建議不用,用nagios全面監(jiān)控代替之。2、Lvs負載均衡器標(biāo)識(lvs_id)。在一個網(wǎng)絡(luò)內(nèi),它應(yīng)該是唯一的。3、花括號“{}”。用來分隔定義塊,因此必須成對出現(xiàn)。如果寫漏了,keepalived運行時,不會得到預(yù)期的結(jié)果。由于定義塊內(nèi)存在嵌套關(guān)系,因此很容易遺漏結(jié)尾處的花括號,這點要特別注意?!馰RRP定義塊1、同步vrrp組vrrp_sync_group。作用:確定失敗切換(FailOver)包含的路由實例個數(shù)。即在有2個負載均衡器的場景,一旦某個負載均衡器失效,需要自動切換到另外一個負載均衡器的實例是哪些?2、實例組group.至少包含一個vrrp實例。3、Vrrp實例vrrp_instance.實例名出自實例組group所包含的那些名字。(1)實例狀態(tài)state.只有MASTER和BACKUP兩種狀態(tài),并且需要大寫這些單詞。其中MASTER為工作狀態(tài),BACKUP為備用狀態(tài)。當(dāng)MASTER所在的服務(wù)器失效時,BACKUP所在的系統(tǒng)會自動把它的狀態(tài)有BACKUP變換成MASTER;當(dāng)失效的MASTER所在的系統(tǒng)恢復(fù)時,BACKUP從MASTER恢復(fù)到BACKUP狀態(tài)。(2)通信接口interface。對外提供服務(wù)的網(wǎng)絡(luò)接口,如eth0,eth1.當(dāng)前主流的服務(wù)器都有2個或2個以上的接口,在選擇服務(wù)接口時,一定要核實清楚。(3)lvs_sync_daemon_inteface。負載均衡器之間的監(jiān)控接口,類似于HAHeartBeat的心跳線。但它的機制優(yōu)于Heartbeat,因為它沒有“裂腦”這個問題,它是以優(yōu)先級這個機制來規(guī)避這個麻煩的。在DR模式中,lvs_sync_daemon_inteface與服務(wù)接口interface使用同一個網(wǎng)絡(luò)接口。(4)虛擬路由標(biāo)識virtual_router_id.這個標(biāo)識是一個數(shù)字,并且同一個vrrp實例使用唯一的標(biāo)識。即同一個vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的,同時在整個vrrp內(nèi)是唯一的。(5)優(yōu)先級priority.這是一個數(shù)字,數(shù)值愈大,優(yōu)先級越高。在同一個vrrp_instance里,MASTER的優(yōu)先級高于BACKUP。若MASTER的priority值為150,那么BACKUP的priority只能是140或更小的數(shù)值。(6)同步通知間隔advert_int.MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位為秒。(7)驗證authentication。包含驗證類型和驗證密碼。類型主要有PASS、AH兩種,通常使用的類型為PASS,據(jù)說AH使用時有問題。驗證密碼為明文,同一vrrp實例MASTER與BACKUP使用相同的密碼才能正常通信。4、虛擬ip地址virtual_ipaddress.可以有多個地址,每個地址占一行,不需要指定子網(wǎng)掩碼。注意:這個ip必須與我們在lvs客戶端設(shè)定的vip相一致!●虛擬服務(wù)器virtual_server定義塊虛擬服務(wù)器定義是keepalived框架最重要的項目了,是keepalived.conf必不可少的部分。1、虛擬服務(wù)器virtual_server.這個ip來自于vrrp定義塊的第“4”后加上端口號。定義一個vip,可以實現(xiàn)多個tcp端口的負載均衡功能。(1)delay_loop。健康檢查時間間隔,單位是秒。(2)lb_algo.負載均衡調(diào)度算法,互聯(lián)網(wǎng)應(yīng)用常使用wlc或rr。(3)lb_kind.負載均衡轉(zhuǎn)發(fā)規(guī)則。一般包括DR,NAT,TUN3種,在我的方案中,都使用DR的方式。(4)persistence_timeout.會話保持時間,單位是秒。這個選項對動態(tài)網(wǎng)站很有用處:當(dāng)用戶從遠程用帳號進行登陸網(wǎng)站時,有了這個會話保持功能,就能把用戶的請求轉(zhuǎn)發(fā)給同一個應(yīng)用服務(wù)器。在這里,我們來做一個假設(shè),假定現(xiàn)在有一個lvs環(huán)境,使用DR轉(zhuǎn)發(fā)模式,真實服務(wù)器有3個,負載均衡器不啟用會話保持功能。當(dāng)用戶第一次訪問的時候,他的訪問請求被負載均衡器轉(zhuǎn)給某個真實服務(wù)器,這樣他看到一個登陸頁面,第一次訪問完畢;接著他在登陸框填寫用戶名和密碼,然后提交;這時候,問題就可能出現(xiàn)了—登陸不能成功。因為沒有會話保持,負載均衡器可能會把第2次的請求轉(zhuǎn)發(fā)到其他的服務(wù)器。(5)轉(zhuǎn)發(fā)協(xié)議protocol.一般有tcp和udp兩種。實話說,我還沒嘗試過udp協(xié)議類的轉(zhuǎn)發(fā)。2、真實服務(wù)器real_server.也即服務(wù)器池。Real_server的值包括ip地址和端口號。多個連續(xù)的真實ip,轉(zhuǎn)發(fā)的端口相同,是不是可以以范圍表示?需要進一步實驗。如寫成(1)權(quán)重weight.權(quán)重值是一個數(shù)字,數(shù)值越大,權(quán)重越高。使用不同的權(quán)重值的目的在于為不同性能的機器分配不同的負載,性能較好的機器,負載分擔(dān)大些;反之,性能差的機器,則分擔(dān)較少的負載,這樣就可以合理的利用不同性能的機器資源。(2)Tcp檢查tcp_check.關(guān)于配置文件的理論我們就先講到這里。由于應(yīng)用場景的不同,配置文件也會有很大的差異,在接下來的章節(jié)里,我將以兩個具體的應(yīng)用來展示keepalived神奇功效。6.3cdn緩存服務(wù)器的負載均衡(lvs+keepalived)在cdn的某個區(qū)域,需要部署多個緩存服務(wù)器,以集群方式來應(yīng)對大量用戶的訪問請求,提高系統(tǒng)的高可用性。在機器數(shù)量較少的時候,我曾用dns輪訓(xùn)的方式把訪問負載分擔(dān)給服務(wù)器,效果不佳,因為DNS不會做健康檢查。后來增加機器,做成lvs集群,就很安心了。cdn緩存服務(wù)器集群場景6個服務(wù)器,2個服務(wù)器為lvs負載均衡器,4個服務(wù)器為真實服務(wù)器。另外為了方便遠程管理,還購置了一個KVMOVERIP設(shè)備。申請到8個公網(wǎng)ip地址,6個服務(wù)器用去6個,KVMOVERIP設(shè)備用掉1個,剩下1個作為VIP.4個真實服務(wù)器已經(jīng)部署好應(yīng)用(Varnish),并且只要修改本地windows的hosts文件,把域名指向這些ip,就可以通過這些緩存服務(wù)器訪問到網(wǎng)站內(nèi)容。關(guān)于緩存服務(wù)器的具體部署,請參照本書第7章“簡單cdn”。為了方便閱讀和理解,我把上述信息做成一個匯總表,如表6-2。角色所需ip實現(xiàn)負載所需軟件操作負載均衡器(MASTER)接口ip、VIPipvsadm,keepalived安裝ipvsadm及keepalived負載均衡器(BACKUP)接口ip、VIPipvsadm,keepalived安裝ipvsadm及keepalived真實服務(wù)器(serverpool)接口ip、VIPLvs客戶端配置腳本按“6.”寫配置腳本表6-2緩存服務(wù)器集群信息匯總cdn緩存服務(wù)器集群部署盡管部署cdn緩存服務(wù)器集群沒有先后順序之分,但為了部署順利進行,我們可以先從簡單的部分開始,即先從lvs客戶端開始,然后再到負載均衡器這邊?!裾鎸嵎?wù)器上的操作(每個服務(wù)器都是一樣的操作)1、照“節(jié)”的格式編寫lvs客戶端配置腳本,保存后給予執(zhí)行權(quán)限。其完整的內(nèi)容如下:[root@huludao-2~]#more/usr/local/bin/lvs_real#!/bin/bash#description:startrealservercase"$1"instart)echo"startLVSofREALServer"echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignoreecho"2">/proc/sys/net/ipv4/conf/lo/arp_announceecho"1">/proc/sys/net/ipv4/conf/all/arp_ignoreecho"2">/proc/sys/net/ipv4/conf/all/arp_announce;;stop)/sbin/ifconfiglo:0downecho"closeLVSDirectorserver"echo"0">/proc/sys/net/ipv4/conf/lo/arp_ignoreecho"0">/proc/sys/net/ipv4/conf/lo/arp_announceecho"0">/proc/sys/net/ipv4/conf/all/arp_ignoreecho"0">/proc/sys/net/ipv4/conf/all/arp_announce;;*)echo"Usage:$0{start|stop}"exit1esac2、運行和驗證這個配置腳本,其具體方法如前所敘,不再贅述?!褙撦d均衡器上的操作MASTER和BACKUP上安裝ipvsadm及keepalived的方法都是一樣的(具體步驟參見“6.及“6.”兩節(jié)的內(nèi)容),兩者之間的主要差異在于其配置文件keepalived.conf1、MASTER的配置文件/etc/keepalived/keepalived.conf.#gurationFileforkeepalived#globaldefineglobal_defs{router_idLVS_CNC_1}vrrp_sync_groupVGM{group{VI_CACHE}}#################################################################vvrp_instancedefine#################################################################vrrp_instanceVI_CACHE{stateMASTERinterfaceeth0lvs_sync_daemon_intefaceeth0virtual_router_id51priority180advert_int5authentication{auth_typeauth_pass1111}virtual_ipaddress{}}###############################################################virtualmachinesetting################################################################settingport80forwarddelay_loop6lb_algowlclb_kindDR#persistence_timeout20protocolTCPweight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}weight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}weight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}weight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}}2、BACKUP配置文件#gurationFileforkeepalived#globaldefineglobal_defs{router_idLVS_CNC_2}vrrp_sync_groupVGM{group{VI_CACHE}}#################################################################vrrp_instancesetting#################################################################vrrp_instanceVI_CACHE{stateBACKUPinterfaceeth1lvs_sync_daemon_intefaceeth1virtual_router_id51priority150advert_int5authentication{auth_typeauth_pass1111}virtual_ipaddress{}}###############################################################virtualserversetting################################################################settingport80forwarddelay_loop6lb_algowlclb_kindDR#persistence_timeout50protocolTCPweight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}weight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}weight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}weight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}}在這樣只有一個vrrp_instance的環(huán)境里,主負載均衡器(MASTER)與備份負載均衡器(BACKUP)配置文件的差異一共只有3處:全局定義的route_id、vrrp_instancestate已經(jīng)vrrp_instance的優(yōu)先級priority。負載均衡服務(wù)的啟用和驗證Lvs客戶端的啟用和驗證在前面的“6.”過,keepalived啟動過程不會檢查配置文件的語法,因此在啟動keepalived以前,需要人工對/etc/keepalived/keepalived.conf文件做全面的語法檢查。一個比較容易犯的錯誤就是把花括號“}”寫漏了,不成對!當(dāng)lvs客戶端都正常啟動并且配置文件經(jīng)檢查無誤后(當(dāng)然有錯誤也無妨,隨時可以修改嘛?。瑘?zhí)行命令/usr/local/keepalived/sbin/keepalived–D,然后我們查看系統(tǒng)進程,看是否是3個keepalived進程。如果配置文件的路徑不是/etc/keepalived/keepalived.conf則需要在啟動時用選項-f指定。最能反映keepalived啟動情況的地方當(dāng)屬系統(tǒng)日志。手動執(zhí)行啟動操作后,使用命令tail–f/var/log/messages滾動查看輸出,就能詳細了解其運行情況。另外一個反映keepalived正常運行狀態(tài)的地方是網(wǎng)絡(luò)接口vip的啟用。通過執(zhí)行ipadd即可看見vip已經(jīng)被綁定在制定的網(wǎng)絡(luò)接口(注意:ifconfig不能顯示vip)。需要注意的是,BACKUP的vip暫時不綁定。主負載均衡器(MASTER)與備份負載均衡器(BACKUP)輸出對比主負載均衡器(MASTER)和備份負載均衡器(BACKUP)的keepalived都把它運行起來,然后我們進行功能測試。●測試前的準備1、保證所有服務(wù)器的網(wǎng)絡(luò)服務(wù)正常。這可以通過ping所有機器的ip地址已經(jīng)pingvip來檢查。2、修改本地計算機的hosts文件,把域名跟vip綁定起來。然后再ping一下域名,看是否正常。如●轉(zhuǎn)發(fā)功能測試1、在本地機器執(zhí)行命令telnet80,檢查訪問是否正常。2、在本地計算機的瀏覽器地址欄輸入,看網(wǎng)站默認頁是否能正常訪問。3、登錄主負載均衡器,察看轉(zhuǎn)發(fā)情況。Lvs的轉(zhuǎn)發(fā)情況,是不能通過netstat–an這樣的方式來察看的。這時,前面我們安裝的ipvsadm終于上場了。執(zhí)行不帶任何選項的ipvsadm指令,即可察看tcp連接情況。如果想知道當(dāng)前測試機的訪問請求被轉(zhuǎn)發(fā)到那個服務(wù)器去了,可以在ipvsadm命令后帶一個選項,其完整形式為:?!窠】禉z查功能(故障隔離)測試通過手工的方法,使真實服務(wù)器提供的服務(wù)實效,然后再從客戶端發(fā)起訪問請求,檢驗lvs提供的服務(wù)是否可用。這種測試,有兩種方式:停止某個真實服務(wù)器的服務(wù)(本例為varnish)、關(guān)閉網(wǎng)絡(luò)服務(wù)。1、關(guān)閉真實服務(wù)器的varnish服務(wù)。先不能訪問為正常。然后再從本地計算機執(zhí)行如訪問正常,再檢查負載均衡器的輸出。這時停止服務(wù)的機器將被lvs從轉(zhuǎn)發(fā)列表中刪除,系統(tǒng)日志也會有被刪除的消息打印出來,2、關(guān)閉主機的網(wǎng)絡(luò)??梢躁P(guān)閉網(wǎng)絡(luò)接口或關(guān)閉服務(wù)器,然后再按第“1”檢查客戶端的訪問請求是否不受影響;轉(zhuǎn)發(fā)隊列是否把關(guān)閉網(wǎng)絡(luò)服務(wù)的對象刪除。3、關(guān)閉lvs的客戶端配置腳本/usr/local/bin/lvs_real。這個測試不會成功,關(guān)閉真實機器的vip以后,負載均衡器依然會把用戶請求轉(zhuǎn)發(fā)過來,可是tcp連接卻不能成功,部分用戶的訪問失敗。因此在部署和運維lvs環(huán)境時,要特別注意這一點。從上面的測試可知,關(guān)閉或停止服務(wù),負載均衡器通過健康檢查自動把實效的機器從轉(zhuǎn)發(fā)隊列刪除掉,實現(xiàn)故障隔離,保證用戶的訪問不受影響?!袷∏袚Q(FailOver)測試關(guān)閉主負載均衡器(MASTER)的keepalived進程,然后從客戶端訪問vip地址及本地綁定的域名。方法是及用瀏覽器訪問.檢查訪問是否正常。這是最直觀的表現(xiàn)方法。正常情況下,當(dāng)主負載均衡器(MASTER)實效時,備份負載均衡器(BACKUP)能立即接替轉(zhuǎn)發(fā)任務(wù)(接替時間由keepalived.conf文件的advert_int指定)。在確認主負載均衡器(MASTER)的keepalived進程關(guān)閉后,我們來看看備份負載均衡器的運行情況。這里我們觀察兩個地方:ipvsadm的輸出及系統(tǒng)日志的輸出。1、ipvsadm輸出變化。未接替轉(zhuǎn)發(fā)任務(wù)前,ipvsadm的輸出字段ActionConn、InActionConn對應(yīng)的值皆為“0”(因為沒有請求轉(zhuǎn)發(fā));接替轉(zhuǎn)發(fā)任務(wù)后,這兩個字段的值立即發(fā)生變化。2、系統(tǒng)輸出日志將記錄備份負載均衡器從BACKUP向MASTER切換過程,下面截取系統(tǒng)日志關(guān)于keepalived輸出的部分:Jul621:04:32telcom-dl-1Keepalived_vrrp:VRRP_Instance(VI_CACHE)TransitiontoMASTERJul621:04:32telcom-dl-1Keepalived_vrrp:VRRP_Group(VGM)SyncinginstancestoMASTERstateJul621:04:37telcom-dl-1Keepalived_vrrp:VRRP_Instance(VI_CACHE)EnteringMASTERJul621:04:37telcom-dl-1Keepalived_vrrp:VRRP_Instance(VI_CACHE)settingprotocolVIPs.Jul621:04:37telcom-dl-1Keepalived_vrrp:VRRP_Instance(VI_CACHE)Jul621:04:37telcom-dl-1Keepalived_vrrp:NetlinkreflectorreportsIPJul621:04:37telcom-dl-1Keepalived_healthcheckers:NetlinkreflectorreportsJul621:04:42telcom-dl-1Keepalived_vrrp:VRRP_Instance(VI_CACHE)現(xiàn)在再回來啟動主負載均衡器(MASTER)的keepalived進程,接著察看輔助負載均衡器(BACKUP)的系統(tǒng)日志,截取一段輸出如下:Jul621:18:12telcom-dl-1Keepalived_vrrp:VRRP_Instance(VI_CACHE)ReceivedhigherprioadvertJul621:18:12telcom-dl-1Keepalived_vrrp:VRRP_Instance(VI_CAHCE)EnteringBACKUPJul621:18:12telcom-dl-1Keepalived_vrrp:VRRP_Instance(VI_CACHE)removingprotocolVIPs.Jul621:18:12telcom-dl-1Keepalived_vrrp:VRRP_Group(VGM)SyncinginstancestoBACKUPstateJul621:18:12telcom-dl-1Keepalived_vrrp:NetlinkreflectorreportsIPJul621:18:12telcom-dl-1Keepalived_healthcheckers:Netlinkreflectorreports這段輸出顯示,備份服務(wù)器盡管曾經(jīng)行使了一段MASTER的職權(quán),一旦原來的MASTER復(fù)活,它就得把控制權(quán)乖乖地交給原MASTER,自己打回原形BACKUP。是什么東西在起作用呢?是配置文件里設(shè)置的那個優(yōu)先級“priority”。為了保證FailOver正常發(fā)揮作用,應(yīng)確保主負載均衡器的“priority”值大于備份負載均衡器的“priority”值。同樣,輔助負載均衡器的ipvsadm的輸出也會發(fā)生變化,這里不再多做說明。6.4多vrrp_instance負載均衡應(yīng)用在“CDN緩存服務(wù)器的負載均衡”一節(jié)中,我們詳細的介紹了單實例(vrrp_instance)、單虛擬地址(vip)實現(xiàn)負載均衡的方方面面,在這個應(yīng)用場景中,它最主要的特征就是:主負載均衡器負責(zé)轉(zhuǎn)發(fā),而備份負載均衡器則處于等待狀態(tài),只有主負載均衡器失效,備份負載均衡器才承擔(dān)用戶請求轉(zhuǎn)發(fā)任務(wù)。在多vrrp_instance負載均衡應(yīng)用場景下,我將讓兩個負載均衡器都轉(zhuǎn)發(fā)用戶請求,其主要用意在于提高資源的利用率。多vrrp_instance負載均衡需求描述本方案要實現(xiàn)一個web及自定義的tcp服務(wù)的負載均衡.其中web為3個站點,運行在同一個服務(wù)器上,以虛擬機的方式實現(xiàn);自定義的tcp服務(wù),使用兩個端口號,運行在不同的服務(wù)器上。在這個環(huán)境中,共有14個服務(wù)器:2個負載均衡器(分別命名為lvs-1、lvs-2),4個web服務(wù)器,4個運行自定義端口為3000tcp服務(wù)的服務(wù)器,以及4個運行自定義端口為4000tcp服務(wù)的服務(wù)器。本方案仍然使用負載均衡的DR模式,為了有效地使用緊缺的ip地址資源,我們只需要使用2個vip地址就可達到目的web服務(wù)使用一個vip,后面2個服務(wù)共用一個vip。VI_WEBVI_CTCPVI_WEB-MASTERVI_CTCP-BACKUPVI_WEBVI_CTCPVI_WEB--BACKUPVI_CTCP-MASTER項目Vip轉(zhuǎn)發(fā)端口(TCP)轉(zhuǎn)發(fā)規(guī)則Web(bbs、blog、www)自定義服務(wù)3000自定義服務(wù)4000Web服務(wù)支持的3個站點均為動態(tài)網(wǎng)站,其運行環(huán)境為apache加php,因為涉及帳號登錄,因此負載均衡過程必須啟用會話保持。這里把3個站點整合到一個物理服務(wù)器上,既能保持服務(wù)配置的一致性,又能最大限度的利用資源。關(guān)于動態(tài)站點及apache虛擬的配置,請參看其他章節(jié)的內(nèi)容。多vrrp負載集群部署參照“cdn緩存服務(wù)器集群部署”操作步驟,多vrrp_instance集群的部署也按真實服務(wù)器和負載均衡器2個環(huán)節(jié)來處理。●真實服務(wù)器上進行的操作1、編寫負載均衡客戶端配置腳本。本例中有3組真實服務(wù)器,每組服務(wù)器使用相同的lvs客戶端配置腳本。配置腳本除了vip而外,其余的部分與本章其他部分所列的lvs客戶端配置腳本完全相同。關(guān)于3個組vip地址使用情況,2、檢驗lvs客戶端配置腳本的正確性。●負載均衡器上的操作1、負載均衡器lvs_1(1)安裝ipvsadm。方法如前文所敘。(2)安裝keepalived。方法如前文所敘。(3)新增配置文件。為了跟第二個lvs負載均衡器做比較,我在后面把2個配置文件放在一個表格里,方便查看。2、負載均衡器lvs_2(1)安裝ipvsadm。方法如前文所敘。(2)安裝keepalived。方法如前文所敘。(3)新增配置文件。負載均衡器lvs_1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院感染的培訓(xùn)試題及答案
- 詞匯運用試題及答案
- 低碳經(jīng)濟培訓(xùn)考試試卷及答案(標(biāo)準版)
- 支氣管哮喘、支氣管擴張、肺炎及肺膿腫、肺結(jié)核聯(lián)合試題(附答案)
- 年建筑安全員c證考試題庫及答案
- 醫(yī)院感染管理培訓(xùn)試題及答案
- 茶藝師考試題及參考答案
- 學(xué)法考試題庫及答案
- 食品檢驗相關(guān)知識要點測試試卷及答案解析
- 醫(yī)院感染管理知識考核試卷及答案
- 北京市順義區(qū)2025-2026學(xué)年八年級上學(xué)期期末考試英語試題(原卷版+解析版)
- 中學(xué)生冬季防溺水主題安全教育宣傳活動
- 2026年藥廠安全生產(chǎn)知識培訓(xùn)試題(達標(biāo)題)
- 2026年陜西省森林資源管理局局屬企業(yè)公開招聘工作人員備考題庫及參考答案詳解1套
- 冷庫防護制度規(guī)范
- 承包團建燒烤合同范本
- 英語A級常用詞匯
- 小兒支氣管炎護理課件
- NB-T 47013.15-2021 承壓設(shè)備無損檢測 第15部分:相控陣超聲檢測
- 打針協(xié)議免責(zé)書
- 四川省成都市八年級上學(xué)期物理期末考試試卷及答案
評論
0/150
提交評論