目錄
一.lvs相關概述
1.lvs集群的工作模式
2.lvs調度算法
3.ipvsadm工具
二.DR模式部署
一.lvs相關概述
1.lvs集群的工作模式
- lvs-nat:修改請求報文的目標IP,多目標IP的DNAT ? ?
- lvs-dr:操縱封裝新的MAC地址(直接路由)
- lvs-tun:隧道模式
- lvs-fullnat:修改請求報文的源和目標IP
2.lvs調度算法
根據其調度時是否考慮各RS當前的負載狀態分為兩種:
靜態方法: 不管后端真實服務器的 狀態,根據自身 ?算法進行調度
動態方法: 會根據后端服務器的狀態來進行調度
僅根據算法本身進行調度
靜態:
1、RR:roundrobin,輪詢,較常用?
2、WRR:Weighted RR,加權輪詢,較常用 先算總權重再用自己的權重去除以總權重
3、SH:Source Hashing,實現session sticky,源IP地址hash;將來自于同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定
4、DH:Destination Hashing;目標地址哈希,第一次輪詢調度至RS,后續將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如: Web緩存??
動態:Overhead ? ?一個參考值來確定服務器是否忙這個值越小代表服務器越閑就會優先調度給閑的服務器
主要根據每RS當前的負載狀態及調度算法進行調度Overhead=value 較小的RS將被調度?
1、LC:least connections 適用于長連接應用 ? ?最小連接數 ? ?不考慮權重
Overhead=activeconns*256+inactiveconns
active ? 活動連接
inactive 非活動連接
?
2、WLC:Weighted LC,默認調度方法,較常用 默認調度加權最小連接數第一輪不合理?
Overhead=(activeconns*256+inactiveconns)/weight
?
3、SED:Shortest Expection Delay,初始連接高權重優先,只檢查活動連接,而不考慮非活動連接 ? 權重小的空閑的
Overhead=(activeconns+1)*256/weight
?
4、NQ:Never Queue,第一輪均勻分配,后續SED ? ? ??
5、LBLC:Locality-Based LC,動態的DH算法,使用場景:根據負載狀態實現正向代理,實現Web Cache等 ? ?檢查 后端服務器忙不忙
6、LBLCR:LBLC with Replication,帶復制功能的LBLC,解決LBLC負載不均衡問題,從負載重的復制到負載輕的RS,,實現Web Cache等
3.ipvsadm工具
常用選項及說明:
-A: 添加虛擬服務器
-D: 刪除整個虛擬服務器
-s: 指定負載調度算法(輪詢: rr、加權輪詢: wrr、最少連接: lc、加權最少連接: wlc ?默認的 )
-a: 添加真實服務器(節點服務器)
-d: 刪除某一個節點
-t: 指定VIP地址及TCP端口
-r: 指定RIP地址及TCP端口
-m: 表示使用NAT群集模式
-g: 表示使用DR模式
-i: 表示使用TUN模式
一w: 設置權重(權重為0時表示暫停節點)
-p 60: 表示保持長連接60秒
-l: 列表查看 LVS虛擬服務器(默認為查看所有)
-n: 以數字形式顯示地址、端口等信息,常與"-l“選項組合使用。ipvsadm -ln
二.DR模式部署
調度器 ? - ubunutu ?2204?
apt ? update
apt ? install ? ? ipvsadm ?-y
ifconfig ?ens33:0 192.168.91.188/24 ? ? #添加虛擬ip
ipvsadm -A -t 192.168.91.188:80 -s rr
ipvsadm -a -t 192.168.91.188:80 -r 192.168.91.100:80 -g
ipvsadm -a -t 192.168.91.188:80 -r 192.168.91.101:80 -g
ipvsadm ?-Ln
vim ?/etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
真實服務器1:
yum install ? epel-release ? -y
yum ?install ? nginx ?-y
systemctl ?start ?nginx?
echo ?"7-1" ? > ?/usr/share/nginx/html/index.html
vim ?/etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
ifconfig ?ens33:0 192.168.91.188/24 ? ? #添加虛擬ip
真實服務器2:
yum install ? epel-release ? -y
yum ?install ? nginx ?-y
systemctl ?start ?nginx?
echo ?"7-2" ? > ?/usr/share/nginx/html/index.html
vim ?/etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
ifconfig ?ens33:0 192.168.91.188/24 ? ? #添加虛擬ip
不要再集群內測試?
新打開一臺測試?
curl ? 192.168.91.188