Linux系統(四)LVS集羣負載均衡NAT模式 VMware虛擬網絡鏈接模式詳解(NAT,Bridged,Host-only)

章文嵩博士的博文在這裏,瞅瞅吧。http://www.linuxvirtualserver.org/zh/lvs3.htmlhtml

 

接下來咱們的示例,就採用以下ip配置部署。linux

具體數據包路由走向,參考個人文章 VMware虛擬網絡鏈接模式詳解(NAT,Bridged,Host-only) 中的nat網絡鏈接方式。nginx

NAT模式的幾個要點web

  1. dip這臺服務器爲分發服務器,他擁有2個ip一個客戶訪問的外網ip,一個ip做爲vip真實服務器的網關地址,且真實服務器必須在一個網段中。
  2. 分發服務器上安裝支持負載均衡各類算法的軟件,來實現負載轉發功能。
  3. 分發服務器還須要打開路由轉發功能。
  4. 中RIP真實服務器可使用任何的操做系統,但都需使用私有網絡。
  5. NAT網絡鏈接方式的弊端也是lvs nat模式的性能瓶頸所在,就是分發服務器轉發全部的請求到真實服務器與轉發請求響應數據到客戶端,這樣就是一個性能瓶頸。

LVS NAT模式配置操做

一、準備工做,3臺服務器。一臺用做Director server。2臺用做real server。如上圖。算法

二、配置Director server爲雙ip瀏覽器

複製代碼
[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.222.131  netmask 255.255.255.0  broadcast 192.168.222.255
        inet6 fe80::20c:29ff:feaf:ff3a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:af:ff:3a  txqueuelen 1000  (Ethernet)
        RX packets 53298  bytes 4735958 (4.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2690  bytes 453988 (443.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.136  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::20c:29ff:feaf:ff44  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:af:ff:44  txqueuelen 1000  (Ethernet)
        RX packets 11269  bytes 882315 (861.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1502  bytes 294418 (287.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
複製代碼
  • 查看eth1具體配置,eth0爲nat連網方式,不須要修改,eth1爲host-only模式,須要修改成靜態ip,且配置ip地址。
複製代碼
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE="Ethernet"
BOOTPROTO="static"   
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eth1"
DEVICE="eth1"
ONBOOT="yes"
IPADDR="192.168.2.136"
NETMASK="255.255.255.0"
複製代碼
  • 設置Director server,開啓路由轉發功能
[root@localhost network-scripts]# echo "1">"/proc/sys/net/ipv4/ip_forward"
  • 在Director server上安裝lvs管理工具:ipvsadmin,ipvsadmin這個工具稍後會深刻一下。
[root@localhost ~]# yum install ipva
  • 配置負載均衡規則爲輪詢 
[root@localhost ~]# ipvsadm -C   --清空轉發規則
[root@localhost ~]# ipvsadm -A -t 192.168.222.131:80 -s rr    --131上一單有80端口的tcp請求,即便用rr表示轉發策略爲輪詢的方式轉發給一下的真實服務器,這裏有好多負載均衡轉發算法,在下面會介紹下。
[root@localhost ~]# ipvsadm -a -t 192.168.222.131:80 -r 192.168.2.130 -m
[root@localhost ~]# ipvsadm -a -t 192.168.222.131:80 -r 192.168.2.129 -m
  • 到此Director server已經所有配置完畢。

三、配置Real server。real server爲host-only模式,這裏要作的就很簡單啦。緩存

  • 配置ip爲靜態ip,且網關爲Director server的內網ip 
複製代碼
[root@localhost network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="192.168.2.130"
NETMASK="255.255.255.0"
GATEWAY="192.168.2.136"
複製代碼
  • 2臺real server的網絡設置同樣,只是ip不同而已。這裏不一一列出,如上配置便可。
  • 安裝nginx ,安裝以後修改頁面,打開80端口便可。

四、看下結果,在主機上用瀏覽器打開。http://192.168.222.131/  ,不斷刷新頁面便可看到來到2個real server的不一樣web站點的網頁。服務器

複製代碼
[root@localhost ~]# curl 192.168.222.131
192.168.222.130:A
[root@localhost ~]# curl 192.168.222.131
192.168.2.129 c
[root@localhost ~]# curl 192.168.222.131
192.168.222.130:A
[root@localhost ~]# curl 192.168.222.131
192.168.2.129 c
複製代碼

五、到此,lvs的nat模式的配置實現也已完成,這個配置其實很簡單的,對吧。哈哈。網絡

ipvsadmin工具命令講解 

ipvsadm 參數詳解負載均衡

  • -A (--add-service) 在內核的虛擬服務器列表中添加一條新的虛擬IP記錄。也就是增長一臺新的虛擬服務器。虛擬IP也就是虛擬服務器的IP地址。
  • -E (--edit-service) 編輯內核虛擬服務器列表中的一條虛擬服務器記錄
  • -D (--delete-service) 刪除內核虛擬服務器列表中的一條虛擬服務器記錄
  • -C (--clear) 清除內核虛擬服務器列表中的全部規則
  • -R (--restore) 恢復虛擬服務器規則
  • -S (--save) 保存虛擬服務器規則,輸出爲-R 選項可讀的格式
  • -a (--add-server) 在內核虛擬服務器列表的一條記錄裏添加一條新的Real Server記錄。也就是在一個虛擬服務器中增長一臺新的Real Server
  • -e (--edit-server) 編輯一條虛擬服務器記錄中的某條Real Server記錄
  • -d (--delete-server) 刪除一條虛擬服務器記錄中的某條Real Server記錄
  • -L|-l –list 顯示內核中虛擬服務器列表
  • -Z (--zero) 虛擬服務器列表計數器清零(清空當前的鏈接數量等)
  • --set tcp tcpfin udp 設置鏈接超時值
  • -t 說明虛擬服務器提供的是tcp服務,此選項後面跟以下格式:[virtual-service-address:port] or [real-server-ip:port]
  • -u 說明虛擬服務器提供的是udp服務,此選項後面跟以下格式:[virtual-service-address:port] or [real-server-ip:port]
  • -f  fwmark 說明是通過iptables標記過的服務類型
  • -s  此選項後面跟LVS使用的調度算法,有這樣幾個選項: rr|wrr|lc|wlc|lblc|lblcr|dh|sh,默認的調度算法是: wlc
  • -p  [timeout] 在某個Real Server上持續的服務時間。也就是說來自同一個用戶的屢次請求,將被同一個Real Server處理。此參數通常用於有動態請求的操做中,timeout 的默認值爲360 分鐘。例如:-p 600,表示持續服務時間爲600分鐘。
  • -r 指定Real Server的IP地址,此選項後面跟格式: [real-server-ip:port]
  • -g (--gatewaying) 指定LVS 的工做模式爲直接路由模式(此模式是LVS 默認工做模式)
  • -i (-ipip) 指定LVS 的工做模式爲隧道模式
  • -m (--masquerading) 指定LVS 的工做模式爲NAT模式
  • -w (--weight) weight 指定Real Server的權值
  • -c (--connection) 顯示LVS目前的鏈接信息 如:ipvsadm -L -c
  • -L --timeout 顯示「tcp tcpfin udp」的timeout值,如:ipvsadm -L --timeout
  • -L --daemon 顯示同步守護進程狀態,例如:ipvsadm -L –daemon
  • -L  --stats 顯示統計信息,例如:ipvsadm -L –stats
  • -L  --rate 顯示速率信息,例如:ipvsadm -L  --rate
  • -L  --sort 對虛擬服務器和真實服務器排序輸出,例如:ipvsadm -L --sort

保存添加的虛擬ip記錄和ipvsadm的規則可使用service ipvsadm save,還能夠用-S或--save。清除全部記錄和規則除了使用-C,還以使用--clear。

下面列出幾個經常使用的查詢。

一、查看記錄和規則

複製代碼
[root@localhost network-scripts]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.222.131:80 rr
  -> 192.168.2.129:80             Masq    1      1          0         
  -> 192.168.2.130:80             Masq    1      0          0   
複製代碼

InActConn: 指非活躍鏈接數,咱們將處於 TCP ESTABLISH 狀態之外的鏈接都稱爲不活躍鏈接。例如處於 SYN_RECV 狀態的鏈接,處於 TIME_WAIT 狀態的鏈接等。

ActiveConn:是活動鏈接數,也就是tcp鏈接狀態的ESTABLISHED;

Weight:輪詢權重 

二、選項是統計自該條轉發規則生效以來的包 

複製代碼
[root@localhost network-scripts]# ipvsadm -L --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.222.131:http               50      263      134    46273    20519
  -> 192.168.2.129:http                 32      178       83    31215    13069
  -> 192.168.2.130:http                 18       85       51    15058     7450
複製代碼

 Conns    (connections scheduled) : 已經轉發過的鏈接數  

 InPkts   (incoming packets) :入包個數  

 OutPkts  (outgoing packets) : 出包個數  

 InBytes  (incoming bytes) :入流量(字節)    

 OutBytes (outgoing bytes)  : 出流量(字節)  

三、顯示速率信息

複製代碼
[root@localhost network-scripts]# ipvsadm -L --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS
  -> RemoteAddress:Port
TCP  192.168.222.131:http                0        1        0      216       87
  -> 192.168.2.129:http                  0        1        0      212       85
  -> 192.168.2.130:http                  0        0        0        4        2
複製代碼

CPS (current connection rate) :每秒鏈接數  

InPPS (current in packet rate) : 每秒的入包個數  

OutPPS (current out packet rate): 每秒的出包個數  

InBPS (current in byte rate) : 每秒入流量(字節)  

OutBPS   (current out byte rate)      每秒入流量(字節)  

lvs中的集中調度模式

一、rr(round robin:輪詢。  --在服務器池中無窮的循環遍歷。

二、wrr(weighted round robin):權重輪詢法。  --根據權重值,來分配請求鏈接,處理的請求鏈接數與權重值的比率一致。

三、lc(least-connection):最少鏈接法。  --當請求到達director時,director查看活動和非活動的鏈接數量,以肯定把請求分發給哪一個服務器,director將集羣節點目前的活動鏈接數量x256再加上不活動的鏈接數量,獲得借點的開銷值。最低開銷值的節點勝出,被分發給新的入站請求。(若是開銷同樣,則第一個節點被選中)。

四、wlc(weighted least-connection):帶權重的最少鏈接法。  --先如lc算出集羣節點的開銷值,而後除以分配給其的權重值,最小值節點勝出,將入站請求分發給它。

五、lblc(locality-based least-connection):基於本地的最少鏈接法。  --基於局部的最小鏈接,當realserver是緩存服務器的時候用的比較多。

六、lblcr(locality-based least-connection with replication):帶複製的基於局部的最小鏈接。  --當realserver是緩存服務器的時候用的比較多。

七、dh(destination hashing):目標散列法

八、sh(source hashing):源散列法。  --同一個ip的客戶端老是分發給同一個realserver。至關於有客戶粘性,與nginx中的iphash一致。

九、sed(shortest expected delay):最短預期延遲法。  --最短延時預測(ci+1)/ui,ci是鏈接數,ui是權重值。在wlc方法上作啦輕微改進,這些服務使用tcp,並且當羣節點在處理每一個請求時保持在活動狀態。計算方法:每一個集羣節點的的開銷值是經過將活動的鏈接數+1計算的。而後開銷值除以分配權重值,獲得的就是sed值,值少的集羣節點勝出。

十、nq(never queue):永不排隊法。  --沒有隊列,分配請求給空閒的服務器,沒有空閒的服務器就找響應最快的。

相關文章
相關標籤/搜索