ipvsadm

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…

  1. 比如tcp的80端口(http)和tcp的443端口(https),实质上都是web服务页面,此时想定义调度策略:访问443端口和访问80端口合并一条ipvsadm策略,此时需要结合防火墙的mangle表PREROUTING链创建相应的标签规则。
  2. 实现方法:
  • 在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]
  1. 实现操作:
[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单独定义策略,是将其作为两个独立服务单独调度的。

你可能感兴趣的:(lvs)