<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LVS負(fù)載均衡之NAT模式

          共 10596字,需瀏覽 22分鐘

           ·

          2021-04-27 17:40

          目錄

          • 1、LVS的NAT模式介紹

          • 2、LVS的NAT模式部署過程

            • 2.1 配置lvs服務(wù)器為路由器

            • 2.2 web服務(wù)器準(zhǔn)備

            • 2.3 lvs服務(wù)器配置

            • 2.4 keepalived結(jié)合lvs_NAT模式



          本文來自我的博客舊文章~

          1、LVS的NAT模式介紹

          參考自官網(wǎng):http://www.linuxvirtualserver.org/zh/lvs3.html

          由于IPv4中IP地址空間的日益緊張和安全方面的原因,很多網(wǎng)絡(luò)使用保留IP地址(10.0.0.0/255.0.0.0、 172.16.0.0/255.128.0.0和192.168.0.0/255.255.0.0)[64, 65, 66]。這些地址不在Internet上使用,而是專門為內(nèi)部網(wǎng)絡(luò)預(yù)留的。當(dāng)內(nèi)部網(wǎng)絡(luò)中的主機(jī)要訪問Internet或被Internet訪問時(shí),就需要 采用網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation, 以下簡稱NAT),將內(nèi)部地址轉(zhuǎn)化為Internets上可用的外部地址。NAT的工作原理是報(bào)文頭(目標(biāo)地址、源地址和端口等)被正確改寫后,客戶相信 它們連接一個(gè)IP地址,而不同IP地址的服務(wù)器組也認(rèn)為它們是與客戶直接相連的。由此,可以用NAT方法將不同IP地址的并行網(wǎng)絡(luò)服務(wù)變成在一個(gè)IP地址 上的一個(gè)虛擬服務(wù)。VS/NAT的體系結(jié)構(gòu)如圖所示。在一組服務(wù)器前有一個(gè)調(diào)度器,它們是通過Switch/HUB相連接的。這些服務(wù)器 提供相同的網(wǎng)絡(luò)服務(wù)、相同的內(nèi)容,即不管請求被發(fā)送到哪一臺服務(wù)器,執(zhí)行結(jié)果是一樣的。服務(wù)的內(nèi)容可以復(fù)制到每臺服務(wù)器的本地硬盤上,可以通過網(wǎng)絡(luò)文件系 統(tǒng)(如NFS)共享,也可以通過一個(gè)分布式文件系統(tǒng)來提供。

          客戶通過Virtual IP Address(虛擬服務(wù)的IP地址)訪問網(wǎng)絡(luò)服務(wù)時(shí),請求報(bào)文到達(dá)調(diào)度器,調(diào)度器根據(jù)連接調(diào)度算法從一組真實(shí)服務(wù)器中選出一臺服務(wù)器,將報(bào)文的目標(biāo)地址Virtual IP Address改寫成選定服務(wù)器的地址,報(bào)文的目標(biāo)端口改寫成選定服務(wù)器的相應(yīng)端口,最后將修改后的報(bào)文發(fā)送給選出的服務(wù)器。同時(shí),調(diào)度器在連接Hash 表中記錄這個(gè)連接,當(dāng)這個(gè)連接的下一個(gè)報(bào)文到達(dá)時(shí),從連接Hash表中可以得到原選定服務(wù)器的地址和端口,進(jìn)行同樣的改寫操作,并將報(bào)文傳給原選定的服務(wù) 器。當(dāng)來自真實(shí)服務(wù)器的響應(yīng)報(bào)文經(jīng)過調(diào)度器時(shí),調(diào)度器將報(bào)文的源地址和源端口改為Virtual IP Address和相應(yīng)的端口,再把報(bào)文發(fā)給用戶。我們在連接上引入一個(gè)狀態(tài)機(jī),不同的報(bào)文會(huì)使得連接處于不同的狀態(tài),不同的狀態(tài)有不同的超時(shí)值。在TCP連接中,根據(jù)標(biāo)準(zhǔn)的TCP有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,這里我們不一一敘述,請參見W. Richard Stevens的《TCP/IP Illustrated Volume I》;在UDP中,我們只設(shè)置一個(gè)UDP狀態(tài)。不同狀態(tài)的超時(shí)值是可以設(shè)置的,在缺省情況下,SYN狀態(tài)的超時(shí)為1分鐘,ESTABLISHED狀態(tài)的超 時(shí)為15分鐘,FIN狀態(tài)的超時(shí)為1分鐘;UDP狀態(tài)的超時(shí)為5分鐘。當(dāng)連接終止或超時(shí),調(diào)度器將這個(gè)連接從連接Hash表中刪除。

          這樣,客戶所看到的只是在Virtual IP Address上提供的服務(wù),而服務(wù)器集群的結(jié)構(gòu)對用戶是透明的。對改寫后的報(bào)文,應(yīng)用增量調(diào)整Checksum的算法調(diào)整TCP Checksum的值,避免了掃描整個(gè)報(bào)文來計(jì)算Checksum的開銷。在一些網(wǎng)絡(luò)服務(wù)中,它們將IP地址或者端口號在報(bào)文的數(shù)據(jù)中傳送,若我們只對報(bào)文頭的IP地址和端口號作轉(zhuǎn)換,這樣就會(huì)出現(xiàn)不一致性,服務(wù)會(huì)中斷。所以,針對這些服務(wù),需要編寫相應(yīng)的應(yīng)用模塊來轉(zhuǎn)換報(bào)文數(shù)據(jù)中的IP地址或者端口號。我們所知道有這個(gè)問題的網(wǎng)絡(luò)服務(wù)有FTP、IRC、H.323、 CUSeeMe、Real Audio、Real Video、Vxtreme / Vosiac、VDOLive、VIVOActive、True Speech、RSTP、PPTP、StreamWorks、NTT AudioLink、NTT SoftwareVision、Yamaha MIDPlug、iChat Pager、Quake和Diablo。簡單來說,這種模式借助iptablesnat表來實(shí)現(xiàn) 用戶的請求到分發(fā)器后,通過預(yù)設(shè)的iptables規(guī)則,把請求的數(shù)據(jù)包轉(zhuǎn)發(fā)到后端的rs上去rs需要設(shè)定網(wǎng)關(guān)為分發(fā)器的內(nèi)網(wǎng)ip用戶請求的數(shù)據(jù)包和返回給用戶的數(shù)據(jù)包全部經(jīng)過分發(fā)器,所以分發(fā)器成為瓶頸 在nat模式中,只需要分發(fā)器有公網(wǎng)ip即可,所以比較節(jié)省公網(wǎng)ip資源 缺點(diǎn):擴(kuò)展性有限。高負(fù)載模式下,director可能成為瓶頸 優(yōu)點(diǎn):支持任意操作系統(tǒng),節(jié)點(diǎn)服務(wù)器使用私有IP地址,與負(fù)載調(diào)度器位于同一個(gè)物理網(wǎng)絡(luò),安全性比DR模式和TUN模式要高。

          2、LVS的NAT模式部署過程

          環(huán)境:

          lvs   eth0:10.0.0.3     gateway:10.0.0.254    eth1:192.168.1.3  
          web01 eth0:192.168.1.7    gateway:192.168.1.3
          web02 eth0:192.168.1.8    gateway:192.168.1.3

          2.1 配置lvs服務(wù)器為路由器

          web01web02只有內(nèi)網(wǎng)卡,配置lvs為路由器使其上網(wǎng)

          [root@lvs ~]# vim /etc/sysctl.conf 
          [root@lvs ~]# sysctl -p
          net.ipv4.ip_forward = 1
          [root@lvs ~]# iptables -F
          [root@lvs ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

          2.2 web服務(wù)器準(zhǔn)備

          在web服務(wù)器上安裝httpd服務(wù)來進(jìn)行模擬,每臺服務(wù)器的web首頁不同,在負(fù)載均衡測試的時(shí)候以便區(qū)分 

          web01

          [root@web01 ~]# yum install -y httpd
          [root@web01 ~]# systemctl start httpd.service 
          [root@web01 ~]# systemctl enable httpd.service 
          [root@web01 ~]# echo 'web01'> /var/www/html/index.html
          [root@web01 ~]# curl 127.0.0.1
          web01

          web02

          [root@web02 ~]# yum install -y httpd
          [root@web02 ~]# systemctl start httpd.service 
          [root@web02 ~]# systemctl enable httpd.service 
          [root@web02 ~]# echo 'web02'> /var/www/html/index.html
          [root@web02 ~]# curl 127.0.0.1
          web02

          2.3 lvs服務(wù)器配置

          [root@lvs ~]# yum install -y ipvsadm    #安裝lvs核心管理軟件包
          [root@lvs ~]# ipvsadm -C
          [root@lvs ~]# ipvsadm -A -t 10.0.0.3:80 -s rr
          [root@lvs ~]# ipvsadm -a -t 10.0.0.3:80 -r 192.168.1.7 -m
          [root@lvs ~]# ipvsadm -a -t 10.0.0.3:80 -r 192.168.1.8 -m

          參數(shù)說明:

          -C --clear清除內(nèi)核虛擬服務(wù)器表中的所有記錄

          -A --add-service在內(nèi)核的虛擬服務(wù)器表中添加一條新的虛擬服務(wù)器記錄

          -t --tcp-service service-address說明虛擬服務(wù)器提供的是tcp 的服務(wù)

          -s --scheduler scheduler使用的調(diào)度算法,調(diào)度算法可以指定以下8種:rr(輪詢),wrr(權(quán)重),lc(最后連接),wlc(權(quán)重),lblc(本地最后連接),lblcr(帶復(fù)制的本地最后連接),dh(目的地址哈希),sh(源地址哈希),sed(最小期望延遲),nq(永不排隊(duì))

          -a --add-server在內(nèi)核虛擬服務(wù)器表的一條記錄里添加一條新的真實(shí)服務(wù)器記錄。也就是在一個(gè)虛擬服務(wù)器中增加一臺新的真實(shí)服務(wù)器

          -r --real-server server-address指定真實(shí)的服務(wù)器[Real-Server:port]

          -m --masquerading指定LVS的工作模式為NAT 模式

          調(diào)度測試

          [root@lvs ~]# curl 10.0.0.3
          web01
          [root@lvs ~]# curl 10.0.0.3
          web02
          [root@lvs ~]# ipvsadm -L -n
          IP Virtual Server version 1.2.1 (size=4096)
          Prot LocalAddress:Port Scheduler Flags
            -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
          TCP  10.0.0.3:80 rr
            -> 192.168.1.7:80               Masq    1      0          0         
            -> 192.168.1.8:80               Masq    1      0          1

          -L --list顯示內(nèi)核虛擬服務(wù)器表

          -n  不解析端口使用的協(xié)議

          2.4 keepalived結(jié)合lvs_NAT模式

          配置keepalived增加虛擬ip,從而管理到lvs,可以進(jìn)一步配置為lvs服務(wù)器的高可用

          [root@lvs ~]# yum install keepalived -y
          [root@lvs ~]# vim /etc/keepalived/keepalived.conf
          ! Configuration File for keepalived

          global_defs {
             router_id LVS_DEVEL    #表示keepalived服務(wù)器的一個(gè)標(biāo)識
          }

          vrrp_instance VI_1 {      #定義一個(gè)vrrp組,組名唯一
              state MASTER        #定義改主機(jī)為keepalived的master主機(jī)
              interface eth0      #監(jiān)控eth0號端口
              virtual_router_id 51    #虛擬路由id號為51,id號唯一,這個(gè)id決定了多播的MAC地址
              priority 100        #節(jié)點(diǎn)優(yōu)先級
              advert_int 1        #檢查間隔,默認(rèn)為1秒
              authentication {
                  auth_type PASS    #認(rèn)證方式,密碼認(rèn)證
                  auth_pass 1111    #認(rèn)證密碼
              }
              virtual_ipaddress {
                  10.0.0.4        #虛擬ip地址
              }
          }

          virtual_server 10.0.0.4 80 {  #虛擬主機(jī)設(shè)置
              delay_loop 6        #每隔6秒查詢r(jià)ealserver狀態(tài)
              lb_algo rr        #lvs的調(diào)度算法
              lb_kind NAT       #lvs的集群模式
              persistence_timeout 50  #同一IP的連接50秒內(nèi)被分配到同一臺realserver
              protocol TCP        #用TCP協(xié)議檢查realserver狀態(tài)

              real_server 192.168.1.7 80 {  #后端真實(shí)主機(jī)ip
                  weight 1          #每臺機(jī)器的權(quán)重,0表示不給該機(jī)器轉(zhuǎn)發(fā)請求,直到它恢復(fù)正常
                  TCP_CHECK {       #以下為健康檢查項(xiàng)目
                      connect_timeout 3   #連接超時(shí)時(shí)間,單位為秒
                      nb_get_retry 3      #檢測失敗后的重試次數(shù),如果達(dá)到重試次數(shù)仍然失敗,將后端從服務(wù)器池中移除
                      delay_before_retry 3  #失敗重試的間隔時(shí)間,單位為秒
                      connect_port 80   #檢查的連接端口
                  }
              }
              real_server 192.168.1.8 80 {
                  weight 1
                  TCP_CHECK {
                      connect_timeout 3
                      nb_get_retry 3
                      delay_before_retry 3
                      connect_port 80
                  }
              }
          }
          [root@lvs ~]# systemctl start keepalived.service
          [root@lvs ~]# ipvsadm -L -n
          IP Virtual Server version 1.2.1 (size=4096)
          Prot LocalAddress:Port Scheduler Flags
            -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
          TCP  10.0.0.3:80 rr
            -> 192.168.1.7:80               Masq    1      0          0         
            -> 192.168.1.8:80               Masq    1      0          0         
          TCP  10.0.0.4:80 rr
            -> 192.168.1.7:80               Masq    1      0          0         
            -> 192.168.1.8:80               Masq    1      0          0

          這里keepalived服務(wù)啟動(dòng)后,配置的vip也成功實(shí)現(xiàn)了lvs負(fù)載均衡,還需要做的就是在web服務(wù)器上增加輔助ip10.0.0.33即可

          瀏覽 60
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大黑鸡巴操逼 | 青娱乐大香蕉在线视频 | 又滑黄又爽的软件免费版 | 色老板在线精品 | 亚洲图片小说区 |