1. 程式人生 > >LVS介紹

LVS介紹

LVS調度算法 LVS工作模式 ipvsadm使用

LVS負載調度器

根據請求報文的IP和目標協議以及端口進行調度;

VIP:對外提供的一個虛擬IP地址;

DIP:與後端服務器通訊的IP地址;

CIP:客戶端IP地址;

RIP:後端服務器IP地址;

RS:後端提供服務的服務器;

VS:調度器服務器;

CIP --> VIP == DIP --> RIP

LVS集群類型

1 lvs-nat:修改請求報文的目標IP,多目標IP的DNAT,調度器發送到後方RS的時候會變化目標IP地址換為RS的IP地址;,返回的時候目標IP是CIP,到達VS服務器的時候源IP會變為VIP


2 lvs-dr:封裝新的MAC地址(默認模式),返回報文的時候走新的線路,這樣的話VS壓力會變小,並且VS服務器只有一個網卡,上面有VIP和DIP,RS服務器都要配置VIP地址,防止地址沖突所以配置以下內容

RS服務器的內核中要更改以下配置:

"/proc/sys/net/ipv4/conf/lo/arp_ignore"設置為1,配置在回環網卡和all上;

0:默認值,表示可使用本地任意接口上配置的任一地址進行響應

1:不給予回應

"/proc/sys/net/ipv4/conf/lo/arp_announce

"設置為2,配置在回環網卡和all上;

0:默認值,將本機所有接口的信息向每個接口的網絡進行通告

1:盡量避免將接口信息向非直接連接網絡進行通告

2:避免對外宣稱接口信息

可以安裝"kernel-doc"包來查看幫助

less /usr/share/doc/kernel-doc-3.10.0/Documention/networking/ip-sysctl.txt #查看幫助搜索arp_ignore查看


3 lvs-tun(隧道模型):在源請求IP頭部添加一個新的IP頭部(源地址為DIP,目標地址為RIP地址,RS服務器也要添加一個VIP,但不怕沖突因為新的報文與RS之間可以添加路由,跨網絡DIP,VIP,RIP都應該是公網地址);

4 lvs-fullnat:修改請求報文的源和目標IP;

CIP --> DIP

VIP --> RIP


調度算法:

靜態調度(不考慮後端服務器狀態):

1 RR(roundrobin):輪詢算法

2 WRR(Weighted RR):加權輪詢

3 SH(Source Hashing):實現session sticky,源IP地址hash;將來自於同一個IP地址的請求始終發往第一次挑中的RS,實現會話綁定

4 DH(Destination Hashing):目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS,正向代理緩存比較常用


動態調度(會考慮後端服務器狀態):

1 LC(least connections):將新的請求調度到負載少的機器上;

負載量=當前活動連接x256+非活動連接

2 WLC(Weighted LC):默認調度方法,也是調度到負載少的機器上;

負載量=(當前活動連接x256+非活動連接)/weight

3 SED(Shortest Expection Delay):初始化連接的時候,高權重優先;

負載量=(當前活動連接+1)x256/weight

4 NQ(Nver Queue):第一次請求均勻分配,之後使用SED;

5 LBLC(Locality-Based LC):動態DH算法,根據負載的狀態實現正向代理;

6 LBLCR(LBLC with Replication):將負載重的相應的信息復制到新的服務器上,每個機器都有了之後就有可能調度到後端其他主機上;



LVS工具

ipvsadm/ipvs

ipvs:

grep -i ipvs -A 15 /boot/config-xxxxxxxxxxxxx #查看調度算法

ipvsadm

程序包:ipvsadm

安裝:yum install ipvsadm

查看:yum info ipvsadm

含帶工具:/usr/sbin/ipvsadm #進行操作的工具

/etc/sysconfig/ipvsadm-config #ipvsadm工具的配置文件

/usr/lib/systemd/system/ipvsadm.service #ipvsadm服務

/usr/sbin/ipvsadm-restore #負責將文件中的規則加載到內存中的工具


功能以及用法:

對VS服務器做管理:增、刪、改、查

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p[timeout]]

-A:增加

-E:更改

ipvsadm -D -t|u|f service-address

-D:刪除

service-address(服務地址格式按照後方格式寫)VIP:TCP_PORT

-t|u|f:

-u:UDP協議的端口 VIP:UDP_PORT

-f:firewall MARK(防火墻標簽iptables的mangel表當中修改數據包,比如可以將http與https打一個標簽兒就相當於認為是一個服務了)

[-s scheduler]:指定調度算法,不寫的話默認是wlc;

對RS服務器的管理:增、刪、改、查

增、改:ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]

選項:

lvs類型:

-g:gateway,dr類型(默認)

-i:ip,tun類型

-m:masquerade,nat類型

-w weight:權重

刪:ipvsadm -d -t|u|f service-address -r server-address

server-address:

rip[:port]:如果省略port,則不做端口映射

ipvsadm查看:

ipvsad -L | l [options]

options:

--numeric,-n:以數字的形式輸出地址和端口號,一般情況與l一起用(ipvsadm -ln)

--exact:擴展信息

--connection,-c:當前IPVS連接輸出

--stats:統計信息

Conns :總的連接數

InPkts :進來的數據包

OutPkts :出去的數據包

InBytes :進來的字節數

OutBytes:出去的字節數

--rate:輸出速率信息

CPS :每秒的連接數

InPPS :每秒進來的數據包

OutPPS :每秒出去的數據包

InBPS :每秒進來的字節數

OutBPS :每秒出去的字節數

ipvs規則:

cat /proc/net/ip_vs

當前連接的ipvs情況:

cat /proc/net/ip_vs_conn

清零當前計數器中的信息:

ipvsadm -Z

將所有規則清空:

ipvsadm -C




LVS介紹