一、ipvsadm概述
ipvsadm是一個Linux內核中的IP負載均衡工具,它對應的用戶控制程序是ipvsadm。
使用ipvsadm可以配置4層負載均衡,並支持多種負載均衡演算法,還可以基於策略路由、NAT等技術對請求進行轉發。ipvsadm支持TCP和UDP協議,並可擴展到7層負載均衡。
ipvsadm配置文件路徑:/etc/sysconfig/ipvsadm
二、ipvsadm命令
1、ipvsadm -L
該命令用於列出所有的虛擬服務和伺服器。可以通過「-n」選項來只顯示IP地址而不解析為域名,通過「-t」選項來只顯示TCP虛擬服務和伺服器,通過「-u」選項來只顯示UDP虛擬服務和伺服器。
ipvsadm -L [-n] [-t] [-u]
2、ipvsadm -A
該命令用於添加虛擬服務或者伺服器。需要指定虛擬服務的協議(TCP或UDP)、IP地址和埠,以及在哪些真實伺服器中進行轉發。
在每台真實伺服器上需要先開啟IP_forwarding功能。
ipvsadm -A -t|u vip_address:port -s scheduling -p [real_server:porti] -g [real_server_group_name]
3、ipvsadm -R
該命令用於修改虛擬服務或真實伺服器的參數配置。
ipvsadm -R [-t|u] vip_address:port -s scheduling -p [real_server:port] -g [real_server_group_name]
4、ipvsadm -D
該命令用於刪除虛擬服務或者真實伺服器。
ipvsadm -D [-t|u] vip_address:port [-r real_server:port] [-g real_server_group_name]
5、ipvsadm -C
該命令用於清空所有虛擬服務及伺服器。
ipvsadm -C
三、ipvsadm負載均衡演算法
1、輪詢(RR)
演算法描述:輪詢演算法採用輪詢的方式依次將請求分發到不同的伺服器上,它是一種簡單易理解的演算法,每個伺服器均勻分配請求。
示例代碼:
#添加虛擬服務 ipvsadm -A -t 192.168.1.100:80 -s rr #添加真實伺服器 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m
2、最小連接數(LC)
演算法描述:最小連接數演算法將請求發送給當前活躍連接數最少的伺服器,它的優點是可以進行動態平衡,但在短時間內出現的請求波動時,它可能會將請求分配給當前使用狀況較好的伺服器,而非負載較低的伺服器。
示例代碼:
#添加虛擬服務 ipvsadm -A -t 192.168.1.100:80 -s lc #添加真實伺服器 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m
3、源地址哈希(SH)
演算法描述:源地址哈希演算法根據請求源IP地址,從預先分配的伺服器群中選擇一台伺服器來處理請求。
示例代碼:
#添加虛擬服務 ipvsadm -A -t 192.168.1.100:80 -s sh #添加真實伺服器 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m
四、ipvsadm高可用設置
1、LVS + Keepalived
通過LVS + Keepalived的方式可以實現高可用的負載均衡,自動探測故障伺服器,並將請求轉發到健康的伺服器。
示例代碼:
#配置實時同步組網 ipvsadm -A -t 192.168.0.100:80 -s rr ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g w1 ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g w1 ipvsadm -G w1 -p 120 -u 3600 -t 300 #配置keepalived vrrp_script chk_server { script "/usr/local/keepalived/sh/check_server.sh" interval 2 } vrrp_instance VI_1 { state MASTER interface eth1 virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.0.100/24 brd 192.168.0.255 dev eth1 } track_script { chk_server } }
2、LVS + HAProxy
通過LVS + HAProxy的方式可以實現雙重負載均衡,LVS作為前端負責物理層面上的負載均衡,HAProxy作為後端,負責對具體的資源請求進行分發。
示例代碼:
#配置LVS ipvsadm -A -t 192.168.0.100:80 -s rr ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -m ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -m #配置HAProxy listen web 192.168.0.100:80 bind *:80 mode http stats enable stats uri /haproxy?stats option httplog option forwardfor balance roundrobin server one 192.168.0.101:80 check inter 1000 rise 1 fall 2 server two 192.168.0.102:80 check inter 1000 rise 1 fall 2
五、ipvsadm其他參數設置
1、nat模式
在nat模式下,請求通過虛擬IP地址發送到LVS機器上,然後再被返回到客戶端。
#添加虛擬服務 ipvsadm -A -t 192.168.1.100:80 -s rr -m #添加真實伺服器 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m
2、tunnel模式
在tunnel模式下,LVS通過隧道將請求轉發到目標伺服器,目標伺服器返回數據也通過隧道經過LVS返回。
#添加虛擬服務 ipvsadm -A -t 192.168.1.100:80 -s rr -m --tunnel-id 100 #添加真實伺服器 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m --tunnel-id 100 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m --tunnel-id 100 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m --tunnel-id 100
3、DR模式
在DR模式下,LVS完成轉發後,請求和響應數據不經過LVS返回,而是直接返回到客戶端和伺服器之間。
#添加虛擬服務 ipvsadm -A -t 192.168.1.100:80 -s rr --dr #添加真實伺服器 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g w1 -w 1 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g w2 -w 1 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -g w3 -w 1 ipvsadm -G w1 -N 1 -l ipvsadm -G w2 -N 1 -l ipvsadm -G w3 -N 1 -l
六、小結
ipvsadm是一款功能強大、配置靈活的負載均衡工具,支持多種負載均衡演算法和配置模式,通過對負載均衡的控制,可以有效地提高服務的可用性和性能。
原創文章,作者:OUQMG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332774.html