日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

LVS的运用

發(fā)布時(shí)間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LVS的运用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前文:本文主要介紹,輪詢(Round Robin) ,加權(quán)輪詢(Weighted Round Robin)? ,最少連接(Least Connections),? 加權(quán)最少連接(Weighted Least Connections),這4種常用調(diào)度算法,及LVS三種方法的NAT,DR這兩種模式,以及最后的一個(gè)實(shí)例


目錄

一.LVS的簡(jiǎn)潔

1.LVS是負(fù)載均衡(LB)集群

2. LVS集群組成?

3.LVS術(shù)語(yǔ)?

4.LVS工作模式?

5.負(fù)載均衡調(diào)度算法?

二.ipvsadm的語(yǔ)法格式 .及應(yīng)用示例

1.語(yǔ)法

2.基本示例

3.部署LVS-NAT集群

4.部署LVS-DR集群

4.手動(dòng)編寫(xiě)動(dòng)態(tài)檢測(cè)腳本


一.LVS的簡(jiǎn)潔

1.LVS是負(fù)載均衡(LB)集群

??????? LVS的優(yōu)點(diǎn)

???????????? - 負(fù)載能力強(qiáng),工作在4層,對(duì)內(nèi)存.CPU消耗第

???????????? - 配置性低,沒(méi)有太多可配置性,減少人為錯(cuò)誤

???????????? - 應(yīng)用面廣,幾乎可以為所有應(yīng)用提供負(fù)載均衡

???????? 缺點(diǎn)

????????????? - 不支持正則表達(dá)式,不能實(shí)現(xiàn)動(dòng)靜分離

????????????? - 如果網(wǎng)站架構(gòu)龐大,LVS-DR配置比較繁瑣

2. LVS集群組成?

????????前端:負(fù)載均衡層 由一臺(tái)或多臺(tái)負(fù)載調(diào)度器構(gòu)成?

????????中間:服務(wù)器群組層? 由一組實(shí)際運(yùn)行應(yīng)用服務(wù)的服務(wù)器組成?

????????底端:數(shù)據(jù)共享存儲(chǔ)層 提供共享存儲(chǔ)空間的存儲(chǔ)區(qū)域

3.LVS術(shù)語(yǔ)?

Director Server: 調(diào)度服務(wù)器?

????????將負(fù)載分發(fā)到Real Server的服務(wù)器?

RealServer:真實(shí)服務(wù)器?

????????真正提供應(yīng)用服務(wù)的服務(wù)器?

VIP:虛擬IP地址?

????????公布給用戶訪問(wèn)的虛擬IP地址?

DIP:調(diào)度器連接后端節(jié)點(diǎn)服務(wù)器的IP地址?

RIP:真實(shí)IP地址? 集群節(jié)點(diǎn)上使用的IP地址

4.LVS工作模式?

VS/NAT?

????????-通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換實(shí)現(xiàn)的虛擬服務(wù)器?

????????-大并發(fā)訪問(wèn)時(shí),調(diào)度器的性能成為瓶頸?

VS/DR?

????????-直接使用路由技術(shù)實(shí)現(xiàn)虛擬服務(wù)器?

????????-節(jié)點(diǎn)服務(wù)器需要配置VIP, 注意MAC地址廣播?

VS/TUN?

-通過(guò)隧道方式實(shí)現(xiàn)虛擬服務(wù)器

5.負(fù)載均衡調(diào)度算法?

LVS目前實(shí)現(xiàn)了10種調(diào)度算法

1.輪詢調(diào)度 2.加權(quán)輪詢調(diào)度 3.最小連接調(diào)度 4.加權(quán)最小連接調(diào)度 5.基于局部的最少連接 6.帶復(fù)制的基于局部性的最少連接 7.目標(biāo)地址散列調(diào)度 8.源地址散列調(diào)度U 9.最短的期望的延遲 10.最少隊(duì)列調(diào)度

二.ipvsadm的語(yǔ)法格式 .及應(yīng)用示例

1.語(yǔ)法

?

L是list查看,n是number數(shù)字格式顯示

-r:指定

-s后面指定調(diào)度算法,如rr(輪詢)、wrr(加權(quán)輪詢)、lc(最少連接)、wlc(加權(quán)最少連接)等等

-m指定集群工作模式為NAT模式,

-g則代表使用DR模式

-i代表TUN模式? -w 權(quán)重

2.基本示例

1)創(chuàng)建LVS虛擬集群服務(wù)器(算法為加權(quán)輪詢:wrr)

yum -y install ipvsadm ipvsadm -A -t 192.168.4.5:80 -s wrr #添加虛擬服務(wù)器 ipvsadm -Ln #查看

2)為集群添加若干真實(shí)服務(wù)

ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 #添加真實(shí)服務(wù)器器并指定調(diào)度服務(wù)器 ipvsadm -Ln #查看 ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -m -w 2 #添加真實(shí)服務(wù)器器并指定調(diào)度服務(wù)器并一NAT模式加權(quán)為2 ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.201 -m -w 3 #添加真實(shí)服務(wù)器器并指定調(diào)度服務(wù)器并一NAT模式加權(quán)為3 ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.202 -m -w 4 #添加真實(shí)服務(wù)器器并指定調(diào)度服務(wù)器并一NAT模式加權(quán)為4-a:真實(shí)服務(wù)器 -t:TCP -r:指定 -m:NAT模式 -w:權(quán)重

3)修改集群服務(wù)器設(shè)置(修改調(diào)度器算法,將加權(quán)輪詢修改為輪詢)

ipvsadm -E -t 192.168.4.5:80 -s rr #-E修改虛擬服務(wù)器,-t:TCP -s修改算法 rr論詢 ipvsadm -Ln #查看

4)修改真實(shí)服務(wù)器

ipvsadm -e -t 192.168.4.5:80 -r 192.168.2.202 -g #修改真實(shí)服務(wù)器將NAT模式改為DR -g:DR模式

5)查看LVS狀態(tài)

ipvsadm -Ln

6)刪除所有集群服務(wù)設(shè)置

ipvsadm -D -t 192.168.4.5:80

7)創(chuàng)建另一個(gè)集群(算法為最少連接算法;使用-m選項(xiàng),設(shè)置工作模式為NAT模式)

ipvsadm -A -t 192.168.4.5:3306 -s lc ipvsadm -a -t 192.168.4.5:3306 -r 192.168.2.100 -m ipvsadm -a -t 192.168.4.5:3306 -r 192.168.2.200 -m

8)永久保存所有規(guī)則(非必須的操作)

ipvsadm-save -n > /etc/sysconfig/ipvsadm

9)清空所有規(guī)則

ipvsadm -C

注意:查到規(guī)則永久規(guī)則需要確保ipvsadm服務(wù)為開(kāi)機(jī)啟動(dòng)服務(wù)才可以。

3.部署LVS-NAT集群

1)設(shè)置Web服務(wù)器

[root@web1 ~]# yum -y install httpd????????#安裝軟件 [root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html????#創(chuàng)建網(wǎng)頁(yè)文件 [root@web1 ~]# firewall-cmd --set-default-zone=trusted????????????#設(shè)置防火墻 [root@web1 ~]# setenforce 0 [root@web1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config [root@web2 ~]# yum -y install httpd????????#安裝軟件 [root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html????#創(chuàng)建網(wǎng)頁(yè)文件 [root@web2 ~]# firewall-cmd --set-default-zone=trusted????????????#設(shè)置防火墻 [root@web2 ~]# setenforce 0 [root@web2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config

2)啟動(dòng)Web服務(wù)器軟件

[root@web1 ~]# systemctl restart httpd [root@web2 ~]# systemctl restart httpd

沒(méi)有域名服務(wù)的服務(wù)要長(zhǎng)時(shí)間開(kāi)啟是沒(méi)有域名,系統(tǒng)要找,所以慢在服務(wù)器上改配置 /etc/httpd/conf/httpd.conf? #找ServerName開(kāi)頭的行去掉注釋行有域名

完成后可以使用proxy主機(jī)測(cè)試下是否可以訪問(wèn)web1和web2
?

[root@proxy ~]# curl http://192.168.2.100 [root@proxy ~]# curl http://192.168.2.200

3)配置網(wǎng)關(guān),將web1和web2的網(wǎng)關(guān)設(shè)置為調(diào)度器ip,如:192.168.2.5(不能照抄網(wǎng)卡名稱)

nmcli connection modify eth1 ipv4.method manual ipv4.gateway 192.168.2.5nmcli connection up eth1ip route show???????? #查看默認(rèn)網(wǎng)關(guān) [root@web2 ~]# nmcli connection modify eth1 ipv4.method manual ipv4.gateway 192.168.2.5 #備注:網(wǎng)卡名稱不能照抄,需要自己查看下的網(wǎng)卡名稱 [root@web2 ~]# nmcli connection up eth1 [root@web2 ~]# ip route show????????#查看默認(rèn)網(wǎng)關(guān),default后面的IP就是默認(rèn)網(wǎng)關(guān)

實(shí)驗(yàn)拓?fù)?/p>

LVS采用的是路由器的NAT通訊原理!通訊流程如下: 1)客戶端發(fā)送請(qǐng)求數(shù)據(jù)包(src:4.10,dst:4.5) 2)數(shù)據(jù)包被發(fā)送給LVS調(diào)度器,調(diào)度器做NAT地址轉(zhuǎn)換(外網(wǎng)轉(zhuǎn)內(nèi)網(wǎng),內(nèi)網(wǎng)轉(zhuǎn)外網(wǎng))a)數(shù)據(jù)包被修改為src:4.10,dst:2.100(dst也有可能被修改為2.200,隨機(jī)的)b)LVS調(diào)度器把數(shù)據(jù)包轉(zhuǎn)發(fā)給后端真正的web服務(wù)器(2.100) 3)web1收到數(shù)據(jù)包開(kāi)始回應(yīng)數(shù)據(jù)(rsc:2.100,dst:4.10)備注:誰(shuí)訪問(wèn)就給誰(shuí)回復(fù)數(shù)據(jù),因?yàn)閟rc是4.10,所以應(yīng)該給4.10回應(yīng)數(shù)據(jù)!但是,自己是2.100,對(duì)方是4.10,跨網(wǎng)段默認(rèn)無(wú)法通訊,如何解決???Web1和web2都需要設(shè)置默認(rèn)網(wǎng)關(guān)(也就是192.168.2.5) 4)web1想發(fā)送數(shù)據(jù)給4.10但是又無(wú)法與其通訊,所以數(shù)據(jù)包被交給默認(rèn)網(wǎng)關(guān) 5)LVS調(diào)度器(軟路由)收到后端web發(fā)送過(guò)來(lái)的數(shù)據(jù)后,再次做NAT地址轉(zhuǎn)換a)數(shù)據(jù)包被修改為src:4.5,dst:4.10b)LVS調(diào)度器把數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端主機(jī) 6)客戶端接收網(wǎng)頁(yè)數(shù)據(jù)內(nèi)容 注意:客戶端訪問(wèn)的是4.5,最后是4.5給客戶端回復(fù)的網(wǎng)頁(yè)數(shù)據(jù)!!!!

4)確認(rèn)調(diào)度器的路由轉(zhuǎn)發(fā)功能(如果已經(jīng)開(kāi)啟,可以忽略)\

(1)臨時(shí)?

???????? echo 1 > /proc/sys/net/ipv4/ip_forward???? #開(kāi)啟路由轉(zhuǎn)發(fā),臨時(shí)有效

?????????cat /proc/sys/net/ipv4/ip_forward????????? #查看效果

?(2)修改配置文件,設(shè)置永久規(guī)則

????????echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

5)創(chuàng)建集群服務(wù)器

yum -y install ipvsadm ipvsadm -A -t 192.168.4.5:80 -s wrr

6)添加真實(shí)服務(wù)器

[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -w 1 -m [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -w 1 -m

?7)查看規(guī)則列表(L是list查看,n是number數(shù)字格式顯示)

ipvsadm -Ln

8)設(shè)置防火墻,SELinux

[root@proxy ~]# firewall-cmd --set-default-zone=trusted [root@proxy ~]# setenforce 0 [root@proxy ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config

LVS NAT實(shí)驗(yàn)請(qǐng)求數(shù)據(jù)包從LVS調(diào)度器進(jìn),web的相應(yīng)數(shù)據(jù)包也從LVS調(diào)度器出,那么LVS調(diào)度器就需要承載所有數(shù)據(jù)的壓力,會(huì)成為整個(gè)集群的瓶頸!!

4.部署LVS-DR集群

1)網(wǎng)絡(luò)中的基本原則是A訪問(wèn)B,必須是B返回?cái)?shù)據(jù)給A,現(xiàn)在4.10訪問(wèn)4.5,最終4.100給4.10返回網(wǎng)頁(yè)數(shù)據(jù),所有數(shù)據(jù)包都會(huì)被丟棄!!!那怎么辦呢?地址欺騙!

注意:為了防止沖突,VIP必須要配置在網(wǎng)卡的虛擬接口

?2)設(shè)置Proxy服務(wù)器的VIP和DIP

[root@proxy ~]# cd /etc/sysconfig/network-scripts/(網(wǎng)卡配置文件) [root@proxy ~]# cp ifcfg-eth0 ifcfg-eth0:0(選擇與客戶端相同的網(wǎng)卡名位置) [root@proxy ~]# vim ifcfg-eth0:0 #網(wǎng)卡類型為:以太網(wǎng)卡 TYPE=Ethernet #none手動(dòng)配置IP,或者dhcp自動(dòng)配置IP BOOTPROTO=none #網(wǎng)卡名稱 NAME=eth0:0 #設(shè)備名稱 DEVICE=eth0:0 #開(kāi)機(jī)時(shí)是否自動(dòng)激活該網(wǎng)卡 ONBOOT=yes #IP地址 IPADDR=192.168.4.15 #子網(wǎng)掩碼 PREFIX=24 [root@proxy ~]# systemctl restart network????#重啟網(wǎng)絡(luò)服務(wù)(遠(yuǎn)程的時(shí)候會(huì)斷一瞬間) [root@proxy ~]# ip a s #會(huì)看到一個(gè)網(wǎng)卡下面有兩個(gè)IP地址

常見(jiàn)問(wèn)題:RHEL7和Centos7系統(tǒng)中有兩個(gè)管理網(wǎng)絡(luò)的服務(wù),有可能沖突?

解決方法:關(guān)閉NetworkManager服務(wù)后重啟network即可

systemctl stop NetworkManager systemctl restart network

3)設(shè)置服務(wù)器網(wǎng)絡(luò)參數(shù)

[root@web1 ~]# nmcli connection modify eth0 ipv4.method manual \ ipv4.addresses 192.168.4.100/24 connection.autoconnect yes [root@web1 ~]# nmcli connection up eth0

接下來(lái)給web1配置VIP地址。

注意:這里的子網(wǎng)掩碼必須是32(也就是全255),網(wǎng)絡(luò)地址與IP地址一樣,廣播地址與IP地址也一樣。Lo是本地回環(huán)

如果沒(méi)有l(wèi)o則查裝包:先查 yum provides "*ifcfg-lo*"

[root@web1 ~]# cd /etc/sysconfig/network-scripts/ [root@web1 ~]# cp ifcfg-lo ifcfg-lo:0 [root@web1 ~]# vim ifcfg-lo:0 #設(shè)備名稱 DEVICE=lo:0 #IP地址 IPADDR=192.168.4.15 #子網(wǎng)掩碼 NETMASK=255.255.255.255(主機(jī)性ip) #網(wǎng)絡(luò)地址 NETWORK=192.168.4.15 #廣播地址 BROADCAST=192.168.4.15 #開(kāi)機(jī)是否激活本網(wǎng)卡 ONBOOT=yes #網(wǎng)卡名稱 NAME=lo:0

防止地址沖突的問(wèn)題:

????????這里因?yàn)閣eb1也配置與調(diào)度器一樣的VIP地址,默認(rèn)肯定會(huì)出現(xiàn)地址沖突;

????????sysctl.conf文件寫(xiě)入這下面四行的主要目的就是訪問(wèn)192.168.4.15的數(shù)據(jù)包,只有調(diào)度器會(huì)響應(yīng),其他主機(jī)都不做任何響應(yīng),這樣防止地址沖突的問(wèn)題

root@web1 ~]# vim /etc/sysctl.conf #文件末尾手動(dòng)寫(xiě)入如下4行內(nèi)容,防止地址沖突(如果不加的話,arp廣播會(huì)應(yīng)答使其沖突) net.ipv4.conf.all.arp_ignore = 1(0不忽略,應(yīng)答;1忽略) net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2(0,對(duì)外宣告,1.通常不告訴別人,2.絕對(duì)不告訴別人) net.ipv4.conf.all.arp_announce = 2 #當(dāng)有arp廣播問(wèn)誰(shuí)是192.168.4.15時(shí),本機(jī)忽略該ARP廣播,不做任何回應(yīng)(防止進(jìn)站沖突) #本機(jī)不要向外宣告自己的lo回環(huán)地址是192.168.4.15(防止出站沖突) [root@web1 ~]# sysctl -p # (先刷新)在重啟網(wǎng)絡(luò)服務(wù) [root@web1 ~]# systemctl restart network????????#重啟網(wǎng)絡(luò)服務(wù) [root@web1 ~]# ip a s #會(huì)看到一個(gè)網(wǎng)卡下面有兩個(gè)IP地址

常見(jiàn)錯(cuò)誤:如果重啟網(wǎng)絡(luò)后未正確配置lo:0,有可能是NetworkManager和network服務(wù)有沖突,關(guān)閉NetworkManager后重啟network即可

[root@web1 ~]# systemctl stop NetworkManager [root@web1 ~]# systemctl restart network

注:如果有多臺(tái)的話配置如上

4)查看規(guī)則列表(L代表list查看規(guī)則,n代表number數(shù)字格式顯示)

ipvsadm -Ln

5)客戶端測(cè)試

客戶端使用curl命令反復(fù)連接http://192.168.4.15(此ip為調(diào)度服務(wù)器ip)

4.手動(dòng)編寫(xiě)動(dòng)態(tài)檢測(cè)腳本

[root@proxy ~]# vim check.sh #!/bin/bash VIP=192.168.4.15:80 RIP1=192.168.4.100 RIP2=192.168.4.200 while : dofor IP in $RIP1 $RIP2docurl -s http://$IP &>/dev/null if [ $? -eq 0 ];thenipvsadm -Ln |grep -q $IP || ipvsadm -a -t $VIP -r $IPelseipvsadm -Ln |grep -q $IP && ipvsadm -d -t $VIP -r $IPfidone sleep 1 done

總結(jié)

以上是生活随笔為你收集整理的LVS的运用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。