ipvsadm命令格式说明

以ipvsadm v1.27版本为例说明ipvsadm命令使用方式,对应内核ipvs版本v1.2.1

# ipvsadm -h
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
Usage:
  ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags] 
  ipvsadm -D -t|u|f service-address
  ipvsadm -C
  ipvsadm -R
  ipvsadm -S [-n]
  ipvsadm -a|e -t|u|f service-address -r server-address [options]
  ipvsadm -d -t|u|f service-address -r server-address
  ipvsadm -L|l [options]
  ipvsadm -Z [-t|u|f service-address]
  ipvsadm --set tcp tcpfin udp
  ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]
  ipvsadm --stop-daemon state
  ipvsadm -h

Commands:
Either long or short options are allowed.
  --add-service     -A        add virtual service with options
  --edit-service    -E        edit virtual service with options
  --delete-service  -D        delete virtual service
  --clear           -C        clear the whole table
  --restore         -R        restore rules from stdin
  --save            -S        save rules to stdout
  --add-server      -a        add real server with options
  --edit-server     -e        edit real server with options
  --delete-server   -d        delete real server
  --list            -L|-l     list the table
  --zero            -Z        zero counters in a service or all services
  --set tcp tcpfin udp        set connection timeout values
  --start-daemon              start connection sync daemon
  --stop-daemon               stop connection sync daemon
  --help            -h        display this help message

Options:
  --tcp-service  -t service-address   service-address is host[:port]
  --udp-service  -u service-address   service-address is host[:port]
  --fwmark-service  -f fwmark         fwmark is an integer greater than zero
  --ipv6         -6                   fwmark entry uses IPv6
  --scheduler    -s scheduler         one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
                                      the default scheduler is wlc.
  --pe            engine              alternate persistence engine may be sip,
                                      not set by default.
  --persistent   -p [timeout]         persistent service
  --netmask      -M netmask           persistent granularity mask
  --real-server  -r server-address    server-address is host (and port)
  --gatewaying   -g                   gatewaying (direct routing) (default)
  --ipip         -i                   ipip encapsulation (tunneling)
  --masquerading -m                   masquerading (NAT)
  --weight       -w weight            capacity of real server
  --u-threshold  -x uthreshold        upper threshold of connections
  --l-threshold  -y lthreshold        lower threshold of connections
  --mcast-interface interface         multicast interface for connection sync
  --syncid sid                        syncid for connection sync (default=255)
  --connection   -c                   output of current IPVS connections
  --timeout                           output of timeout (tcp tcpfin udp)
  --daemon                            output of daemon information
  --stats                             output of statistics information
  --rate                              output of rate information
  --exact                             expand numbers (display exact values)
  --thresholds                        output of thresholds information
  --persistent-conn                   output of persistent connection info
  --nosort                            disable sorting output of service/server entries
  --sort                              does nothing, for backwards compatibility
  --ops          -o                   one-packet scheduling
  --numeric      -n                   numeric output of addresses and ports
  --sched-flags  -b flags             scheduler flags (comma-separated)

ipvsadm命令分为命令(Commands)和选项(Options)两部分。命令有两种形式,一个是全写,一个是缩写,功能一样,实际使用中一般缩写使用更频繁。 常用命令说明如下:

常用命令 说明
-A --add-service 添加一条虚拟服务记录
-E --edit-service 编辑一条虚拟服务记录
-D --delete-service 删除一条虚拟服务记录
-C --clear 清空虚拟服务ipvs规则
-R --restore 恢复虚拟服务规则
-S --save 保存虚拟服务规则
-a --add-server 指定一条内核虚拟服务器记录添加一条real server记录
-e --edit-server 指定一条内核虚拟服务器记录编辑一条real server记录
-d --delete-server 指定一条内核虚拟服务器记录删除一条real server记录
-L -l --list 显示内核虚拟服务器列表
-Z --zero 虚拟服务表计数器清零(--stats)
--set tcp tcpfin udp 设置连接超时时间,分别为TCP、TCPFIN(TCP关闭连接状态)、UDP连接超时时间。
--start-daemon 启动同步守护进程。在选项后面指定自己角色,是master还是backup,主负载调度器会同步所有策略及连接状态到备负载调度器,当主故障,备可以立即接替工作
--stop-daemon 停止同步守护进程

选项同样也有两种形式,一个是全写,一个是缩写,功能一致。 常用选项说明如下:

常用选项 说明
--tcp-service -t service-address 服务IP使用TCP协议,IP[:port]
--udp-service -u service-address 服务IP使用UDP协议,IP[:port]
--fwmark-service -f fwmark 使用整型的防火墙标记标识集群服务,可以结合iptables将多个以调度器为目标的端口定义成一个防火墙标识,ipvsadm通过此关联标识,可以实现对一个IP多个端口调度,即实现后端服务器可以开放多个服务
--scheduler -s scheduler 参数为rr/wrr/lc/wlc/lblc/lblcr/dh/sh/sed/nq其中之一,默认调度算法是wlc
--pe engine 设置持久化引擎如源IP,默认不设置
--persistent -p [timeout] 开启持久化,在指定时间timeout内,来自同一个IP的请求都会转发到同一台real server
--netmask -M netmask 使用网络掩码来屏蔽持久化源IP范围,默认32位掩码,即所有源IP的请求都会享受持久化服务
--real-server -r server-address 指定real server的IP和port
--gatewaying -g 设置转发模式使用DR模式(direct routing),默认配置
--ipip -i 设置转发模式使用TUN模式
--masquerading -m 设置转发模式使用NAT模式
--weight -w weight 设置real server的权重
--u-threshold -x uthreshold 设置转发请求的最大上连接阈值,范围0~65535,当连接数超过上限,lvs则不会转发请求
--l-threshold -y lthreshold 设置转发请求的下连接阈值,范围0~65535,当连接数降低至指定值,lvs则继续提供服务,默认0
--mcast-interface interface 设置用于连接同步守护进程的组播接口
--syncid sid 设置连接同步守护进程的SID号,用于标识连接同步组,范围0~255
--connection -c 输出lvs的当前连接,一般和“-l”共用
--timeout 输出tcp、tcpfin、udp的超时信息,一般和“-l”共用
--daemon 输出连接同步守护信息,一般和“-l”共用
--stats 输出lvs统计信息,一般和“-l”共用
--rate 输出转发速率信息,一般和“-l”共用
--exact 显示数据包和字节数的准确值,扩大字符长度
--thresholds 显示阈值信息,一般和“-l”共用
--persistent-conn 输出持久化连接信息,一般和“-l”共用
--numeric -n 将输出的IP和port以数字化显示
--sched-flags -b flags 设置调度算法的范围表示,用于SH算法,两个标识:sh-fallback,如果real server不可用,将其转发到其他real server;sh-port,将源地址的端口号也添加到散列键=值中

ipvsadm命令实用举例

  • 添加一条虚拟服务器记录,指定加权轮询调度方式,然后指定该虚拟服务器记录添加real server,指定DR转发模式和权重
ipvsadm -A -t 192.168.14.100:80 -s wrr
ipvsadm -a -t 192.168.14.100:80 -r 192.168.14.129 -g -w 1
ipvsadm -a -t 192.168.14.100:80 -r 192.168.14.130 -g -w 1
  • 查看当前内核虚拟服务器表及其统计数据,“-n”参数将所有输出以数字显示
[root@proxy ~]# ipvsadm -ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.14.100:80                   0        0        0        0        0
  -> 192.168.14.129:80                   0        0        0        0        0
  -> 192.168.14.130:80                   0        0        0        0        0
[root@proxy ~]# ipvsadm -l --stats 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  proxy:http                          0        0        0        0        0
  -> 192.168.14.129:http                 0        0        0        0        0
  -> 192.168.14.130:http                 0        0        0        0        0
  • 参数“-S”将现有ipvs规则保存输出到stdout,可重定向到配置中保存。另外,只用-S会将IP和port转义成server name和常用服务口,加 -n参数可设置数字输出
[root@proxy ~]# ipvsadm -S
-A -t proxy:http -s wrr
-a -t proxy:http -r 192.168.14.129:http -g -w 1
-a -t proxy:http -r 192.168.14.130:http -g -w 1
[root@proxy ~]# ipvsadm -Sn
-A -t 192.168.14.100:80 -s wrr
-a -t 192.168.14.100:80 -r 192.168.14.129:80 -g -w 1
-a -t 192.168.14.100:80 -r 192.168.14.130:80 -g -w 1
  • -R --restore可以从stdin从恢复虚拟服务记录,和-S --save正好对应:
[root@proxy ~]# ipvsadm -Sn > ipvs_test
[root@proxy ~]# ipvsadm --restore < ipvs_test
[root@proxy ~]# 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.14.100:80 wrr
  -> 192.168.14.129:80            Route   1      0          0         
  -> 192.168.14.130:80            Route   1      0          0