LVS + keepalived構(gòu)造高可用負載均衡集群

背景

上篇講了LVS DR模式的負載均衡模式搭建革半,而負載均衡可以說就是高并發(fā)的主要解決方案,那高可用呢阅爽?這就是今天要玩的真竖。

關(guān)于keepalived

keepalived的基礎(chǔ)是VRRP協(xié)議,全稱Virtual Router Redundancy Protocol详幽,即虛擬路由冗余協(xié)議筛欢。

虛擬路由冗余協(xié)議,所謂冗余妒潭,那肯定需要有多臺機器悴能。該協(xié)議將多臺相同功能的路由器當成一個路由器組揣钦,組里包含一個master和多個backup雳灾,對外提供服務的VIP配置在master上。工作時冯凹,master發(fā)送組播谎亩,可理解為心跳。當backup收不到vrrp包就認為master服務不可用宇姚,此時其余backup根據(jù)VRRP的優(yōu)先級選舉master匈庭,并將VIP配置到該備機上,從而保證路由器的高可用浑劳。

keepalived有三個核心模塊阱持,分別是core、check和vrrp魔熏,

core模塊為keepalived的核心衷咽,負責主進程的啟動、維護以及全局配置文件的加載和解析

check負責后端機器的健康檢查蒜绽,包括常見的各種健康檢查方式

vrrp模塊即VRRP協(xié)議的實現(xiàn)镶骗。

keepalived主從配置

所謂主從配置,也就是說同一時刻只有一臺機器在工作躲雅,其余機器當做是備機鼎姊,不工作。

1相赁、環(huán)境準備

機器? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?作用

192.168.0.100? ? ? LVS調(diào)度器對外服務IP相寇,同時也是LVS主機

192.168.0.101? ? ? LVS備機

192.168.0.200? ? ? RIP,后端web服務器之一

192.168.0.300? ? ? RIP钮科,后端web服務器之二

2唤衫、后端web服務器,即RS配置

該部分配置參考負載均衡——LVS DR模式中的**《后端RS配置》**進行操作跺嗽,主要是虛ip的配置以及系統(tǒng)參數(shù)的配置战授。

當然页藻,一般這部分的操作我們都會寫成腳本。

3植兰、LVS主機配置

首先安裝keepalived份帐,

yum install -y keepalived

keepalived的配置文件路徑是/etc/keepalived/keepalived.conf,對于主LVS楣导,做如下配置废境,

! Configuration File for keepalived

global_defs {

? router_id LVS_1? ? ? ? ? ? ? ? ? ? ? #機器ID,用于區(qū)分機器設備

}

vrrp_instance VI_1 {? ? ? ? ? ? ? ? ? ? #LVS集群實例筒繁,可以配置多個

? ? state MASTER ? ? ? ? #MASTER表示這臺是主LVS噩凹,備機則是BACKUP

? ? interface eth0 ? ? ? ? ? ? #對外IP的網(wǎng)卡名稱

? ? virtual_router_id 51? ? ? ? ? ? ? ? #虛擬路由ID

? ? priority 100 ? ? ? ? ? ? #優(yōu)先級指數(shù),主機要比備機高

? ? advert_int 1? ? ? ? ? ? ? ? ? ? ? ? #vrrp通告的時間間隔毡咏,即組播發(fā)送時間間隔

? ? authentication {? ? ? ? #vrrp組鑒權(quán)認證驮宴,VRRPv2已經(jīng)不能使用

? ? ? ? auth_type PASS ? ? ? ? #認證方式,密碼

? ? ? ? auth_pass 1111 ? ? ? ? ? ? #密碼呕缭,最多只接受前8位字符堵泽,集群內(nèi)所有機器要設置一致

? ? }

? ? virtual_ipaddress {? ? ? ? ? ? ? ? ? #對外提供服務的虛擬IP,也就是用戶訪問的IP

? ? ? ? 192.168.0.100?

? ? }

}

virtual_server 192.168.0.100 80 {? #虛擬IP后端配置

? ? delay_loop 2 ? ? ? ? #后端健康檢查時間間隔s

? ? lb_algo rr ? ? ? ? #負載均衡算法恢总,rr|wrr|lc|wlc|lblc|sh|dh可選

? ? lb_kind DR? ? ? ? ? ? ? ? ? ? ? ? ? #表示LVS DR模式

? ? persistence_timeout 0? ? ? ? ? ? ? ? #連接保持時間迎罗,即同個IP在設置時間內(nèi)訪問同個后端負載,我們不開啟片仿,否則不好看到負載均衡效果

? ? protocol TCP

? ? real_server 192.168.0.200 80 {? ? ? #后端RS1

? ? ? ? weight 1? ? ? ? ? ? ? ? ? ? ? ? #輪詢權(quán)重

? ? ? ? TCP_CHECK {? ? ? ? ? ? ? ? ? ? ? #后端健康檢查方式? ? ? ? ? ?

? ? ? ? ? ? connect_timeout 1? ? ? ? ? ? #連接超時時間s纹安,根據(jù)網(wǎng)絡狀況設置

? ? ? ? ? ? retry 1? ? ? ? ? ? ? ? ? ? ? #重試次數(shù),達到重試次數(shù)仍失敗砂豌,后端將被從服務池中移除

? ? ? ? ? ? delay_before_retry 1? ? ? ? #重試時間間隔s

? ? ? ? ? ? connect_port 80? ? ? ? ? ? ? #檢測端口

? ? ? ? }

? ? }


? ? real_server 192.168.0.300 80 { #后端RS2

? ? ? ? weight 1

? ? ? ? TCP_CHECK {? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? connect_timeout 1?

? ? ? ? ? ? retry 1

? ? ? ? ? ? delay_before_retry 1

? ? ? ? ? ? connect_port 80

? ? ? ? }

? ? }

}

接著啟動keepalived服務史翘,

systemctl start keepalived

然后我們就能查看到我們配置的負載均衡策略胸囱,

[root@CentOS-7-2 ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

? -> RemoteAddress:Port? ? ? ? ? Forward Weight ActiveConn InActConn

TCP? 192.168.0.100:80 rr

? -> 192.168.0.200:80? ? ? ? ? ? Route? 1? ? ? 0? ? ? ? ? 0? ? ? ?

? -> 192.168.0.300:80? ? ? ? ? ? Route? 1? ? ? 0? ? ? ? ? 0

同時,出口網(wǎng)卡eth0上也能看到我們配置的虛擬ip,192.168.0.100上鞠,

[root@CentOS-7-2 ~]# ip a show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

? ? link/ether 00:0c:29:2e:74:89 brd ff:ff:ff:ff:ff:ff

? ? inet 192.168.0.140/24 brd 192.168.0.255 scope global eth0

? ? ? valid_lft forever preferred_lft forever

? ? inet 192.168.0.100/32 scope global eth0

? ? ? valid_lft forever preferred_lft forever

? ? inet6 fe80::20c:29ff:fe2e:7489/64 scope link

? ? ? valid_lft forever preferred_lft forever

4橘茉、配置備LVS

同樣需要安裝keepalived嘲驾,備機配置和主機的差別主要在于vrrp_instance段落绢要,

vrrp_instance VI_1 {? ? ? ? ? ? ? ? ? ? #LVS集群實例,可以配置多個

? ? state BACKUP #BACKUP表示這是個備機

? ? interface eth0 ? ? ? ? ? ? #對外IP的網(wǎng)卡名稱

? ? virtual_router_id 51? ? ? ? ? ? ? ? #虛擬路由ID

? ? priority 80 ? ? ? ? ? ? ? ? #優(yōu)先級指數(shù)蓄拣,備機要低于主機

? ? advert_int 1? ? ? ? ? ? ? ? ? ? ? ? #vrrp通告的時間間隔扬虚,即組播發(fā)送時間間隔

? ? authentication {? ? ? ? #vrrp組鑒權(quán)認證,VRRPv2已經(jīng)不能使用

? ? ? ? auth_type PASS ? ? ? ? #認證方式球恤,密碼

? ? ? ? auth_pass 1111 ? ? ? ? ? ? #密碼辜昵,最多只接受前8位字符,集群內(nèi)所有機器要設置一致

? ? }

? ? virtual_ipaddress {? ? ? ? ? ? ? ? ? #對外提供服務的虛擬IP咽斧,也就是用戶訪問的IP

? ? ? ? 192.168.0.100?

? ? }

}

其他段落均一致堪置,就不再粘貼躬存。

配置完,同樣需要啟動keepalived服務舀锨。

5岭洲、故障模擬

我們停掉注LVS上的keepalived服務,以模擬主LVS故障的情況坎匿,

systemctl stop keepalived

然后觀察LVS備機的/var/log/messages打印盾剩,

Jun 27 06:04:38 CentOS-7-3 Keepalived_vrrp[12710]: VRRP_Instance(VI_1) Transition to MASTER STATE

Jun 27 06:04:39 CentOS-7-3 Keepalived_vrrp[12710]: VRRP_Instance(VI_1) Entering MASTER STATE

Jun 27 06:04:39 CentOS-7-3 Keepalived_vrrp[12710]: VRRP_Instance(VI_1) setting protocol VIPs.

Jun 27 06:04:39 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

Jun 27 06:04:39 CentOS-7-3 avahi-daemon[506]: Registering new address record for 192.168.0.100 on eth0.IPv4.

Jun 27 06:04:39 CentOS-7-3 Keepalived_vrrp[12710]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 192.168.0.100

Jun 27 06:04:39 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

Jun 27 06:04:39 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

Jun 27 06:04:39 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

Jun 27 06:04:39 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

Jun 27 06:04:44 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

Jun 27 06:04:44 CentOS-7-3 Keepalived_vrrp[12710]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 192.168.0.100

Jun 27 06:04:44 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

Jun 27 06:04:44 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

Jun 27 06:04:44 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

Jun 27 06:04:44 CentOS-7-3 Keepalived_vrrp[12710]: Sending gratuitous ARP on eth0 for 192.168.0.100

可見,備機上位替蔬,成為了MASTER告私。再看備機的出口網(wǎng)卡信息,

[root@CentOS-7-3 ~]# ip a? show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

? ? link/ether 00:0c:29:36:e5:80 brd ff:ff:ff:ff:ff:ff

? ? inet 192.168.0.145/24 brd 192.168.0.255 scope global eth0

? ? ? valid_lft forever preferred_lft forever

? ? inet 192.168.0.100/32 scope global eth0

? ? ? valid_lft forever preferred_lft forever

? ? inet6 fe80::20c:29ff:fe36:e580/64 scope link

? ? ? valid_lft forever preferred_lft forever

可見承桥,VIP已經(jīng)漂移至備LVS驻粟,此時對外服務保持正常,實現(xiàn)了服務的高可用快毛,避免了單點故障格嗅。

但是番挺,主從模式也就意味著有一半的資源是沒有利用的唠帝,對于資源緊張的情況,甚是可惜玄柏,因此還可以采用雙主模式襟衰,也就是互為主備。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粪摘,一起剝皮案震驚了整個濱河市瀑晒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌徘意,老刑警劉巖苔悦,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異椎咧,居然都是意外死亡玖详,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門勤讽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蟋座,“玉大人,你說我怎么就攤上這事脚牍∠蛲危” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵诸狭,是天一觀的道長券膀。 經(jīng)常有香客問我君纫,道長,這世上最難降的妖魔是什么芹彬? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任庵芭,我火速辦了婚禮,結(jié)果婚禮上雀监,老公的妹妹穿的比我還像新娘双吆。我一直安慰自己,他們只是感情好会前,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布好乐。 她就那樣靜靜地躺著,像睡著了一般瓦宜。 火紅的嫁衣襯著肌膚如雪蔚万。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天临庇,我揣著相機與錄音反璃,去河邊找鬼。 笑死假夺,一個胖子當著我的面吹牛淮蜈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播已卷,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼梧田,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侧蘸?” 一聲冷哼從身側(cè)響起裁眯,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讳癌,沒想到半個月后穿稳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡晌坤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年逢艘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泡仗。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡埋虹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娩怎,到底是詐尸還是另有隱情搔课,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站爬泥,受9級特大地震影響柬讨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜袍啡,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一踩官、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧境输,春花似錦蔗牡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至信粮,卻和暖如春黔攒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背强缘。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工督惰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旅掂。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓赏胚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辞友。 傳聞我的和親對象是個殘疾皇子栅哀,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容