LVS 的幾種連接模式

初次搭建LVS時使用只有一張網卡的虛擬機,無論如何配置都不能跳轉到real server 上,總結發現與LVS的連接模式有關系,LVS主要有以下幾種模式:

  1. NAT模式;
    NAT模型:地址轉換類型,主要是做地址轉換,類似于iptables的DNAT類型,它通過多目標地址轉換,來實現負載均衡;
    特點和要求:
  • LVS(Director)上面需要雙網卡:DIP(內網)和VIP(外網)

  • 內網的Real Server主機的IP必須和DIP在同一個網絡中,并且要求其網關都需要指向DIP的地址

  • RIP都是私有IP地址,僅用于各個節點之間的通信

  • Director位于client和Real Server之間,負載處理所有的進站、出站的通信

  • 支持端口映射

  • 通常應用在較大規模的應用場景中,但Director易成為整個架構的瓶頸。
    相關機器信息;
    LB1 eth0:192.168.244.132 (Vip) (公網)
    eth1:192.168.27.128 (Dip) (內網)
    rs1 eth0:192.168.27.130 (Rip) (內網)getway:192.168.27.128
    rs2 eth0:192.168.27.131 (Rip) (內網)getway:192.168.27.128

    Paste_Image.png

    首先使用nginx將兩臺rs機器訪問頁面配置好,使得訪問rs1出現welcome to nginx!I'm rs 1!,訪問rs2出現welcome to nginx!I'm rs 2。

    現在在LB上操作;
    確定本機ip_vs模塊是否加載,也就是是否支持lvs,2.4.2后都支持了;然后安裝ipvsadm 用戶操作命令。

    ipvsadm安裝:

    [root@LB1 ~]# yum install ipvsadm -y
    echo 1 > /proc/sys/net/ipv4/ip_forward
    ipvsadm -A -t  192.168.244.132:80 -s rr
    ipvsadm -a -t 192.168.244.132:80 -r 192.168.27.130-m
    ipvsadm -a -t 192.168.244.132:80 -r 192.168.27.131-m
    

    測試頁面時可以訪問到 兩臺rs的 html頁面交替出現。

  1. DR模式:
    特點和要求
  • 各個集群節點必須和Director在同一個物理網絡中

  • RIP地址不能為私有地址,可以實現便捷的遠程管理和監控

  • Director僅僅負責處理入站請求,響應報文則由Real Server直接發往客戶端

  • 集群節點Real Server 的網關一定不能指向DIP,而是指向外部路由

  • Director不支持端口映射

  • Director能夠支持比NAT多很多的Real Server
    原理:
    DR模型:直接路由模型,每個Real Server上都有兩個IP:VIP和RIP,但是VIP是隱藏的,就是不能提高解析等功能,只是用來做請求回復的源IP的,Director上只需要一個網卡,然后利用別名來配置兩個IP:VIP和DIP
    Director在接受到外部主機的請求的時候轉發給Real Server的時候并不更改目標地址,只是通過arp解析的MAC地址進行封裝然后轉給Real Server,Real Server在接受到信息以后拆除MAC幀封裝,然后直接回復給CIP。

    Paste_Image.png

    LB1: eth0: 192.168.182.133
    vip(eth0:0): 192.168.182.200
    RS1: eth0:192.168.182.130
    lo:0(vip) :192.168.182.200
    RS2: eth0:192.168.182.129
    lo:0(vip) 192.168.182.200

    通信原理:
    每個Real Server上都有兩個IP:VIP和RIP,但是VIP是隱藏的,就是不能提高解析等功能,只是用來做請求回復的源IP的,Director上只需要一個網卡,然后利用別名來配置兩個IP:VIP和DIP

    Director在接受到外部主機的請求的時候轉發給Real Server的時候并不更改目標地址,只是通過arp解析的MAC地址進行封裝然后轉給Real Server,Real Server在接受到信息以后拆除MAC幀封裝,然后直接回復給CIP。

    而此時需要關閉RS上的基于VIP的arp解析,在linux內核2.4以后,內核中都內置了這種功能,通過一些設置可以關閉其arp的功能:

    arp_ignore:定義接收到ARP請求時的響應級別
    0:默認,只用本地配置的有響應地址都給予響應
    1:僅僅在目標IP是本地地址,并且是配置在請求進來的接口上的時候才給予響應(僅在請求的目標地址配置請求到達的接口上的時候,才給予響應)
    arp_announce:定義將自己的地址向外通告時的級別
    0:默認,表示使用配置在任何接口的任何地址向外通告
    1:試圖僅向目標網絡通告與其網絡匹配的地址
    2:僅向與本地接口上地址匹配的網絡進行通告
    Ps:要想讓其功能生效,必須先設置相關設置,然后在配置IP地址等信息
    1、開始在RS1操作:

    [root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    [root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
    [root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    [root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
    [root@rs1 ~]# service network restart
    [root@rs1 ~]#ifconfig lo:0 192.168.182.200 netmask 255.255.255.255 broadcast 182.168.182.200
    [root@rs1 ~]# route add -host 192.168.182.200 dev lo:0
    

    上面的就是定義了arp響應的級別;還有就是vip的請求數據,從rs1的本地ip進行了回復;
    2、在RS2上執行上面同樣的操作
    3、在LB上操作:
    配置eth0網卡ip;

    [root@LB1 ~]# ifconfig eth0:0 192.168.182.200/24   #在eth0:0配置vip
    

    驗證RS的web服務,訪問兩天RS服務器均可正確訪問,分別出現I'm 1! 和 I'm 2!

    接下來在DR上設置轉發:

    [root@LB1 ~]# yum install ipvsadm -y
    ipvsadm -A -t  192.168.182.200:80 -s rr
    ipvsadm -a -t 192.168.182.200:80 -r 192.168.27.130 -g
    ipvsadm -a -t 192.168.182.200:80 -r 192.168.27.131 -g
    

    訪問192.168.182.200測試結果,可交替出現兩臺RS的html頁面。

  1. TUN模式;
    其實數據轉發原理和上圖是一樣的,不過這個我個人認為主要是位于不同位置(不同機房);LB是通過隧道進行了信息傳輸,雖然增加了負載,可是因為地理位置不同的優勢,還是可以參考的一種方案;

    優點:負載均衡器只負責將請求包分發給物理服務器,而物理服務器將應答包直接發給用戶。所以,負載均衡器能處理很巨大的請求量,這種方式,一臺負載均衡能為超過100臺的物理服務器服務,負載均衡器不再是系統的瓶頸。使用VS-TUN方式,如果你的負載均衡器擁有100M的全雙工網卡的話,就能使得整個Virtual Server能達到1G的吞吐量。

    不足:但是,這種方式需要所有的服務器支持"IP Tunneling"(IP Encapsulation)協議;

    LB1: eth0: 192.168.182.132
    vip(tunl0): 192.168.182.200
    RS1: eth0:192.168.27.130
    tunl0(vip) :192.168.182.200
    RS2: eth0:192.168.138.131
    tunl0(vip) :192.168.182.200

    LB1操作:

    yum install ipvsadm -y
    ifconfig tunl0 192.168.182.200 broadcast 192.168.182.200 netmask 255.255.255.0 up
    route add -host $VIP dev tunl0
    ipvsadm -A -t 192.168.182.200:80 -s rr
    ipvsadm -a -t 192.168.182.200:80 -r 192.168.27.130 -i
    ipvsadm -a -t 192.168.182.200:80 -r 192.168.138.131 -i
    
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容