概念:
ipvs (IP Virtual Server)實現了傳輸層負載均衡,也就是我們常說的4層LAN交換,作為 Linux 內核的一部分。ipvs運行在主機上,在真實服務器集群前充當負載均衡器。ipvs可以將基于TCP和UDP的服務請求轉發到真實服務器上,并使真實服務器的服務在單個 IP 地址上顯示為虛擬服務。
ipvs vs. iptables
我們知道kube-proxy支持 iptables 和 ipvs 兩種模式, 在kubernetesv1.8 中引入了 ipvs 模式,在 v1.9 中處于 beta 階段,在 v1.11 中已經正式可用了。iptables 模式在 v1.1 中就添加支持了,從 v1.2 版本開始 iptables 就是 kube-proxy 默認的操作模式,ipvs 和 iptables 都是基于netfilter的,那么 ipvs 模式和 iptables 模式之間有哪些差異呢?
ipvs 為大型集群提供了更好的可擴展性和性能
ipvs 支持比 iptables 更復雜的復制均衡算法(最小負載、最少連接、加權等等)
ipvs 支持服務器健康檢查和連接重試等功能
ipvs 依賴 iptables
ipvs 會使用 iptables 進行包過濾、SNAT、masquared(偽裝)。具體來說,ipvs 將使用ipset來存儲需要DROP或masquared的流量的源或目標地址,以確保 iptables 規則的數量是恒定的,這樣我們就不需要關心我們有多少服務了
LVS調度算法:
1. 輪叫調度 rr
這種算法是最簡單的,就是按依次循環的方式將請求調度到不同的服務器上,該算法最大的特點就是簡單。輪詢算法假設所有的服務器處理請求的能力都是一樣的,調度器會將所有的請求平均分配給每個真實服務器,不管后端 RS 配置和處理能力,非常均衡地分發下去。
2. 加權輪叫 wrr
這種算法比 rr 的算法多了一個權重的概念,可以給 RS 設置權重,權重越高,那么分發的請求數越多,權重的取值范圍 0 – 100。主要是對rr算法的一種優化和補充, LVS 會考慮每臺服務器的性能,并給每臺服務器添加要給權值,如果服務器A的權值為1,服務器B的權值為2,則調度到服務器B的請求會是服務器A的2倍。權值越高的服務器,處理的請求越多。
3. 最少鏈接 lc
這個算法會根據后端 RS 的連接數來決定把請求分發給誰,比如 RS1 連接數比 RS2 連接數少,那么請求就優先發給 RS1
4. 加權最少鏈接 wlc
這個算法比 lc 多了一個權重的概念。
5. 基于局部性的最少連接調度算法 lblc
這個算法是請求數據包的目標 IP 地址的一種調度算法,該算法先根據請求的目標 IP 地址尋找最近的該目標 IP 地址所有使用的服務器,如果這臺服務器依然可用,并且有能力處理該請求,調度器會盡量選擇相同的服務器,否則會繼續選擇其它可行的服務器
6. 復雜的基于局部性最少的連接算法 lblcr
記錄的不是要給目標 IP 與一臺服務器之間的連接記錄,它會維護一個目標 IP 到一組服務器之間的映射關系,防止單點服務器負載過高。
7. 目標地址散列調度算法 dh
該算法是根據目標 IP 地址通過散列函數將目標 IP 與服務器建立映射關系,出現服務器不可用或負載過高的情況下,發往該目標 IP 的請求會固定發給該服務器。
8. 源地址散列調度算法 sh
與目標地址散列調度算法類似,但它是根據源地址散列算法進行靜態分配固定的服務器資源。
ipvsadm參數:
添加虛擬服務器 語法:ipvsadm -A [-t|u|f] [vip_addr:port] [-s:指定算法] -A:添加 -t:TCP協議 -u:UDP協議 -f:防火墻標記 -D:刪除虛擬服務器記錄 -E:修改虛擬服務器記錄 -C:清空所有記錄 -L:查看 添加后端RealServer 語法:ipvsadm -a [-t|u|f] [vip_addr:port] [-r ip_addr] [-g|i|m] [-w 指定權重] -a:添加 -t:TCP協議 -u:UDP協議 -f:防火墻標記 -r:指定后端realserver的IP -g:DR模式 -i:TUN模式 -m:NAT模式 -w:指定權重 -d:刪除realserver記錄 -e:修改realserver記錄 -l:查看 通用: ipvsadm -ln:查看規則 service ipvsadm save:保存規則
負載均衡器端:
安裝LVS [root@lb01 ~]#yum -y install ipvsadm [root@lb01 ~]#ipvsadm 添加綁定VIP [root@lb01 ~]#ip addr add 192.168.0.89/24 dev eth0 label eth0:1 配置LVS-DR模式 [root@lb01 ~]#ipvsadm -A -t 192.168.0.89:80 -s rr //創建一個DR,并指定調度算法采用rr。 [root@lb01 ~]#ipvsadm -a -t 192.168.0.89:80 -r 192.168.0.93 -g //添加RS [root@lb01 ~]#ipvsadm -a -t 192.168.0.89:80 -r 192.168.0.94 -g //添加RS
Real-Server端
配置測試后端realserver 配置httpd省略 [root@realserver-1 ~]#curl 192.168.0.93 #測試realserver-1網站是否正常 192.168.0.93 [root@realserver-2 ~]#curl 192.168.0.94 #測試realserver-2網站是否正常 192.168.0.94 綁定VIP到lo網卡 [root@realserver-1 ~]#ip addr add 192.168.0.89/32 dev lo label lo:1 #由于DR模式需要realserver也有VIP 抑制ARP [root@realserver-1 ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce [root@realserver-1 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce [root@realserver-1 ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@realserver-1 ~]#echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
客戶端測試
[root@test ~]#curl 192.168.0.89 192.168.0.93 [root@test ~]#curl 192.168.0.89 192.168.0.94
鏈接:https://www.cnblogs.com/hongdada/p/9758939.html
-
內核
+關注
關注
3文章
1362瀏覽量
40228 -
Linux
+關注
關注
87文章
11225瀏覽量
208911 -
服務器
+關注
關注
12文章
9017瀏覽量
85182 -
負載均衡
+關注
關注
0文章
105瀏覽量
12358
原文標題:IPVS負載均衡
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論