linux-lvs+keepalived

Linux-Lvs的DR模式實(shí)現(xiàn)后端真實(shí)服務(wù)器的負(fù)載均衡

DR模式也就是用直接路由技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。它的連接調(diào)度和管理與NAT模式一樣,但它的報(bào)文轉(zhuǎn)發(fā)方法不同,DR模式通過改寫請(qǐng)求報(bào)文的 MAC地址,將請(qǐng)求發(fā)送到Real Server,而Real Server將響應(yīng)直接返回給 客戶。這種方式是負(fù)載調(diào)度機(jī)制中性能最高最好的

文章正在審核中... - 簡書

keepalived+lvs實(shí)現(xiàn)實(shí)現(xiàn)負(fù)載均衡及高可用功能

如果單臺(tái)LVS發(fā)生突發(fā)情況,例如宕機(jī)、發(fā)生不可恢復(fù)現(xiàn)象,會(huì)導(dǎo)致用戶無 法訪問后端所有的應(yīng)用程序。避免這種問題可以準(zhǔn)備一臺(tái)臺(tái)備用的LVS,主 LVS 宕機(jī),LVS VIP自動(dòng)切換到從,繼續(xù)提供服務(wù)??梢曰?LVS+Keepalived實(shí)現(xiàn)負(fù)載均衡及高可用功能,滿足網(wǎng)站7x24小時(shí)穩(wěn)定高效 的運(yùn)行。

下面我們直接操作:(實(shí)驗(yàn)是基于關(guān)閉selinux和firewalld的)

安裝:

yum install ipvsadm -y

配置要點(diǎn):

調(diào)度器的VIP,DIP和后端真實(shí)服務(wù)器IP必須配置在同一網(wǎng)段,都使用僅 主機(jī)模式;

客戶端的IP與路由器外網(wǎng)IP保持一個(gè)網(wǎng)段,且客戶端的網(wǎng)關(guān)設(shè)置為路由 器的外網(wǎng)地址;

后端真實(shí)服務(wù)器網(wǎng)關(guān)設(shè)置為路由器的內(nèi)網(wǎng)地址;

路由器開啟數(shù)據(jù)包的轉(zhuǎn)發(fā);

后端真實(shí)服務(wù)器要抑制VIP的arp廣播;

RS服務(wù)器和LVS服務(wù)器的VIP以子接口方式配置;

記住配置網(wǎng)卡后,都需要重啟網(wǎng)卡哦(systemctl restart network)

環(huán)境:

nginx:(vip綁定在回環(huán)的網(wǎng)卡上)

RIP:192.168.1.103? VIP:192.168.1.200/32

RIP:192.168.1.104? VIP:192.168.1.200/32

lvs:(VIP以子接口方式配置)

DIP:192.168.1.102? VIP:192.168.1.200

RS:

#服務(wù)器要抑制VIP的arp廣播:

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

#RIP默認(rèn)網(wǎng)關(guān)指向192.168.1.105——VIp加到回環(huán)地址里面的

LVS:

#VIP和DIP的默認(rèn)網(wǎng)關(guān)都指向192.168.1.105

#配置LVS:

ipvsadm -A -t 192.168.1.200:80 # 工作模式如果不指定,默認(rèn)是DR模式,如需指定使用-g

ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.103

ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.104

#添加IP_VS模塊——lvs的IP負(fù)載均衡技術(shù)是通過IP_VS模塊來實(shí)現(xiàn)的

modprobe ip_vs

路由器:

#一個(gè)ip僅主機(jī),一個(gè)ip橋接。

#開啟數(shù)據(jù)轉(zhuǎn)發(fā):

臨時(shí):

echo 1 >/proc/sys/net/ipv4/ip_forward

永久:

vim /etc/sysctl.conf——追加

net.ipv4.ip_forward = 1

system -p——查看

客戶機(jī)測試:——成功


keepalived+lvs實(shí)現(xiàn)實(shí)現(xiàn)負(fù)載均衡及高可用功能

這里我們就在Linux-Lvs的DR模式實(shí)現(xiàn)后端真實(shí)服務(wù)器的負(fù)載均衡繼續(xù)做實(shí)驗(yàn)

我們先清空LVS集群服務(wù)

ipvsadm -C

master端:

安裝keepaalived:

yum install keepalived -y

修改配置文件:

! Configuration File for keepalived

global_defs {

? router_id node1

}

vrrp_instance VI_1 {

? ? state MASTER

? ? interface ens33

? ? virtual_router_id 51

? ? priority 100

? ? advert_int 1

? ? authentication {

? ? ? ? auth_type PASS

? ? ? ? auth_pass 1111

? ? }

? ? virtual_ipaddress {

? ? ? ? 192.168.1.200/24 #指定群集vip地址

? ? }

}

virtual_server 192.168.1.200 80 {

? ? delay_loop 6

? ? lb_algo rr #指定調(diào)度算法,輪詢(rr)

? ? lb_kind DR #指定群集工作模式,直接路由(DR)

? ? persistence_timeout 0 #回話保持時(shí)間

? ? protocol TCP #應(yīng)用服務(wù)采用的是 TCP協(xié)議

? ? sorry_server 192.168.1.200 80 #當(dāng)配置在lvs上的rs都無法訪問到時(shí),就需要有一臺(tái)備用的服務(wù)器來提供報(bào)錯(cuò)頁面

? ? real_server 192.168.1.103 80 {

? ? ? ? weight 1 #節(jié)點(diǎn)的權(quán)重

? ? ? ? HTTP_GET {

? ? ? ? ? ? url {

? ? ? ? ? ? ? path /

? ? ? ? ? ? ? status_code 200 #通過返回的狀態(tài)碼判斷服務(wù)是否存活

? ? ? ? ? ? # digest ff20ad2481f97b1754ef3e12ecd3a9cc #通過配置文件的哈希值判斷 獲取哈希的方法:genhash -s 192.168.1.104 -p 80 -u /index.html

? ? ? ? ? ? }

? ? ? ? ? ? connect_timeout 3 #檢測時(shí)長

? ? ? ? ? ? nb_get_retry 3 #添加重試次數(shù)

? ? ? ? ? ? delay_before_retry 3 #添加重試間隔

? ? ? ? }

? ? }

? ? real_server 192.168.1.104 80 { #添加第二個(gè) Web節(jié)點(diǎn)的地址、端口

? ? ? ? weight 1

? ? ? ? HTTP_GET {

? ? ? ? ? ? url {

? ? ? ? ? ? ? path /

? ? ? ? ? ? ? status_code 200

? ? ? ? ? ? # digest ff20ad2481f97b1754ef3e12ecd3a9cc

? ? ? ? ? ? }

? ? ? ? ? ? connect_timeout 3

? ? ? ? ? ? nb_get_retry 3

? ? ? ? ? ? delay_before_retry 3

? ? ? ? }

? ? }

}

啟動(dòng)keepalived

systemctl start keepalived——看到集群由keepalived啟動(dòng)

backup端:

和lvs配置一樣在backup服務(wù)器上也同樣配置一遍。

安裝keepalived

修改配置文件:

! Configuration File for keepalived

global_defs {

?? router_id node1

}

vrrp_instance VI_1 {

? ? state BACKUP

? ? interface ens33

? ? virtual_router_id 51

? ? priority 90

? ? advert_int 1

? ? authentication {

? ? ? ? auth_type PASS

? ? ? ? auth_pass 1111

? ? }

? ? virtual_ipaddress {

? ? ? ? 192.168.1.200/24 #指定群集vip地址

? ? }

}

virtual_server 192.168.1.200 80 {

? ? delay_loop 6

? ? lb_algo rr #指定調(diào)度算法,輪詢(rr)

? ? lb_kind DR #指定群集工作模式,直接路由(DR)

? ? persistence_timeout 0 #回話保持時(shí)間

? ? protocol TCP #應(yīng)用服務(wù)采用的是 TCP協(xié)議

? ? sorry_server 192.168.1.200 80 #當(dāng)配置在lvs上的rs都無法訪問到時(shí),就需要有一臺(tái)備用的服務(wù)器來提供報(bào)錯(cuò)頁面

? ? real_server 192.168.1.103 80 {

? ? ? ? weight 1 #節(jié)點(diǎn)的權(quán)重

? ? ? ? HTTP_GET {

? ? ? ? ? ? url {

? ? ? ? ? ? ? path /

? ? ? ? ? ? ? status_code 200 #通過返回的狀態(tài)碼判斷服務(wù)是否存活

? ? ? ? ? ?? # digest ff20ad2481f97b1754ef3e12ecd3a9cc #通過配置文件的哈希值判斷 獲取哈希的方法:genhash -s 192.168.1.104 -p 80 -u /index.html

? ? ? ? ? ? }

? ? ? ? ? ? connect_timeout 3 #檢測時(shí)長

? ? ? ? ? ? nb_get_retry 3 #添加重試次數(shù)

? ? ? ? ? ? delay_before_retry 3 #添加重試間隔

? ? ? ? }

? ? }

? ? real_server 192.168.1.104 80 { #添加第二個(gè) Web節(jié)點(diǎn)的地址、端口

? ? ? ? weight 1

? ? ? ? HTTP_GET {

? ? ? ? ? ? url {

? ? ? ? ? ? ? path /

? ? ? ? ? ? ? status_code 200

? ? ? ? ? ?? # digest ff20ad2481f97b1754ef3e12ecd3a9cc

? ? ? ? ? ? }

? ? ? ? ? ? connect_timeout 3

? ? ? ? ? ? nb_get_retry 3

? ? ? ? ? ? delay_before_retry 3

? ? ? ? }

? ? }

}

啟動(dòng)keepalived

systemctl start keepalived

測試:

master端關(guān)閉keepalived

systemctl stop keepalived

可以看到vip地址發(fā)生了飄移。(幾乎一秒不到)

客戶端測試:(任然可以正常訪問,幾乎不受任何影響)

()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容