LVS(Linux Virtual Server)是一種基于Linux內核的高性能、高可用性服務器集群技術,它通過負載均衡將客戶端請求分發到多臺后端真實服務器,實現 scalability 和 fault tolerance。LVS工作在傳輸層(OSI Layer 4),支持TCP/UDP協議。
LVS核心組件
- 負載均衡器(Director):接收客戶端請求并根據調度算法分發到后端服務器。
- 真實服務器群(Real Server Pool):實際處理請求的服務器集群。
- 共享存儲(可選):為真實服務器提供數據一致性支持。
LVS工作模式
NAT模式(Network Address Translation) 負載均衡器修改請求和響應的IP地址,進出流量均經過Director。適合小型集群,但Director可能成為性能瓶頸。
TUN模式(IP Tunneling) 真實服務器直接響應客戶端,通過IP隧道傳輸請求數據。Director僅處理入站流量,適合跨網絡環境。
DR模式(Direct Routing) 真實服務器通過修改MAC地址直接響應客戶端, Director僅處理入站流量。高性能首選模式,要求真實服務器與Director在同一局域網。
LVS調度算法
- 輪詢(Round Robin):均等分發請求。
- 加權輪詢(Weighted RR):根據服務器權重分配流量。
- 最少連接(Least Connections):優先選擇當前連接數最少的服務器。
- 加權最少連接(Weighted LC):結合權重和連接數。
- 源地址哈希(Source Hashing):保持同一客戶端的請求定向到同一服務器。
LVS特別適合需要高性能負載均衡的場景,如Web服務、數據庫讀寫分離等。實際部署時應根據網絡環境和業務需求選擇合適的工作模式。
二.LVS(linux virual server)
四臺虛擬機
LVS集群技術
1.client | ![]() |
---|---|
2.lvs | image-20250714200324604 ![]() |
rs1 | ![]() |
re2 | ![]() |
網絡配好在rs1和rs2安裝httpd功能所用命令dnf/yum install httpd -y
事例
然后在rs1操作:
[root@RS1 ~]# systemctl disable --now firewalld ? #禁用并停止 firewalld 服務?[root@RS1 ~]# echo RS1 - 192.168.0.10 > /var/www/html/index.html #創建并寫入內容到 index.html 文件:?[root@RS1 ~]# systemctl enable --now http d ? ? #啟用并啟動 Apache HTTP 服務#rs2相同操作
事例
lvs虛擬機操作
[root@lvs ~]# sysctl -a | grep ip_forwardnet.ipv4.ip_forward = 0 #net.ipv4.ip_forward = 0:這意味著當前 IPv4 數據包轉發功能被禁用了(值為0表示禁用,1表示啟用)net.ipv4.ip_forward_update_priority = 1net.ipv4.ip_forward_use_pmtu = 0[root@lvs ~]# echo net.ipv4.ip_forward=1 > /etc/sysctl.conf #這條命令將 net.ipv4.ip_forward=1 寫入到了 /etc/sysctl.conf 配置文件中,使得系統在啟動時啟用 IPv4 轉發。[root@lvs ~]# sysctl -p #使用 sysctl -p 使配置立即生效。net.ipv4.ip_forward = 1
用這個命令查一下需要安裝的lvs安裝包:dnf search lvs
用命令安裝[root@lvs ~]# dnf/yum install ipvsadm -y
用命令watch -n1 ipvsadm -Ln 查看策略調度機制
輸入命令[root@lvs ~]# ipvsadm -A -t
172.25.254.200:80 -s rr #這條命令使用 ipvsadm
工具配置一個虛擬服務 172.25.254.200:80
,并使用 輪詢(Round Robin) 調度算法(-S rr
)來分發流量到后端服務器
[root@lvs ~]# ipvsadm -E -t 172.25.254.200:80 -s wrr #-E表示更改為wrr機制 TCP 172.25.254.200:80 wrr
[root@lvs ~]# ipvsadm -E -t 172.25.254.200:80 -s wrr -p 360 #-p設置持久連接超時規定時間內同一來源請求調度到同一realserver-----這里時間設為360
TCP 172.25.254.200:80 wrr persistent 360
[root@lvs ~]# ipvsadm -A -f 66 -s rr #設置火墻?TCP ?172.25.254.200:80 wrr persistent 360FWM ?66 rr
刪除機制
[root@lvs ~]# ipvsadm -D -f 66 #刪除火墻-D?[root@lvs ~]# ipvsadm -C ? ? ? ? #全部刪除
#模式不能混用
[root@lvs ~]# ipvsadm -A -t 172.25.254.200:80 -s rr[root@lvs ~]# ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.10:80 -g[root@lvs ~]# ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.20:80 -g#-g為直連路由
[root@lvs ~]# ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.20:80 -m[root@lvs ~]# ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.10:80 -m#-m為nat模式
[root@lvs ~]# ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.20:80 -i[root@lvs ~]# ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.10:80 -i#-e為切換模式 -i為ipip隧道模式
設置權重
[root@lvs ~]# ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.10:80 -i -w 2#-w 后面跟數字代表權重這里設置2--權重不是所有模式一定生效
計數器[root@lvs ~]# watch -n1 ipvsadm -Ln --rate #后面加--tate -Z清楚計數器
保存策略
[root@lvs ~]# ipvsadm-save -n > /mnt/ipvsadm.rule?如果用ipvsadm -C刪除后?用命令ipvsadm-restore < /mnt/ipvsadm.rule恢復策略永久保存 #開機時加載策略ipvsadm-save -n > /etc/sysconfig/ipvsadm