lvs+keepalived 構(gòu)建高可用集群
負(fù)載均衡LVS基本介紹
LB集群的架構(gòu)和原理很簡單舆逃,就是當(dāng)用戶的請求過來時,會直接分發(fā)到Director Server上,然后它把用戶的請求根據(jù)設(shè)置好的調(diào)度算法昂芜,智能均衡地分發(fā)到后端真正服務(wù)器(real server)上。為了避免不同機(jī)器上用戶請求得到的數(shù)據(jù)不一樣酥宴,需要用到了共享存儲煌往,這樣保證所有用戶請求的數(shù)據(jù)是一樣的。
LVS是 Linux Virtual Server 的簡稱令宿,也就是Linux虛擬服務(wù)器。這是一個由章文嵩博士發(fā)起的一個開源項(xiàng)目腕窥,它的官方網(wǎng)是 http://www.linuxvirtualserver.org 現(xiàn)在 LVS 已經(jīng)是 Linux 內(nèi)核標(biāo)準(zhǔn)的一部分粒没。使用 LVS 可以達(dá)到的技術(shù)目標(biāo)是:通過 LVS 達(dá)到的負(fù)載均衡技術(shù)和 Linux 操作系統(tǒng)實(shí)現(xiàn)一個高性能高可用的 Linux 服務(wù)器集群,它具有良好的可靠性簇爆、可擴(kuò)展性和可操作性癞松。從而以低廉的成本實(shí)現(xiàn)最優(yōu)的性能。LVS 是一個實(shí)現(xiàn)負(fù)載均衡集群的開源軟件項(xiàng)目入蛆,LVS架構(gòu)從邏輯上可分為調(diào)度層响蓉、Server集群層和共享存儲。
LVS 特點(diǎn)
LVS 是一種預(yù)裝在 Linux 系統(tǒng)中哨毁,基于四層枫甲、具有強(qiáng)大性能的反向代理服務(wù)器。ipvsadm 是 LVS 的命令行管理工具
- 首先它是基于 4 層的網(wǎng)絡(luò)協(xié)議的,抗負(fù)載能力強(qiáng)想幻,對于服務(wù)器的硬件要求除了網(wǎng)卡外粱栖,其他沒有太多要求;
- 配置性比較低脏毯,這是一個缺點(diǎn)也是一個優(yōu)點(diǎn)闹究,因?yàn)闆]有可太多配置的東西,大大減少了人為出錯的幾率食店;
- 應(yīng)用范圍比較廣渣淤,不僅僅對 web 服務(wù)做負(fù)載均衡,還可以對其他應(yīng)用(mysql)做負(fù)載均衡吉嫩;
- LVS 架構(gòu)中存在一個虛擬 IP 的概念砂代,需要向 IDC 多申請一個 IP 來做虛擬 IP
LVS組成部分
ipvs(ip virtual server):一段代碼工作在內(nèi)核空間,叫ipvs率挣,是真正生效實(shí)現(xiàn)調(diào)度的代碼刻伊。
ipvsadm:另外一段是工作在用戶空間,叫ipvsadm椒功,命令行工具, 用于管理集群服務(wù)及集群服務(wù)上的RS,負(fù)責(zé)為ipvs內(nèi)核框架編寫規(guī)則捶箱,定義誰是集群服務(wù),而誰是后端真實(shí)的服務(wù)器(Real Server)
LVS相關(guān)術(shù)語
- DS:Director Server动漾。指的是前端負(fù)載均衡器節(jié)點(diǎn)丁屎。
- RS:Real Server。后端真實(shí)的工作服務(wù)器旱眯。
- VIP:向外部直接面向用戶請求晨川,作為用戶請求的目標(biāo)的IP地址。
- DIP:Director Server IP删豺,主要用于和內(nèi)部主機(jī)通訊的IP地址共虑。
- RIP:Real Server IP,后端服務(wù)器的IP地址呀页。
- CIP:Client IP妈拌,訪問客戶端的IP地址
三種工作模式:
1)NAT模式:
NAT(Network Address Translation)網(wǎng)絡(luò)地址轉(zhuǎn)換,通過修改數(shù)據(jù)報(bào)頭蓬蝶,使得內(nèi)網(wǎng)中的IP可以和外部網(wǎng)絡(luò)進(jìn)行通信尘分。LVS負(fù)載調(diào)度器使用兩塊不同的網(wǎng)卡配置不同的IP地址,網(wǎng)卡一設(shè)置為公網(wǎng)IP負(fù)責(zé)與外部通信丸氛,網(wǎng)卡二設(shè)置內(nèi)網(wǎng)IP負(fù)責(zé)與內(nèi)網(wǎng)服務(wù)通信培愁。
外部用戶通過訪問LVS調(diào)度器的公網(wǎng)IP發(fā)送服務(wù)請求,LVS調(diào)度器接受請求后缓窜,將請求數(shù)據(jù)進(jìn)行轉(zhuǎn)換定续,通過內(nèi)網(wǎng)IP的網(wǎng)卡設(shè)備谍咆,根據(jù)調(diào)度策略將數(shù)據(jù)轉(zhuǎn)發(fā)給內(nèi)部服務(wù),內(nèi)部服務(wù)處理完成將響應(yīng)數(shù)據(jù)再返回給LVS調(diào)度器香罐,LVS調(diào)度器再將數(shù)據(jù)轉(zhuǎn)換通過公網(wǎng)IP的網(wǎng)卡設(shè)備將響應(yīng)結(jié)果返回給請求用戶卧波。
以上描述的就是一個基于NAT工作模式的LVS調(diào)度时肿,這種模式的瓶頸在于LVS調(diào)度器庇茫,因?yàn)樗械恼埱髷?shù)據(jù)和響應(yīng)數(shù)據(jù)都需要經(jīng)過LVS來進(jìn)行轉(zhuǎn)換處理,當(dāng)大流量到來時螃成,LVS調(diào)度器就成了一個短板旦签,限制整個集群服務(wù)性能的上限。
2)TUN模式:
TUN模式與NAT的不同在于寸宏,TUN模式下LVS調(diào)度器只負(fù)責(zé)接受請求宁炫,而真實(shí)服務(wù)器進(jìn)行響應(yīng)請給用戶。LVS調(diào)度器與真實(shí)服務(wù)器建立IP隧道氮凝,IP隧道它可以將原始數(shù)據(jù)包封裝并將新的源地址及端口羔巢、目標(biāo)地址及端口添加新的包頭中,將封裝后的數(shù)據(jù)通過隧道轉(zhuǎn)發(fā)給后端的真實(shí)服務(wù)器罩阵,真實(shí)服務(wù)器在收到請求數(shù)據(jù)包后直接給外部用戶響應(yīng)數(shù)據(jù)竿秆,這種模式下要求真實(shí)服務(wù)器具有直接外部用戶通信的能力。
外部用戶訪問LVS調(diào)度器發(fā)送服務(wù)請求稿壁,LVS調(diào)度器接收請求后幽钢,將請求數(shù)據(jù)轉(zhuǎn)換,根據(jù)調(diào)度策略將數(shù)據(jù)轉(zhuǎn)發(fā)給服務(wù)集群真實(shí)服務(wù)器傅是,真實(shí)服務(wù)器在處理完成后匪燕,就直接與外部請求用戶通信,直接將響應(yīng)結(jié)果返回給請求用戶喧笔。
以上描述就是一個基于TUN工作模式的LVS調(diào)度帽驯,這種模式下LVS調(diào)度器就只負(fù)責(zé)請求的負(fù)載均衡轉(zhuǎn)發(fā),而處理數(shù)據(jù)的響應(yīng)則全部由真實(shí)服務(wù)器來直接和用戶通信了书闸。在實(shí)際環(huán)境中界拦,請求的數(shù)據(jù)量往往是小于響應(yīng)的數(shù)據(jù)量,所以僅僅將請求數(shù)據(jù)讓LVS來轉(zhuǎn)發(fā)梗劫,好處就是LVS調(diào)度器的壓力減少很多享甸,可以承載更大的流量,同時真實(shí)服務(wù)器的性能也能得到充分利用梳侨,缺點(diǎn)就是真實(shí)服務(wù)器需要與外部網(wǎng)絡(luò)用戶直接通信蛉威,在安全上會存在一定風(fēng)險(xiǎn)。
3)DR模式:
DR模式是在TUN模式的基礎(chǔ)上又進(jìn)行了改造走哺,在DR模式下LVS調(diào)度器與真實(shí)服務(wù)器共享一個虛擬IP蚯嫌,且調(diào)度器的虛擬IP對外暴露,而真實(shí)服務(wù)器的虛擬IP地址將配置在Non-ARP的網(wǎng)絡(luò)設(shè)備上,這種網(wǎng)絡(luò)設(shè)備不會向外廣播自己的MAC及對應(yīng)的IP地址择示,這樣即保證了真實(shí)服務(wù)器可以接受虛擬IP的網(wǎng)絡(luò)請求也讓真實(shí)服務(wù)器所綁定的虛擬IP對外部網(wǎng)絡(luò)部是不可見的束凑。
外部用戶通過訪問虛擬IP將請求數(shù)據(jù)包發(fā)送到調(diào)度器,調(diào)度器根據(jù)調(diào)度策略確定轉(zhuǎn)發(fā)的真實(shí)服務(wù)器后栅盲,在不修改數(shù)據(jù)報(bào)文的情況下汪诉,將數(shù)據(jù)幀的MAC地址修改為選出的真實(shí)服務(wù)器的MAC地址,通過交換機(jī)將該數(shù)據(jù)幀發(fā)給真實(shí)服務(wù)器谈秫,之后真實(shí)服務(wù)器在處理完后進(jìn)行數(shù)據(jù)響應(yīng)時扒寄,會將虛擬IP封裝在數(shù)據(jù)包中,再經(jīng)過路由將數(shù)據(jù)返回給外部用戶拟烫,在這整個過程中该编,真實(shí)服務(wù)器對外部用戶不可見,外部用戶只能看到虛擬IP的地址
在DR模式下因?yàn)檎鎸?shí)服務(wù)器給外部用戶回應(yīng)的數(shù)據(jù)包設(shè)置的源IP是虛擬IP地址硕淑,又因?yàn)檎鎸?shí)服務(wù)器的虛擬IP不對外暴露课竣,這樣外部用戶在通過虛擬IP訪問時,就訪問到了調(diào)度器的虛擬IP地址置媳,就實(shí)現(xiàn)了整個集群對外部用戶透明于樟。
LVS的八種調(diào)度算法
1.輪叫調(diào)度 rr
這種算法是最簡單的,就是按依次循環(huán)的方式將請求調(diào)度到不同的服務(wù)器上半开,該算法最大的特點(diǎn)就是簡單隔披。輪詢算法假設(shè)所有的服務(wù)器處理請求的能力都是一樣的,調(diào)度器會將所有的請求平均分配給每個真實(shí)服務(wù)器寂拆,不管后端 RS 配置和處理能力奢米,非常均衡地分發(fā)下去。
2. 加權(quán)輪叫 wrr
這種算法比 rr 的算法多了一個權(quán)重的概念纠永,可以給 RS 設(shè)置權(quán)重鬓长,權(quán)重越高,那么分發(fā)的請求數(shù)越多尝江,權(quán)重的取值范圍 0 – 100涉波。主要是對rr算法的一種優(yōu)化和補(bǔ)充, LVS 會考慮每臺服務(wù)器的性能炭序,并給每臺服務(wù)器添加要給權(quán)值啤覆,如果服務(wù)器A的權(quán)值為1,服務(wù)器B的權(quán)值為2惭聂,則調(diào)度到服務(wù)器B的請求會是服務(wù)器A的2倍窗声。權(quán)值越高的服務(wù)器,處理的請求越多辜纲。
3. 最少鏈接 lc
這個算法會根據(jù)后端 RS 的連接數(shù)來決定把請求分發(fā)給誰笨觅,比如 RS1 連接數(shù)比 RS2 連接數(shù)少拦耐,那么請求就優(yōu)先發(fā)給 RS1
4. 加權(quán)最少鏈接 wlc
這個算法比 lc 多了一個權(quán)重的概念。
5. 基于局部性的最少連接調(diào)度算法 lblc
這個算法是請求數(shù)據(jù)包的目標(biāo) IP 地址的一種調(diào)度算法见剩,該算法先根據(jù)請求的目標(biāo) IP 地址尋找最近的該目標(biāo) IP 地址所有使用的服務(wù)器杀糯,如果這臺服務(wù)器依然可用,并且有能力處理該請求苍苞,調(diào)度器會盡量選擇相同的服務(wù)器固翰,否則會繼續(xù)選擇其它可行的服務(wù)器
6. 復(fù)雜的基于局部性最少的連接算法 lblcr
記錄的不是要給目標(biāo) IP 與一臺服務(wù)器之間的連接記錄,它會維護(hù)一個目標(biāo) IP 到一組服務(wù)器之間的映射關(guān)系柒啤,防止單點(diǎn)服務(wù)器負(fù)載過高倦挂。
7. 目標(biāo)地址散列調(diào)度算法 dh
該算法是根據(jù)目標(biāo) IP 地址通過散列函數(shù)將目標(biāo) IP 與服務(wù)器建立映射關(guān)系畸颅,出現(xiàn)服務(wù)器不可用或負(fù)載過高的情況下担巩,發(fā)往該目標(biāo) IP 的請求會固定發(fā)給該服務(wù)器。
8. 源地址散列調(diào)度算法 sh
與目標(biāo)地址散列調(diào)度算法類似没炒,但它是根據(jù)源地址散列算法進(jìn)行靜態(tài)分配固定的服務(wù)器資源
lvs構(gòu)建負(fù)載均衡集群
ip | |
---|---|
調(diào)度器 | 192.168.126.101 |
vip | 192.168.126.100 |
rs1 | 192.168.126.121 |
rs2 | 192.168.126.122 |
# eth0:1表示這個VIP綁定的目標(biāo)網(wǎng)卡設(shè)備涛癌,192.168.209.22就是VIP的值,廣播地址為192.168.209.255,子網(wǎng)掩碼為:255.255.255.0送火,up表示立即啟用這個VIP
# ifconfig eth0:1 192.168.209.22 broadcast 192.168.209.255 netmask 255.255.255.0 up
# 路由表上添加對這個VIP的路由信息
# route add -host 192.168.209.22 dev eth0:1
# LVS101調(diào)度器
systemctl stop NetworkManager # 關(guān)閉網(wǎng)卡守護(hù)進(jìn)程
cp /etc/sysconfig/network-scripts/ifcfg-ens32 ifcfg-ens32:0
# 拷貝 ens32 網(wǎng)卡子接口充當(dāng)集群入口接口
vim ifcfg-ens32:0
DEVICE=ens32:0
IPADDR=192.168.126.100
NETMASK=255.255.255.0
ifup ens32:0 #啟動網(wǎng)卡
yum -y install ipvsadm #安裝LVS
modprobe ip_vs #重載 ipvs 模塊
ipvsadm -v #查看當(dāng)前ipvs版本
ipvsadm -A -t 192.168.126.100:80 -s rr #添加一個集群并采用輪詢算法
ipvsadm -a -t 192.168.126.100:80 -r 192.168.126.121:80 -g
ipvsadm -a -t 192.168.126.100:80 -r 192.168.126.122:80 -g
#添加ipvsadm集群節(jié)點(diǎn)
ipvsadm -Ln #查看當(dāng)前集群
chkconfig ipvsadm on #設(shè)置為開機(jī)自啟
# web121
systemctl stop NetworkManager
cp /etc/sysconfig/network-scripts/ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.126.100
NETMASK=255.255.255.255
vim /etc/sysctl.conf #關(guān)閉對應(yīng)ARP響應(yīng)及公告功能
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
ifup lo:0 #重啟lo:0網(wǎng)卡
route add -host 192.168.126.100 dev lo:0 #添加路由
systemctl start httpd #啟動httpd服務(wù)
# 查看集群負(fù)載狀態(tài)
ipvsadm -Ln --stats
lvs+keepalived構(gòu)建高可用集群
Keepalived是什么拳话?
Keepalived是Linux下一個輕量級別的高可用解決方案≈治可以實(shí)現(xiàn)服務(wù)的高可用或熱備弃衍,用來防止單點(diǎn)故障的問題,Keepalived起初是為LVS設(shè)計(jì)的坚俗,專門用來監(jiān)控集群系統(tǒng)中各個服務(wù)節(jié)點(diǎn)的狀態(tài)镜盯,它根據(jù)TCP/IP參考模型的第三、第四層猖败、第五層交換機(jī)制檢測每個服務(wù)節(jié)點(diǎn)的狀態(tài)速缆,如果某個服務(wù)器節(jié)點(diǎn)出現(xiàn)異常,或者工作出現(xiàn)故障恩闻,Keepalived將檢測到艺糜,并將出現(xiàn)的故障的服務(wù)器節(jié)點(diǎn)從集群系統(tǒng)中剔除,這些工作全部是自動完成的幢尚,不需要人工干涉破停。而Keepalived的核心是VRRP協(xié)議,VRRP(Vritrual Router Redundancy Protocol,虛擬路由冗余協(xié)議) 主要實(shí)現(xiàn)了在路由器或三層交換機(jī)處的冗余尉剩,通過VRRP可以實(shí)現(xiàn)網(wǎng)絡(luò)不間斷穩(wěn)定運(yùn)行真慢,因此Keepalvied 一方面具有服務(wù)器狀態(tài)檢測和故障隔離功能,另外一方面也有HA cluster功能边涕,下面介紹一下VRRP協(xié)議實(shí)現(xiàn)的過程晤碘。
VRRP協(xié)議與工作原理
虛擬路由冗余協(xié)議(Virtual Router Redundancy Protocol褂微,簡稱VRRP) VRRP是一種路由容錯協(xié)議,也可以叫做備份路由協(xié)議园爷。VRRP可以將兩臺或者多臺物理路由器設(shè)備虛擬成一個虛擬路由宠蚂,這個虛擬路由器通過虛擬IP對外提供服務(wù),而在虛擬路由器內(nèi)部有多個物理路由器協(xié)同工作童社,同一時間只有一臺物理路由器對外提供服務(wù)求厕,這臺物理路由設(shè)備被設(shè)置成為:主路由器(Master角色),一般情況下Master是由選舉算法產(chǎn)生扰楼,它擁有對外服務(wù)的虛擬IP呀癣,提供各種網(wǎng)絡(luò)功能,而且其它的物理路由器不擁有對外的虛擬IP弦赖,也不提供對外網(wǎng)絡(luò)功能项栏,僅僅接收MASTER的VRRP狀態(tài)通告信息,這些路由器被統(tǒng)稱為“BACKUP的角色”蹬竖,當(dāng)主路由器失敗時沼沈,處于BACKUP角色的備份路由器將重新進(jìn)行選舉,產(chǎn)生一個新的主路由器進(jìn)入MASTER角色币厕,繼續(xù)提供對外服務(wù)列另,這種選舉角色切換非常之快,因而保證了服務(wù)的持續(xù)可用性旦装。
Keepalvied的工作原理
Keepalived是通過VRRP協(xié)議實(shí)現(xiàn)高可用性的页衙,Keepalived作為一個高性能集群軟件,它還能實(shí)現(xiàn)對集群中服務(wù)器運(yùn)行狀態(tài)的監(jiān)控以及故障隔離阴绢。
Keepalived工作在TCP/IP 參考模型的 三層店乐、四層、五層旱函,也就是分別為:網(wǎng)絡(luò)層响巢,傳輸層和應(yīng)用層,根據(jù)TCP棒妨、IP參數(shù)模型隔層所能實(shí)現(xiàn)的功能踪古,Keepalived運(yùn)行機(jī)制如下:
在網(wǎng)絡(luò)層: Keepalived在網(wǎng)絡(luò)層采用最常見的工作方式是通過ICMP協(xié)議向服務(wù)器集群中的每一個節(jié)點(diǎn)發(fā)送一個ICMP數(shù)據(jù)包,如果某個節(jié)點(diǎn)沒有返回響應(yīng)數(shù)據(jù)包券腔,那么認(rèn)為該節(jié)點(diǎn)發(fā)生了故障伏穆,Keepalived將報(bào)告這個節(jié)點(diǎn)失效,并從服務(wù)器集群中剔除故障節(jié)點(diǎn)纷纫。
在傳輸層: Keepalived在傳輸層里利用了TCP協(xié)議的端口連接和掃描技術(shù)來判斷集群節(jié)點(diǎn)的端口是否正常枕扫,比如對于常見的WEB服務(wù)器80端口∪杩或者SSH服務(wù)22端口烟瞧,Keepalived一旦在傳輸層探測到這些端口號沒有數(shù)據(jù)響應(yīng)和數(shù)據(jù)返回诗鸭,就認(rèn)為這些端口發(fā)生異常,然后強(qiáng)制將這些端口所對應(yīng)的節(jié)點(diǎn)從服務(wù)器集群中剔除掉参滴。
在應(yīng)用層:可以通過編寫程序或者腳本來運(yùn)行Keepalived强岸,而Keepalived將根據(jù)用戶的設(shè)定參數(shù)檢測各種程序或者服務(wù)是否允許正常,如果Keepalived的檢測結(jié)果和用戶設(shè)定的不一致時砾赔,Keepalived將把對應(yīng)的服務(wù)器從服務(wù)器集群中剔除
相關(guān)術(shù)語:
- LB (Load Balancer 負(fù)載均衡)
- HA (High Available 高可用)
- Failover (失敗切換)
- Cluster (集群)
- LVS (Linux Virtual Server Linux 虛擬服務(wù)器)
- DS (Director Server)蝌箍,指的是前端負(fù)載均衡器節(jié)點(diǎn)
- RS (Real Server),后端真實(shí)的工作服務(wù)器
- VIP (Virtual IP)暴心,虛擬的 IP 地址妓盲,向外部直接面向用戶請求,作為用戶請求的目標(biāo)的 IP 地址
- DIP (Director IP)专普,主要用于和內(nèi)部主機(jī)通訊的 IP 地址
- RIP (Real Server IP)悯衬,后端服務(wù)器的 IP 地址
- CIP (Client IP),訪問客戶端的 IP 地址
名稱 | IP地址 |
---|---|
LVS-Master | 10.239.103.51 |
LVS-Backup | 10.239.103.52 |
Web-A | 10.239.103.53 |
Web-B | 10.239.103.54 |
Web-C | 10.239.103.55 |
VIP | 10.239.103.250 |
LVS-Master/LVS-Backup 安裝ipvs
# 安裝lvs
yum -y install ipvsadm
# ipvsadm:命令行工具, 用于管理集群服務(wù)及集群服務(wù)上的RS等
# ipvs: 工作于內(nèi)核上的程序, 可根據(jù)用戶定義的集群實(shí)現(xiàn)請求轉(zhuǎn)發(fā)
modprobe ip_vs #重載 ipvs 模塊
lsmod | grep ip_vs
yum -y install gcc
yum -y install openssl-devel
LVS-Master/LVS-Backup 安裝keepalived
cd /usr/local/src
tar -zxvf keepalived-1.4.0.tar.gz
cd keepalived-1.4.0
./configure --prefix=/usr/local/keepalived
make && make install
keepalived.conf 配置示例
# /usr/local/keepalived/etc/keepalived/keepalived.conf
global_defs { #全局配置部分
notification_email {
acassen@firewall.loc #設(shè)置報(bào)警郵件地址脆诉,可以設(shè)置多個甚亭,每行一個贷币。
failover@firewall.loc #需開啟本機(jī)的sendmail服務(wù)
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #設(shè)置郵件的發(fā)送地址
smtp_server 127.0.0.1 #設(shè)置smtp server地址
smtp_connect_timeout 30 #設(shè)置連接smtp server的超時時間
router_id LVS_DEVEL #表示運(yùn)行keepalived服務(wù)器的一個標(biāo)識击胜。發(fā)郵件時顯示在郵件主題的信息
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { #vrrp實(shí)例定義部分
state MASTER #指定keepalived的角色,MASTER表示此主機(jī)是主服務(wù)器役纹,BACKUP表示此主機(jī)是備用服務(wù)器
interface eth0 #指定HA監(jiān)測網(wǎng)絡(luò)的接口
virtual_router_id 60 #虛擬路由標(biāo)識偶摔,這個標(biāo)識是一個數(shù)字,同一個vrrp實(shí)例使用唯一的標(biāo)識促脉。即同一vrrp_instance下辰斋,MASTER和BACKUP必須是一致的
priority 100 #定義優(yōu)先級,數(shù)字越大優(yōu)先級越高瘸味,在一個vrrp——instance下宫仗,master的優(yōu)先級必須大于backup
advert_int 1 #設(shè)定master與backup負(fù)載均衡器之間同步檢查的時間間隔,單位是秒
unicast_src_ip 10.239.103.51
unicast_peer {
10.239.103.52
}
authentication { #設(shè)置驗(yàn)證類型和密碼
auth_type PASS #主要有PASS和AH兩種
auth_pass 1111 #驗(yàn)證密碼旁仿,同一個vrrp_instance下MASTER和BACKUP密碼必須相同
}
virtual_ipaddress { #設(shè)置虛擬ip地址藕夫,可以設(shè)置多個,每行一個
10.239.103.250
}
}
virtual_server 10.239.103.250 80 { #設(shè)置虛擬服務(wù)器枯冈,需要指定虛擬ip和服務(wù)端口
delay_loop 3 #健康檢查時間間隔
lb_algo rr #負(fù)載均衡調(diào)度算法
lb_kind DR #負(fù)載均衡轉(zhuǎn)發(fā)規(guī)則
net_mask 255.255.255.0
persistence_timeout 50 #設(shè)置會話保持時間毅贮,對動態(tài)網(wǎng)頁非常有用
protocol TCP #指定轉(zhuǎn)發(fā)協(xié)議類型,有TCP和UDP兩種
real_server 10.239.103.53 31080 { #配置服務(wù)器節(jié)點(diǎn)1尘奏,需要指定real server的真實(shí)IP地址和端口
weight 1 #配置服務(wù)節(jié)點(diǎn)的權(quán)值滩褥,權(quán)值大小用數(shù)字表示,數(shù)字越大炫加,權(quán)值越高瑰煎,設(shè)置權(quán)值大小可以為不同性能的服務(wù)器
TCP_CHECK { #realserver的狀態(tài)監(jiān)測設(shè)置部分單位秒 TCP_CHECK { :注意TCK_CHECK和 {之間有一個空格铺然,忘記打這個空格的話,可能會出現(xiàn)后面用ipvsadm查看時酒甸,某個RS查看不到
connect_timeout 3 #超時時間
nb_get_retry 3 #重試次數(shù)
delay_before_retry 3 #重試間隔
connect_port 31080 #監(jiān)測端口
}
}
real_server 10.239.103.54 31080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 31080
}
}
real_server 10.239.103.55 31080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 31080
}
}
}
LVS-Master配置keepalived.conf
global_defs {
router_id keep_101
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 60
priority 90
advert_int 1
unicast_src_ip 10.239.103.51
unicast_peer {
10.239.103.52
}
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.239.103.250
}
}
virtual_server 10.239.103.250 80 {
delay_loop 3
lb_algo rr
lb_kind DR
net_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 10.239.103.53 31080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 31080
}
}
real_server 10.239.103.54 31080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 31080
}
}
real_server 10.239.103.55 31080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 31080
}
}
}
LVS-Backup配置keepalived.conf
global_defs {
router_id keep_102
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 60
priority 100
advert_int 1
unicast_src_ip 10.239.103.51
unicast_peer {
10.239.103.52
}
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.239.103.250
}
}
virtual_server 10.239.103.250 80 {
delay_loop 3
lb_algo rr
lb_kind DR
net_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 10.239.103.53 31080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 31080
}
}
real_server 10.239.103.54 31080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 31080
}
}
real_server 10.239.103.55 31080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 31080
}
}
}
LVS-Master/LVS-Backup keepalived注冊系統(tǒng)服務(wù)
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# 復(fù)制 keepalived 服務(wù)腳本到默認(rèn)的地址
cp /usr/local/src/keepalived-2.2.7/keepalived/etc/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
systemctl start keepalived
# 查看VIP映射關(guān)系
ipvsadm -L
realserver.sh
#!/bin/bash
#description: Config realserver
VIP=10.239.103.250
/etc/rc.d/init.d/functions
case "$1" in
start)
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
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 "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
Web-A/Web-B/Web-C執(zhí)行realserver.sh
vim /usr/local/server/realserver.sh
chmod 755 /usr/local/server/realserver.sh
realserver.sh start
realserver.sh stop