LVS服務器集羣中基於IP的負載均衡技術,有3種實現模式:VS/NET模式,VS/TUN模式(IP隧道模式),VS/DR模式(直接路由模式) 前端
1,配置Linux Director(前端負載調度器)IP,並打開IP數據包轉發功能node
ifconfig eth0 192.168.1.2 broacast 192.168.1.255 netmask 255.255.255.0 up ifconfig eth1 192.168.2.1 broacast 192.168.2.255 netmask 255.255.255.0 up echo 1 > /proc/sys/net/ipv4/ip_forward
2,建立並執行 ipvs.sh 腳本(該腳本須要設置爲可執行)。爲前端負載調度器添加虛擬服務器記錄和調度算法(輪詢,基於鏈接請求),以及爲此虛擬服務器添加真實服務器記錄(以net模式添加)linux
#!/bin/bash #ipvs.sh ipvsadm -C ipvsadm -A -t 192.168.2.1:80 -s rr ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.2:80 -m ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.3:80 -m
3,配置 Real Server 真實服務器(192.168.2.2),默認網關指向負載調度器,保證數據正確返回算法
ifconfig eth0 192.168.2.2 broadcast 192.168.2.255 netmask 255.255.255.0 up route add default gw 192.168.2.1
4,配置 Real Server 真實服務器(192.168.2.3)shell
ifconfig eth0 192.168.2.3 broadcast 192.168.2.255 netmask 255.255.255.0 up route add default gw 192.168.2.1
1,配置 Linux Director 負載調度器,設置 tunl0(隧道網卡)的IP爲VIP,並添加到本地路由(注:VIP的子網掩碼爲255.255.255.255,,使該網段只有一個IP)後端
ifconfig tunl0 192.168.1.3 netmask 255.255.255.255 up route add -host 192.168.1.3 dev tunl0 ifconfig eth0 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 up
2,建立 ipvs.sh腳本並執行,爲前端負載調度器添加虛擬服務器記錄和調度算法(輪詢),以及爲此虛擬服務器添加真實服務器(以IP隧道模式添加)跨域
#!/bin/bash #ipvs.sh ipvsadm -C ipvsadm -A -t 192.168.1.3:80 -s rr ipvsadm -a -t 192.168.1.3:80 -r 192.168.1.4:80 -i ipvsadm -a -t 192.168.1.3:80 -r 192.168.1.5:80 -i
3,配置 Real Server 真實服務器(192.168.1.4),將VIP綁定到tunl0網卡上bash
ifconfig tunl0 192.168.1.3 netmask 255.255.255.255 up route add -host 192.168.1.3 dev tunl0 ifconfig eth0 192.168.1.4 broadcast 192.168.1.255 netmask 255.255.255.0 up
4,建立arp.sh腳本並執行,實現當ARP詢問VIP的MAC地址時,忽略應答服務器
#!/bin/bash #arp.sh echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
5,配置 Real Server 真實服務器(192.168.1.5),一樣綁定VIP到tunl0網卡上負載均衡
ifconfig tunl0 192.168.1.3 netmask 255.255.255.255 up route add -host 192.168.1.3 dev tunl0 ifconfig eth0 192.168.1.5 broadcast 192.168.1.255 netmask 255.255.255.0 up
6,建立arp.sh腳本並執行
#!/bin/bash #arp.sh echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
1,Linux Director 負載調度器
ifconfig eth0 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 up ifconfig eth0:0 192.168.1.3 netmask 255.255.255.255 up route add -host 192.168.1.3 dev eth0:0
2,建立 ipvs.sh 腳本,並執行
#!/bin/bash #ipvs.sh ipvsadm -C ipvsadm -A -t 192.168.1.3:80 -s rr ipvsadm -a -t 192.168.1.3:80 -r 192.168.1.4:80 -g ipvsadm -a -t 192.168.1.3:80 -r 192.168.1.5:80 -g
3,配置 Real Server 真實服務器(192.168.1.4)
ifconfig eth0 192.168.1.4 broadcast 192.168.1.255 netmask 255.255.255.0 up ifconfig lo:0 192.168.1.3 netmask 255.255.255.255 up route add -host 192.168.1.3 dev lo:0
4,建立 arp.sh腳本,並執行
#!/bin/bash #arp.sh echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
5,配置 Real Server 真實服務器(192.168.1.5)
ifconfig eth0 192.168.1.5 broadcast 192.168.1.255 netmask 255.255.255.0 up ifconfig lo:0 192.168.1.3 netmask 255.255.255.255 up route add -host 192.168.1.3 dev lo:0
6,建立 arp.sh 腳本,並執行
#!/bin/bash #arp.sh echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
【 NET模式 】
優勢:只須要一個公網IP
缺點:請求和響應都須要通過負載調度器,訪問量達到必定量後負載調度器可能成爲瓶頸。(緣由:請求/響應報文會被修改,請求的目標IP/Mac,響應的源IP/Mac)
【 TUN模式 】
優勢:
1,能夠設置跨域的真實服務器
2,響應報文直接從後端服務器返回給客戶,較NET模式有更高的吞吐量
缺點:
1,須要IP隧道。負載調度器、真實服務器必須支持隧道協議的網卡
2,須要多個公網IP
3,創建IP隧道須要額外開銷
【 DR直接路由模式 】
優勢: 響應報文直接從後端服務器返回給客戶,吞吐量同TUN模式差很少,或更高
缺點: 真實服務器須要同負載調度器在同一個網段
ipvsadm 的用法和格式以下:
ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p
[timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port
[-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp
ipvsadm --start-daemon state [--mcast-interface interface]
ipvsadm --stop-daemon
ipvsadm -h
命令選項解釋:
有兩種命令選項格式,長的和短的,具備相同的意思。在實際使用時,兩種均可
以。
-A --add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也
就是增長一臺新的虛擬服務器。
-E --edit-service 編輯內核虛擬服務器表中的一條虛擬服務器記錄。
-D --delete-service 刪除內核虛擬服務器表中的一條虛擬服務器記錄。
-C --clear 清除內核虛擬服務器表中的全部記錄。
-R --restore 恢復虛擬服務器規則
-S --save 保存虛擬服務器規則,輸出爲-R 選項可讀的格式
-a --add-server 在內核虛擬服務器表的一條記錄裏添加一條新的真實服務器
記錄。也就是在一個虛擬服務器中增長一臺新的真實服務器
-e --edit-server 編輯一條虛擬服務器記錄中的某條真實服務器記錄
-d --delete-server 刪除一條虛擬服務器記錄中的某條真實服務器記錄
-L|-l --list 顯示內核虛擬服務器表
-Z --zero 虛擬服務表計數器清零(清空當前的鏈接數量等)
--set tcp tcpfin udp 設置鏈接超時值
--start-daemon 啓動同步守護進程。他後面能夠是master 或backup,用來講
明LVS Router 是master 或是backup。在這個功能上也能夠採用keepalived 的
VRRP 功能。
--stop-daemon 中止同步守護進程
-h --help 顯示幫助信息
其餘的選項:
-t --tcp-service service-address 說明虛擬服務器提供的是tcp 的服務
[vip:port] or [real-server-ip:port]
-u --udp-service service-address 說明虛擬服務器提供的是udp 的服務
[vip:port] or [real-server-ip:port]
-f --fwmark-service fwmark 說明是通過iptables 標記過的服務類型。
-s --scheduler scheduler 使用的調度算法,有這樣幾個選項
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
默認的調度算法是: wlc.
-p --persistent [timeout] 持久穩固的服務。這個選項的意思是來自同一個客
戶的屢次請求,將被同一臺真實的服務器處理。timeout 的默認值爲300 秒。
-M --netmask netmask persistent granularity mask
-r --real-server server-address 真實的服務器[Real-Server:port]
-g --gatewaying 指定LVS 的工做模式爲直接路由模式(也是LVS 默認的模式)
-i --ipip 指定LVS 的工做模式爲隧道模式
-m --masquerading 指定LVS 的工做模式爲NAT 模式
-w --weight weight 真實服務器的權值
--mcast-interface interface 指定組播的同步接口
-c --connection 顯示LVS 目前的鏈接 如:ipvsadm -L -c
--timeout 顯示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
--daemon 顯示同步守護進程狀態
--stats 顯示統計信息
--rate 顯示速率信息
--sort 對虛擬服務器和真實服務器排序輸出
--numeric -n 輸出IP 地址和端口的數字形式