ipvsadm
ipvs
- ipvsadm/ipvs:
- ipvs:
grep -i -A 10 “ipvs” /boot/config-VERSION-RELEASE.x86_64,支持的协议:TCP, UDP, AH, ESP, AH_ESP, SCTP - ipvs集群:
管理集群服务
管理服务上的RS
ipvsadm包构成
◆ ipvsadm:
◆ 程序包:ipvsadm
- Unit File: ipvsadm.service
- 主程序:/usr/sbin/ipvsadm
- 规则保存工具:/usr/sbin/ipvsadm-save
- 规则重载工具:/usr/sbin/ipvsadm-restore
- 配置文件:/etc/sysconfig/ipvsadm-config
ipvsadm命令
◆ 核心功能:
- 集群服务管理:增、删、改
- 集群服务的RS管理:增、删、改
- 查看
ipvsadm管理lvs
◆ 增、改
- ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-t: TCP协议的端口,VIP:TCP_PORT
-u: UDP协议的端口,VIP:UDP_PORT
-f:firewall MARK,标记,一个数字(结合防火墙的mangle表PREROUTING链创建的标签)
[-s scheduler]:指定集群的调度算法,默认为wlc
◆ 删
- ipvsadm -D -t|u|f service-address 删除
◆ 清空策略
- ipvsadm –C
ipvsadm管理RS
◆ 增、改
- ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
server-address:
rip[:port] 如省略port,不作端口映射
lvs类型:
-g: gateway, dr类型,默认
-i: ipip, tun类型
-m: masquerade, nat类型
-w weight:权重
◆ 删
- ipvsadm -d -t|u|f service-address -r server-address
ipvsadm规则管理
◆ 清空定义的所有内容:
- ipvsadm –C
◆ 清空计数器:
- ipvsadm -Z [-t|u|f service-address]
◆ 查看规则:
- ipvsadm -L|l [options]
–numeric, -n:以数字形式输出地址和端口号
–exact:扩展信息,精确值
–connection,-c:当前IPVS连接输出
–stats:统计信息
–rate :输出速率信息
◆ ipvs规则:/proc/net/ip_vs
◆ ipvs连接:/proc/net/ip_vs_conn
◆ 保存:
- 建议保存至/etc/sysconfig/ipvsadm
- ipvsadm-save > /PATH/TO/IPVSADM_FILE
- ipvsadm -S > /PATH/TO/IPVSADM_FILE
- systemctl stop ipvsadm.service
◆ 重载:
- ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
- systemctl restart ipvsadm.service
ipvsadm.service的service文件:
[root@centos7-17 ~]# 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"
ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm"
ExecStop=/sbin/ipvsadm -C
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
==>启动ipvsadm服务时:做了以下操作
ExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm"
读取/etc/sysconfig/ipvsadm文件的ipvsadm策略
注:第一次启动时,需要 /etc/sysconfig/ipvsadm文件存在
==>关闭ipvsadm服务时:
ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm"
ExecStop=/sbin/ipvsadm -C
==>先存定义的策略,覆盖重定向 /etc/sysconfig/ipvsadm这个文件,然后清空策略。
◆ 命令示例
[root@centos7-17 ~]# ipvsadm -A -t 192.168.38.17:80
[root@centos7-17 ~]# ipvsadm -a -t 192.168.38.17:80 -r 192.168.38.27:80 -m -w 1
[root@centos7-17 ~]# ipvsadm -a -t 192.168.38.17:80 -r 192.168.38.37:80 -m -w 1
[root@centos7-17 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.38.17:80 wlc
-> 192.168.38.27:80 Masq 1 0 0
-> 192.168.38.37:80 Masq 1 0 0
修改:
[root@centos7-17 ~]# ipvsadm -E -t 192.168.38.17:80 -s rr
- 注:ipvsadm -Ln中的选项Ln的顺序。
FireWall Mark
结合防火墙标签,ipvsadm -A|E -t…
- 比如tcp的80端口(http)和tcp的443端口(https),实质上都是web服务页面,此时想定义调度策略:访问443端口和访问80端口合并一条ipvsadm策略,此时需要结合防火墙的mangle表PREROUTING链创建相应的标签规则。
- 实现方法:
- 在Director主机打标记:
iptables -t mangle -A PREROUTING -d $vip -p $proto –m multiport - -dports p o r t 1 , port1, port1,port2,… -j MARK --set-mark NUMBER - 在Director主机基于标记定义集群服务:
ipvsadm -A -f NUMBER [options]
- 实现操作:
[root@centos7-17 ~]# iptables -t mangle -A PREROUTING -d 192.168.38.17 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 100
定义调度策略:
[root@centos7-17 ~]# ipvsadm -A -f 100 -s rr
[root@centos7-17 ~]# ipvsadm -a -f 100 -r 192.168.38.27 -m
[root@centos7-17 ~]# ipvsadm -a -f 100 -r 192.168.38.37 -m
查看:
FWM 100 rr
-> 192.168.38.27:0 Masq 1 0 0
-> 192.168.38.37:0 Masq 1 0 0
==>使用默认端口,好像不能端口映射。
==>
[root@centos7-17 ~]# ipvsadm -a -f 100 -r 192.168.38.27:443 -m
[root@centos7-17 ~]# ipvsadm -a -f 100 -r 192.168.38.37:443 -m
==> 在lvs调度器上做策略,使得访问tcp 80 的端口的http,被直接调度到后端服务器的tcp 443端口即https。
==>防护墙标签可以将http 、https 当成同一服务(本来也是同一服务)当做整体调度,
如果就http和https单独定义策略,是将其作为两个独立服务单独调度的。