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

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

生活随笔

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

编程问答

lvs的原理及应用

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

一、什么是lvs?

LVS是一個(gè)開源的軟件,由畢業(yè)于國(guó)防科技大學(xué)的章文嵩博士于1998年5月創(chuàng)立,可以實(shí)現(xiàn)LINUX平臺(tái)下的簡(jiǎn)單負(fù)載均衡。LVS是Linux Virtual Server的縮寫,意思是Linux虛擬服務(wù)器。

如圖:

二、技術(shù)簡(jiǎn)介

LVS集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請(qǐng)求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器自動(dòng)屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬服務(wù)器。整個(gè)服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,而且無(wú)需修改客戶端和服務(wù)器端的程序。為此,在設(shè)計(jì)時(shí)需要考慮系統(tǒng)的透明性、可伸縮性、高可用性和易管理性。一般來(lái)說(shuō),LVS集群采用三層結(jié)構(gòu),其主要組成部分為:

1) 負(fù)載調(diào)度器(load balancer),它是整個(gè)集群對(duì)外面的前端機(jī),負(fù)責(zé)將客戶的請(qǐng)求發(fā)送到一組服務(wù)器上執(zhí)行,而客戶認(rèn)為服務(wù)是來(lái)自一個(gè)IP地址(我們可稱之為虛擬IP地址)上的。

2) 服務(wù)器池(server pool),是一組真正執(zhí)行客戶請(qǐng)求的服務(wù)器,執(zhí)行的服務(wù)有WEB、MAIL、FTP和DNS等。

3) 共享存儲(chǔ)(shared storage),它為服務(wù)器池提供一個(gè)共享的存儲(chǔ)區(qū),這樣很容易使得服務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。

LVS集群種類通常是通過(guò)LVS Director中繼到集群節(jié)點(diǎn)的請(qǐng)求的方法來(lái)形容的,目前有三種可用的方法:

1) 網(wǎng)絡(luò)地址轉(zhuǎn)換(LVS-NAT)

Virtual Server via Network Address Translation(VS/NAT)
通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換,調(diào)度器重寫請(qǐng)求報(bào)文的目標(biāo)地址,根據(jù)預(yù)設(shè)的調(diào)度算法,將請(qǐng)求分派給后端的真實(shí)服務(wù)器;真實(shí)服務(wù)器的響應(yīng)報(bào)文通過(guò)調(diào)度器時(shí),報(bào)文的源地址被重寫,再返回給客戶,完成整個(gè)負(fù)載調(diào)度過(guò)程。

如圖:

2) 直接路由(LVS-DR)

Virtual Server via Direct Routing(VS/DR)

VS/DR通過(guò)改寫請(qǐng)求報(bào)文的MAC地址,將請(qǐng)求發(fā)送到真實(shí)服務(wù)器,而真實(shí)服務(wù)器將響應(yīng)直接返回給客戶。同VS/TUN技術(shù)一樣,VS/DR技術(shù)可極大地提高集群系統(tǒng)的伸縮性。這種方法沒(méi)有IP隧道的開銷,對(duì)集群中的真實(shí)服務(wù)器也沒(méi)有必須支持IP隧道協(xié)議的要求,但是要求調(diào)度器與真實(shí)服務(wù)器都有一塊網(wǎng)卡連在同一物理網(wǎng)段上。

如圖:

3) IP隧道(LVS-TUN)

Virtual Server via IP Tunneling(VS/TUN)
采用NAT技術(shù)時(shí),由于請(qǐng)求和響應(yīng)報(bào)文都必須經(jīng)過(guò)調(diào)度器地址重寫,當(dāng)客戶請(qǐng)求越來(lái)越多時(shí),調(diào)度器的處理能力將成為瓶頸。為了解決這個(gè)問(wèn)題,調(diào)度器把請(qǐng)求報(bào)文通過(guò)IP隧道轉(zhuǎn)發(fā)至真實(shí)服務(wù)器,而真實(shí)服務(wù)器將響應(yīng)直接返回給客戶,所以調(diào)度器只處理請(qǐng)求報(bào)文。由于一般網(wǎng)絡(luò)服務(wù)應(yīng)答比請(qǐng)求報(bào)文大許多,采用 VS/TUN技術(shù)后,集群系統(tǒng)的最大吞吐量可以提高10倍。

如圖:

LVS調(diào)度方法

1) 固定(或非動(dòng)態(tài))調(diào)度方法

循環(huán)法(RR)

權(quán)重循環(huán)(WRR)

目標(biāo)散列法

源散列法

2) 動(dòng)態(tài)調(diào)度方法

最少連接(LC)

權(quán)重最少連接(WLC)

最短預(yù)期延遲(SED)

永不排隊(duì)(NQ)

基于本地最少連接(LBLC)

基于本地最少連接重復(fù)調(diào)度(LBLCR)

三、案例 實(shí)現(xiàn)lvs負(fù)載均衡

案例一 使用lvs_nat模式

1)調(diào)度方法為rr

實(shí)驗(yàn)拓?fù)鋱D:

1. Load balancer配置

網(wǎng)絡(luò)配置

首先查看內(nèi)核是否支持ipvs

[root@localhost ~]# uname -r

2.6.18-164.el5

[root@localhost ~]# grep -i ip_vs /boot/config-2.6.18-164.el5

打開路由轉(zhuǎn)發(fā)功能,如下:

[root@localhost ~]# vim /etc/sysctl.conf

7 net.ipv4.ip_forward = 1

[root@localhost ~]# sysctl –p

##立即生效

[root@localhost ~]# yum install ipvsadm –y

安裝成功!

[root@localhost ~]# ipvsadm -A -t 192.168.101.15:80 -s rr

[root@localhost ~]# ipvsadm -a -t 192.168.101.15:80 -r 192.168.2.100 -m

[root@localhost ~]# ipvsadm -a -t 192.168.101.15:80 -r 192.168.2.101 -m

[root@localhost ~]# service ipvsadm save

Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]

[root@localhost ~]# service ipvsadm start

Clearing the current IPVS table: [ OK ]

Applying IPVS configuration: [ OK ]

[root@localhost ~]# 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.101.15:80 rr

-> 192.168.2.100:80 Masq 1 0 0

-> 192.168.2.101:80 Masq 1 0 0

2.Realserver1配置

網(wǎng)絡(luò)配置

安裝httpd服務(wù)

[root@localhost ~]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm

新建一個(gè)網(wǎng)頁(yè)

[root@localhost Server]# cd /var/www/html/

[root@localhost html]# echo "web1" >index.html

啟動(dòng)服務(wù)

[root@localhost ~]# service httpd start

3.Realserver2配置

網(wǎng)絡(luò)配置

安裝httpd服務(wù)

[root@localhost ~]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm

新建一個(gè)網(wǎng)頁(yè)

[root@localhost Server]# cd /var/www/html/

[root@localhost html]# echo "web2" >index.html

啟動(dòng)服務(wù)

[root@localhost ~]# service httpd start

測(cè)試

2)調(diào)度方法wrr

Load balancer配置

設(shè)置web1的權(quán)重為web2的2倍

[root@localhost ~]# vim /etc/sysconfig/ipvsadm

[root@localhost ~]# ipvsadm -E -t 192.168.101.15:80 -s wrr

[root@localhost ~]# ipvsadm -e -t 192.168.101.15:80 -r 192.168.2.100 -m -w 10

[root@localhost ~]# ipvsadm -e -t 192.168.101.15:80 -r 192.168.2.101 -m -w 5

[root@localhost ~]# service ipvsadm save

Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]

[root@localhost ~]# service ipvsadm restart

Clearing the current IPVS table: [ OK ]

Applying IPVS configuration: [ OK ]

測(cè)試

用user用戶訪問(wèn)3次

案例二 使用lvs_dr模式

實(shí)驗(yàn)拓?fù)鋱D

Realserver1的配置

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.all.arp_announce = 2" >>/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >>/etc/sysctl.conf

[root@localhost ~]# sysctl –p

配置網(wǎng)絡(luò)信息

添加路由

[root@localhost ~]# route add -host 192.168.2.11 dev lo:0

安裝httpd服務(wù)

[root@localhost ~]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm

新建一個(gè)網(wǎng)頁(yè)

[root@localhost Server]# cd /var/www/html/

[root@localhost html]# echo "web1" >index.html

啟動(dòng)服務(wù)

[root@localhost ~]# service httpd start

Realserver2配置

將realserver1的配置copy過(guò)來(lái)

[root@localhost ~]# scp 192.168.2.100:/etc/sysctl.conf /etc/

配置網(wǎng)絡(luò)信息

添加路由信息

[root@localhost ~]# route add -host 192.168.2.11 dev lo:0

安裝httpd服務(wù)

[root@localhost ~]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm

新建一個(gè)網(wǎng)頁(yè)

[root@localhost Server]# cd /var/www/html/

[root@localhost html]# echo "web1" >index.html

啟動(dòng)服務(wù)

[root@localhost ~]# service httpd start

LinuxDirector配置

配置網(wǎng)絡(luò)信息

安裝ipvsadm服務(wù)

[root@localhost ~]# cd /mnt/cdrom/

[root@localhost cdrom]# cd Cluster/

[root@localhost Cluster]# rpm -ivh ipvsadm-1.24-10.i386.rpm

啟動(dòng)服務(wù)

[root@localhost Cluster]# service ipvsadm save

Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]

[root@localhost Cluster]# service ipvsadm start

Clearing the current IPVS table: [ OK ]

Applying IPVS configuration: [ OK ]

[root@localhost Cluster]# chkconfig ipvsadm on

[root@localhost Cluster]# ipvsadm -A -t 192.168.2.11:80 -s rr

[root@localhost Cluster]# ipvsadm -a -t 192.168.2.11:80 -r 192.168.2.100 -g

[root@localhost Cluster]# ipvsadm -a -t 192.168.2.11:80 -r 192.168.2.101 -g

[root@localhost Cluster]# 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.2.11:80 rr

-> 192.168.2.101:80 Route 1 0 0

-> 192.168.2.100:80 Route 1 0 0

測(cè)試

持久連接

[root@localhost ~]# ipvsadm -A -t 192.168.2.11:0 -s rr -p 60

[root@localhost ~]# ipvsadm -a -t 192.168.2.11:0 -r 192.168.2.100 -g

[root@localhost ~]# ipvsadm -a -t 192.168.2.11:0 -r 192.168.2.101 -g

[root@localhost ~]# 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.2.11:0 rr persistent 60

-> 192.168.2.101:0 Route 1 0 0

-> 192.168.2.100:0 Route 1 0 0

[root@localhost ~]#

測(cè)試

在60s內(nèi)訪問(wèn)都是web2

轉(zhuǎn)載于:https://blog.51cto.com/xysun/1021417

總結(jié)

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

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