溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

LVS實(shí)現(xiàn)nat,dr

發(fā)布時(shí)間:2020-05-24 14:17:58 來(lái)源:網(wǎng)絡(luò) 閱讀:205 作者:不會(huì)運(yùn)維 欄目:系統(tǒng)運(yùn)維

LVS實(shí)現(xiàn)nat,dr

1.lvs:Linux Virtual Server
(1)l4四層路由器,四層交換機(jī);
VS:根據(jù)請(qǐng)求報(bào)文的目標(biāo)IP和目標(biāo)協(xié)議及端口將其調(diào)度轉(zhuǎn)發(fā)至某RealServer,根據(jù)調(diào)度算法來(lái)挑選RS;
(2)lvs: ipvsadm/ipvs

ipvsadm:用戶(hù)空間的命令行工具,規(guī)則管理器,用于管理集群服務(wù)及相關(guān)的RealServer;
ipvs:工作于內(nèi)核空間的netfilter的INPUT鉤子之上的框架;

(3)lvs集群類(lèi)型中的術(shù)語(yǔ):

vs:Virtual Server, Director, Dispatcher, Balancer
rs:Real Server, upstream server, backend serverCIP:Client IP, VIP: Virtual serve IP, RIP: Real server IP, DIP: Director IP
CIP <--> VIP == DIP <--> RIP 

(4)lvs集群的類(lèi)型:
(a)lvs-nat:修改請(qǐng)求報(bào)文的目標(biāo)IP;多目標(biāo)IP的DNAT;

多目標(biāo)IP的DNAT,通過(guò)將請(qǐng)求報(bào)文中的目標(biāo)地址和目標(biāo)端口修改為某挑出的RS的RIP和PORT實(shí)現(xiàn)轉(zhuǎn)發(fā);
(1)RIP和DIP必須在同一個(gè)IP網(wǎng)絡(luò),且應(yīng)該使用私網(wǎng)地址;RS的網(wǎng)關(guān)要指向DIP;
(2)請(qǐng)求報(bào)文和響應(yīng)報(bào)文都必須經(jīng)由Director轉(zhuǎn)發(fā);Director易于成為系統(tǒng)瓶頸;
(3)支持端口映射,可修改請(qǐng)求報(bào)文的目標(biāo)PORT;
(4)vs必須是Linux系統(tǒng),rs可以是任意系統(tǒng);

(b)lvs-dr:Direct Routing,直接路由;
通過(guò)為請(qǐng)求報(bào)文重新封裝一個(gè)MAC首部進(jìn)行轉(zhuǎn)發(fā),源MAC是DIP所在的接口的MAC,目標(biāo)MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標(biāo)IP/PORT均保持不變;
Director和各RS都得配置使用VIP;

(1) 確保前端路由器將目標(biāo)IP為VIP的請(qǐng)求報(bào)文發(fā)往Director:
(a) 在前端網(wǎng)關(guān)做靜態(tài)綁定;
(b) 在RS上使用arptables;
(c) 在RS上修改內(nèi)核參數(shù)以限制arp通告及應(yīng)答級(jí)別;
arp_announce
arp_ignore
(2) RS的RIP可以使用私網(wǎng)地址,也可以是公網(wǎng)地址;RIP與DIP在同一IP網(wǎng)絡(luò);RIP的網(wǎng)關(guān)不能指向DIP,以確保響應(yīng)報(bào)文不會(huì)經(jīng)由Director;
(3) RS跟Director要在同一個(gè)物理網(wǎng)絡(luò);
(4) 請(qǐng)求報(bào)文要經(jīng)由Director,但響應(yīng)不能經(jīng)由Director,而是由RS直接發(fā)往Client;
(5) 不支持端口映射;

(c)lvs-tun:
轉(zhuǎn)發(fā)方式:不修改請(qǐng)求報(bào)文的IP首部(源IP為CIP,目標(biāo)IP為VIP),而是在原IP報(bào)文之外再封裝一個(gè)IP首部(源IP是DIP,目標(biāo)IP是RIP),將報(bào)文發(fā)往挑選出的目標(biāo)RS;RS直接響應(yīng)給客戶(hù)端(源IP是VIP,目標(biāo)IP是CIP);

(1) DIP, VIP, RIP都應(yīng)該是公網(wǎng)地址;
(2) RS的網(wǎng)關(guān)不能,也不可能指向DIP;
(3) 請(qǐng)求報(bào)文要經(jīng)由Director,但響應(yīng)不能經(jīng)由Director;
(4) 不支持端口映射;
(5) RS的OS得支持隧道功能;

(d)lvs-fullnat:
通過(guò)同時(shí)修改請(qǐng)求報(bào)文的源IP地址和目標(biāo)IP地址進(jìn)行轉(zhuǎn)發(fā);
CIP <--> DIP
VIP <--> RIP

(1) VIP是公網(wǎng)地址,RIP和DIP是私網(wǎng)地址,且通常不在同一IP網(wǎng)絡(luò);因此,RIP的網(wǎng)關(guān)一般不會(huì)指向DIP;
(2) RS收到的請(qǐng)求報(bào)文源地址是DIP,因此,只能響應(yīng)給DIP;但Director還要將其發(fā)往Client;
(3) 請(qǐng)求和響應(yīng)報(bào)文都經(jīng)由Director;
(4) 支持端口映射;
注意:此類(lèi)型默認(rèn)不支持;

(5)調(diào)度算法ipvs scheduler:
根據(jù)其調(diào)度時(shí)是否考慮各RS當(dāng)前的負(fù)載狀態(tài),可分為靜態(tài)方法和動(dòng)態(tài)方法兩種:
(a)靜態(tài)方法:僅根據(jù)算法本身進(jìn)行調(diào)度;

RR:roundrobin,輪詢(xún);
WRR:Weighted RR,加權(quán)輪詢(xún);
SH:Source Hashing,實(shí)現(xiàn)session 
DH:Destination Hashing;目標(biāo)地址哈希,將發(fā)往同一個(gè)目標(biāo)地址的請(qǐng)求始終轉(zhuǎn)發(fā)至第一次挑中的RS,典型使用場(chǎng)景是正向代理緩存場(chǎng)景中的負(fù)載均衡;

(b)動(dòng)態(tài)方法:主要根據(jù)每RS當(dāng)前的負(fù)載狀態(tài)及調(diào)度算法進(jìn)行調(diào)度;

LC:least connections Overhead=activeconns*256+inactiveconns
WLC:Weighted LC Overhead=(activeconns*256+inactiveconns)/weight
SED:Shortest Expection Delay
Overhead=(activeconns+1)*256/weight
NQ:Never Queue
LBLC:Locality-Based LC,動(dòng)態(tài)的DH算法;
LBLCR:LBLC with Replication,帶復(fù)制功能的LBLC;

2.ipvsadm:
(1)程序包:ipvsadm

    Unit File: ipvsadm.service
    主程序:/usr/sbin/ipvsadm
    規(guī)則保存工具:/usr/sbin/ipvsadm-save
    規(guī)則重載工具:/usr/sbin/ipvsadm-restore
    配置文件:/etc/sysconfig/ipvsadm-config

(2)ipvsadm命令:
核心功能:
集群服務(wù)管理:增、刪、改;
集群服務(wù)的RS管理:增、刪、改;
(a)查看:

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [options]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]

(b)管理集群服務(wù):增、改、刪;

增、改:
        ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
刪:
        ipvsadm -D -t|u|f service-address
service-address:
    -t|u|f:
        -t: TCP協(xié)議的端口,VIP:TCP_PORT
        -u: UDP協(xié)議的端口,VIP:UDP_PORT
        -f:firewall MARK,是一個(gè)數(shù)字;
   [-s scheduler]:指定集群的調(diào)度算法,默認(rèn)為wlc;

(c)管理集群上的RS:增、改、刪;

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

選項(xiàng):
    lvs類(lèi)型:
        -g: gateway, dr類(lèi)型
        -i: ipip, tun類(lèi)型
        -m: masquerade, nat類(lèi)型

    -w weight:權(quán)重

(b)清空定義的所有內(nèi)容:

ipvsadm -C
查看:
ipvsadm -L|l [options]
--numeric, -n:numeric output of addresses and ports
--exact:expand numbers (display exact values)
--connection, -c:output of current IPVS connections
--stats:output of statistics information
--rate :output of rate information
保存和重載:
    ipvsadm -S = ipvsadm-save
    ipvsadm -R = ipvsadm-restore

3.實(shí)現(xiàn)lvs-nat模型:
(1)實(shí)驗(yàn)環(huán)境:
三臺(tái)服務(wù)器,一臺(tái)作為 director,兩臺(tái)作為 real server,director 有一個(gè)外網(wǎng)網(wǎng)卡(192.168.1.29) 和一個(gè)內(nèi)網(wǎng)ip(192.168.100.1),兩個(gè) real server 上只有內(nèi)網(wǎng) ip (192.168.100.2) 和 (192.168.100.2),并且需要把兩個(gè) real server 的內(nèi)網(wǎng)網(wǎng)關(guān)設(shè)置為 director 的內(nèi)網(wǎng) ip(192.168.0.8)
(2)安裝配置:
兩個(gè) real server 上都安裝 httpd 服務(wù)
#yum install -y httpd
Director 上安裝 ipvsadm
#yum install -y ipvsadm
(3)Director配置:

[root@localhost /]#echo 1 > /proc/sys/net/ipv4/ip_forward:打開(kāi)核心轉(zhuǎn)發(fā)
[root@localhost /]# ipvsadm -A  -t  192.168.1.29:80  -s wrr
[root@localhost /]# ipvsadm -a -t  192.168.1.29:80 -r 192.168.100.2:80 -m 
[root@localhost /]# ipvsadm -a -t  192.168.1.29:80 -r 192.168.100.3:80 -m 

(4)查看ipvsadm設(shè)置的規(guī)則

[root@localhost /]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http wrr
  -> 192.168.100.2:http           Masq    1      0          0         
  -> 192.168.100.3:http           Masq    1      0          0 

4.實(shí)現(xiàn)lvs-dr模型:
(1)實(shí)驗(yàn)環(huán)境
三臺(tái)服務(wù)器,一臺(tái)作為 director,兩臺(tái)作為 real server,director中dip為172.20.10.9 ,兩個(gè) real server 上只有內(nèi)網(wǎng) rip1 (172.20.10.8),rip2(172.20.10.10),設(shè)置vip為172.20.10.12
(2)rs的配置腳本:

[root@node6 ~]# vim rs.sh 

#!/bin/bash
#
vip=172.20.10.12
mask=255.255.255.255
case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig lo:0 $vip netmask $mask broadcast $vip up
    route  add -host $vip dev lo:0
    ;;
stop)
    ifconfig lo:0 down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ;;
*)
   echo "Usage $(basename $0) start|stop"
   exit 1
   ;;
esac
[root@node6 ~]# yum instal -y  httpd
[root@node6 ~]# vim /var/www/html/index.html
node6 web page

(3)director上配置:

[root@node5 ~]ifconfig ens33:0 172.20.10.12 netmask 255.255.255.255 broadcast 172.20.10.12 up
[root@node5 ~]# ipvsadm -A  -t 172.20.10.12:80 -s wrr
[root@node5 ~]# ipvsadm -a -t 172.20.10.12:80 -r 172.20.10.8:80 -g -w 1 
[root@node5 ~]# ipvsadm -a -t 172.20.10.12:80 -r 172.20.10.10:80 -g -w 2

(4)查看ipvsadm設(shè)置的規(guī)則:

[root@node5 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.20.10.12:80 wrr
  -> 172.20.10.8:80               Route   1      0          0         
  -> 172.20.10.10:80              Route   2      0          0  
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI