lvs是内核里面的功能,在内核中叫做ipvs
用户空间使用ipvsadm这个工具包提供的工具来管理内核中的ipvs功能
ipvsadm核心功能:
集群服务管理:增、删、改
集群服务的RS管理:增、删、改
查看
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
说明:
-A:表示新增 -E:表示修改 service-address:集群的地址(VIP:port) -t|u|f: # 指定这个vip端口使用的协议类型 -t: TCP协议的端口,VIP:TCP_PORT 如: -t 10.0.0.100:80 -u: UDP协议的端口,VIP:UDP_PORT 如:-u 10.0.0.100:80 -f:firewall MARK,标记,一个数字 [-s scheduler]:指定集群的调度算法,默认为wlc
例如:表示创建了一个负载均衡集群,lvs的ip为10.0.0.100
ipvsadm -A -t 10.0.0.100:80 -s wrr
例如:修改lvs的调度算法为rr
[root@lvs ~]# ipvsadm -E -t 192.168.10.100:80 -s rr [root@lvs ~]# ipvsadm -l IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP lvs:http rr -> 10.0.0.7:http Masq 1 0 0 -> 10.0.0.17:http Masq 1 0 0
ipvsadm -D -t|u|f service-address
说明:
-D:表示删除
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
说明:
server-address: #在添加rs的时候,指定前面创建的集群地址 rip[:port] #如省略port,不作端口映射 -r: 后端服务器rs的RIP地址 选项: lvs类型: #表示指定lvs使用的功能模式 -g: gateway, dr类型,默认使用dr这种工作模式 -i: ipip, tun类型 -m: masquerade(伪装), nat类型 -w weight:权重 指定这个rs的权重
范例:新增rs到集群中
ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.8:8080 -m -w 3
范例:修改rs的权重,默认为1
[root@lvs ~]# ipvsadm -e -t 192.168.10.100:80 -r 10.0.0.17 -m -w 3 [root@lvs ~]# ipvsadm -l IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP lvs:http rr -> 10.0.0.7:http Masq 1 0 0 -> 10.0.0.17:http Masq 3 0 0
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -C
信息查看:
ipvsadm -L|l [options] -L:查看创建的集群信息
例如:查看集群的信息
[root@lvs ~]# ipvsadm -L IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP lvs:http wrr -> 10.0.0.7:http Masq 1 0 0 -> 10.0.0.17:http Masq 1 0 0
--numeric, -n:以数字形式输出地址和端口号 --exact:扩展信息,精确值 --connection,-c:当前IPVS连接输出,查看连接信息 --stats:统计信息 --rate :输出速率信息
/proc/net/ip_vs
例如:
#存放在内存中的 十六进制格式显示 [root@lvs ~]# cat /proc/net/ip_vs IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn #InActConn表示的是非活动的链接 TCP C0A80A64:0050 wrr -> 0A000011:0050 Masq 1 0 0 -> 0A000007:0050 Masq 1 0 0
/proc/net/ip_vs_conn
例如:
[root@lvs ~]# cat /proc/net/ip_vs_conn #存放的是pvs的连接信息 十六进制显示 Pro FromIP FPrt ToIP TPrt DestIP DPrt State Expires PEName PEData TCP C0A80A06 A5B8 C0A80A64 0050 0A000011 0050 TIME_WAIT 115 TCP C0A80A06 A5B0 C0A80A64 0050 0A000011 0050 TIME_WAIT 113 TCP C0A80A06 A5C2 C0A80A64 0050 0A000007 0050 TIME_WAIT 117 TCP C0A80A06 A5C4 C0A80A64 0050 0A000011 0050 TIME_WAIT 117 TCP C0A80A06 A5BA C0A80A64 0050 0A000007 0050 TIME_WAIT 115 TCP C0A80A06 A5AC C0A80A64 0050 0A000011 0050 TIME_WAIT 112 TCP C0A80A06 A5AE C0A80A64 0050 0A000007 0050 TIME_WAIT 113 TCP C0A80A06 A5C0 C0A80A64 0050 0A000011 0050 TIME_WAIT 116 TCP C0A80A06 A5B6 C0A80A64 0050 0A000007 0050 TIME_WAIT 115 TCP C0A80A06 A5AA C0A80A64 0050 0A000007 0050 TIME_WAIT 106 TCP C0A80A06 A5C6 C0A80A64 0050 0A000007 0050 TIME_WAIT 118 TCP C0A80A06 A5B4 C0A80A64 0050 0A000011 0050 TIME_WAIT 114 TCP C0A80A06 A5BE C0A80A64 0050 0A000007 0050 TIME_WAIT 116 TCP C0A80A06 A5B2 C0A80A64 0050 0A000007 0050 TIME_WAIT 114 TCP C0A80A06 A5BC C0A80A64 0050 0A000011 0050 TIME_WAIT 116
规则默认是保存在内存中的。需要写入一个对应的文件,开启的时候重新加载他生效。
建议保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE ipvsadm -S > /PATH/TO/IPVSADM_FILE
[root@lvs ~]# cat /usr/lib/systemd/system/ipvsadm.service [Unit] Description=Initialise the Linux Virtual Server After=syslog.target network.target [Service] Type=oneshot ExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm" #会自动保存规则至/etc/sysconfig/ipvsadm ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm" #会自动加载/etc/sysconfig/ipvsadm中规则 ExecStop=/sbin/ipvsadm -C #会自动清空内存中的规则 RemainAfterExit=yes [Install] WantedBy=multi-user.target