lvs是一款IP負載均衡軟件,是通過ipvs模塊來實現ip負載均衡的。
三種機制:NAT 用戶請求和服務器響應都經過調度器,調度器修改數據包IP和PORT
TUN 用戶請求被調度器通過IP隧道技術轉發給realserver,realserver直接返回數據給用戶,調度器和realserver
可以不再相同網段
DR 通過改寫請求報文MAC地址將請求發到realserver,realserver直接響應用戶。避免了IP隧道開銷。
DR模式下directorserver和realserver必須有一個網卡在同一個網段上
負載調度算法(常用爲前4個)
1 輪叫 (rr) 單純輪詢方式,按順序分配給realserver
2 加權輪叫 (wrr) 帶權重的輪詢方式,根據服務器處理能力分配權重,也屬於循環飛陪,但是給權重高的機器飛陪更多任務
3 最少鏈接 (lc) 調度器根據連接數量進行分配,誰不幹活給誰分配
4 加權最少鏈接 (wlc) 帶權重的誰不幹活給誰分配
5 基於局部性的最少鏈接 (lblc)
6 帶複製的基於局部性最少鏈接(lblcr)
7 目標地址散列(dh)
8 源地址散列(sh)
9 最短的期望的延遲
10 最少隊列調度
lvs安裝
yum安裝
yum -y install ipvsadm 自動解決依賴
源碼安裝
1 ipvsadm安裝依賴包有三個libnl-devel popt-devel popt-static 可通過yum直接安裝
2 tar - zxf ipvsadm-1.26.tar.gz 解壓縮包
3 進入解壓後目錄
4 make && make install
5 安裝完成後可通過ipvsadm --help查看命令是否可用(沒有安裝lvs系統默認不帶ipvsadm命令)
ipvsadm用法
ipvsadm -L|l 顯示內核中虛擬服務器列表
ipvsadm -A|E -t|u|f VIP:端口 -s 調度算法 -p timeout -M netmask
-A --add-service 添加虛擬IP,也就是添加虛擬服務器
-E --edit-service 編輯已有的虛IP
-t|u|f 分別表示虛擬服務器提供的是tcp,udp,被防火牆標記過的服務三種
-s 後面跟調度算法rr|wrr|lc|wlc|lblc|lblcr|dh|sh,默認爲wlc
-p 後面跟在某個realserver上的持續時間,同一個用戶請求調度到同一個realserver處理
ipvsadm -D -t|u|f VIP:PORT 刪除內核內指定虛擬服務器記錄
ipvsadm -C 清楚內核內所有虛擬服務器記錄
ipvsadm -S 保存虛擬服務器規則
ipvsadm -R 恢復虛擬服務器規則
ipvsadm -a|e -t|u|f VIP:PORT -r real-server-address:port -g|i|m -w weight
-a 在虛擬服務器規則添加一條real server記錄
-e 編輯一條虛擬服務器的real server記錄
-d 刪除一條虛擬服務器中的real server記錄
-r 指定real server 的IP地址
-g 指定lvs的工作模式爲直接路由模式DR模式
-i 指定lvs的工作模式爲隧道模式
-m 指定lvs的工作模式爲NAT模式
-w 指定real server的權重值
ipvsadm -Z -t|u|f VIP:PORT 虛擬服務器列表計數器清零(清空當前的連接數等)
ipvsadm --set tcp tcpfin udp 設置連接超時值
上方使用測試機器爲2.60,這裏不使用60做調度機器,更換2.71爲調度機
調度機配置如下VIP192.168.2.100是其他配置在這裏忽略掉
兩臺real server配置如下,這裏使用了lo:1,是因爲之前配置過其他VIP用了lo:0(忽略)
ifconfig lo:1 192.168.2.85 broadcast 192.168.2.85 netmask 255.255.255.255 up
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
配置完成瀏覽器測試訪問192.168.2.85
補充:
ipvsadm -L -c 顯示lvs目前的鏈接信息
ipvsadm -L --timeout 顯示“”tcp tcpfin udp“”的timeout值
ipvsadm -L --daemon 顯示同步守護進程狀態
ipvsadm -L --stats 顯示統計信息
ipvsadm -L --rate 顯示速率信息
ipvsadm -L --sort 對虛擬服務器和真實服務器排序輸出