命令选项:
管理集群服务:增、改、删查
ipvsadm -A|E -t|u|f service-address [-s scheduler]
ipvsadm -D -t|u|f service-address
-A:添加 -E:修改 -D:删除
service-address:
-t, tcp, vip:port
-u, udp, vip:port
-f, fwm, MARK
-s scheduler:默认为wlc;
管理集群服务上的RS:
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -r server-address
-a:添加一个RS -e:修改一个RS -d:删除一个RS
server-address:
rip[:port]
-g:GATEWAY (默认DR)
-i: IPIP,tun
-m: MASQUERADE,nat
-w weight
查看:
ipvsadm -L|l [options]
-n:numeric,数字格式显示地址和端口;
-c:connection,显示ipvs连接;
--stats:统计数据;
--rate:速率
--exact:精确值
清空规则:
ipvsadm -C
保存和重载:
保存:
ipvsadm -S > /PATH/TO/SOME_RULE_FILE
ipvsadm-save > /PATH/TO/SOME_RULE_FILE
重载:
ipvsadm -R < /PATH/FROM/SOME_RULE_FILE
ipvsadm-restore < /PATH/FROM/SOME_RULE_FILE
计数器清零:
ipvsadm -Z [-t|u|f service-address]
环境:
10.10.10.196 CentOS 7 Director
10.10.10.197 CentOS 6 real server
10.10.10.198 CentOS 6 real server
10.10.10.196服务器
a、首先判断内核是否支持ipvs
b、安装ipvsadm
[root@localhost gonc]# yum install ipvsadm
规则练习:
#将10.10.10.196的80,添加成一个集群调度服务器
[root@localhost ~]# ipvsadm -A -t 10.10.10.196:80
#查看,可以看出默认调度方法是wlc
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wlc
#将10.10.10.197也是80端口(可以省略,默认是集群调度的端口),采用nat模型,权重是1,添加至集群调度服务器里
[root@localhost ~]# ipvsadm -a -t 10.10.10.196:80 -r 10.10.10.197:80 -m -w 1
#再次查看,Masq表名是nat,权重是1
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wlc
-> 10.10.10.197:80 Masq 1 0 0
#根据速率查看,CPS:每秒的连接数、InPPS:每秒的入站报文数、OutPPS:每秒的出站报文数、InBPS:每秒的入站字节数、OutBPS每秒的出站字节数
[root@localhost ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
TCP 10.10.10.196:80 0 0 0 0 0
-> 10.10.10.197:80
0 0 0 0 0
#根据状态查看,Conns:连接数、InPkts:入站报文数、OutPkts:出站报文数、InBytes:入站字节数、OutBytes:出站字节数
[root@localhost ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 10.10.10.196:80 0 0 0 0 0
-> 10.10.10.197:80 0 0 0 0 0
#将10.10.10.198的80服务同样采用nat方式,权重为1,加入到集群服务中
[root@localhost ~]# ipvsadm -a -t 10.10.10.196:80 -r 10.10.10.198 -m -w 3
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wlc
-> 10.10.10.197:80 Masq 1 0 0
-> 10.10.10.198:80 Masq 3 0 0
#新创建一个3306的集群调度服务,调度方式采用rr
[root@localhost ~]# ipvsadm -A -t 10.10.10.196:3306 -s rr
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wlc
-> 10.10.10.197:80 Masq 1 0 0
-> 10.10.10.198:80 Masq 3 0 0
TCP 10.10.10.196:3306 rr
[root@localhost ~]# ipvsadm -a -t 10.10.10.196:3306 -r 10.10.10.197 -m -w 1
[root@localhost ~]# ipvsadm -a -t 10.10.10.196:3306 -r 10.10.10.198 -m -w 3
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wlc
-> 10.10.10.197:80 Masq 1 0 0
-> 10.10.10.198:80 Masq 3 0 0
TCP 10.10.10.196:3306 rr
-> 10.10.10.197:3306 Masq 1 0 0
-> 10.10.10.198:3306 Masq 3 0 0
#在10.10.10.196:3306这个集群里,删除掉10.10.10.197这个real server
[root@localhost ~]# ipvsadm -d -t 10.10.10.196:3306 -r 10.10.10.197
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wlc
-> 10.10.10.197:80 Masq 1 0 0
-> 10.10.10.198:80 Masq 3 0 0
TCP 10.10.10.196:3306 rr
-> 10.10.10.198:3306 Masq 3 0 0
#修改10.10.10.196:80的调度方式为wrr
[root@localhost ~]# ipvsadm -E -t 10.10.10.196:80 -s wrr
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wrr
-> 10.10.10.197:80 Masq 1 0 0
-> 10.10.10.198:80 Masq 3 0 0
TCP 10.10.10.196:3306 rr
-> 10.10.10.198:3306 Masq 3 0 0
#在10.10.10.196:80里,将10.10.10.198的权重修改为10
[root@localhost ~]# ipvsadm -e -t 10.10.10.196:80 -r 10.10.10.198 -w 10
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wrr
-> 10.10.10.197:80 Masq 1 0 0
-> 10.10.10.198:80 Route 10 0 0
TCP 10.10.10.196:3306 rr
-> 10.10.10.198:3306 Masq 3 0 0
#输出规则
[root@localhost ~]# ipvsadm -S
-A -t node0:http -s wrr
-a -t node0:http -r node1:http -m -w 1
-a -t node0:http -r node2:http -g -w 10
-A -t node0:mysql -s rr
-a -t node0:mysql -r node1:mysql -m -w 1
-a -t node0:mysql -r node2:mysql -m -w 3
#保存至指定文件
[root@localhost ~]# ipvsadm -S > /tmp/ipvsadm-config.v1
[root@localhost ~]# cat /tmp/ipvsadm-config.v1
-A -t node0:http -s wrr
-a -t node0:http -r node1:http -m -w 1
-a -t node0:http -r node2:http -g -w 10
-A -t node0:mysql -s rr
-a -t node0:mysql -r node1:mysql -m -w 1
-a -t node0:mysql -r node2:mysql -m -w 3
#清空规则
[root@localhost ~]# ipvsadm -C
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
#重载规则
[root@localhost ~]# ipvsadm -R < /tmp/ipvsadm-config.v1
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wrr
-> 10.10.10.197:80 Masq 1 0 0
-> 10.10.10.198:80 Route 10 0 0
TCP 10.10.10.196:3306 rr
-> 10.10.10.197:3306 Masq 1 0 0
-> 10.10.10.198:3306 Masq 3 0 0
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wrr
-> 10.10.10.197:80 Masq 1 0 0
-> 10.10.10.198:80 Route 10 0 0
TCP 10.10.10.196:3306 rr
-> 10.10.10.197:3306 Masq 1 0 0
-> 10.10.10.198:3306 Masq 3 0 0
#输出至默认配置文件
[root@localhost ~]# ipvsadm -S > /etc/sysconfig/ipvsadm
[root@localhost ~]# cat /etc/sysconfig/ipvsadm
-A -t node0:http -s wrr
-a -t node0:http -r node1:http -m -w 1
-a -t node0:http -r node2:http -g -w 10
-A -t node0:mysql -s rr
-a -t node0:mysql -r node1:mysql -m -w 1
-a -t node0:mysql -r node2:mysql -m -w 3
#停止ipvs
[root@localhost ~]# systemctl stop ipvsadm stop
Failed to stop stop.service: Unit stop.service not loaded.
[root@localhost ~]# systemctl stop ipvsadm
[root@localhost ~]# ipvsadm -C
#启动ipvs
[root@localhost ~]# systemctl start ipvsadm
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.196:80 wrr
-> 10.10.10.197:80 Masq 1 0 0
-> 10.10.10.198:80 Route 10 0 0
TCP 10.10.10.196:3306 rr
-> 10.10.10.197:3306 Masq 1 0 0
-> 10.10.10.198:3306 Masq 3 0 0