[root@node1 ~]# cat /boot/config-3.10.0-862.el7.x86_64 | grep -i ipvs -A 10
#/boot/config-* 根据内核版本不同定义名称,内核配置文件,y表示已编译模块,m表示可加载的模块
# grep 根据关键词查询内容
#-i:查询内容不区分大小写
#-A -B -C 后面都跟阿拉伯数字
#-A:是显示匹配后和它后面的n行。
#-B:是显示匹配行和它前面的n行。
#-C:是匹配行和它前后各n行。
CONFIG_NETFILTER_XT_MATCH_IPVS=m
#ipvs
#此处应显示10行内容,但与IPVS不相关,就删除了
....
--
# IPVS transport protocol load balancing support
#IPVS支持的协议
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y
#
# IPVS scheduler
#IPVS调度算法
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
--
# IPVS SH scheduler
#IPVS sh算法调度
CONFIG_IP_VS_SH_TAB_BITS=8
#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
CONFIG_IP_VS_NFCT=y
CONFIG_IP_VS_PE_SIP=m
...
[root@node1 ~]# rpm -ql ipvsadm
/etc/sysconfig/ipvsadm-config
#ipvs配置文件
/usr/lib/systemd/system/ipvsadm.service
#守护进程服务
/usr/sbin/ipvsadm
#主程序
/usr/sbin/ipvsadm-restore
#ipvs规则重载工具
/usr/sbin/ipvsadm-save
#ipvs规则保存工具
/usr/share/doc/ipvsadm-1.27
/usr/share/doc/ipvsadm-1.27/README
/usr/share/man/man8/ipvsadm-restore.8.gz
/usr/share/man/man8/ipvsadm-save.8.gz
/usr/share/man/man8/ipvsadm.8.gz
#其他文档
[root@node1 ~]# ipvsadm -h
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
# ipvsadm 版本信息 包括IPVS版本
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
#更改用于IPVS连接的超时值,tcp表示TCP会话,tcpfin表示接收到FIN数据包后的TCP会,udp表示UDP数据包的超时值(均以秒为单位)
ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]
#启动同步守护进程,state的值可以是master或backup,用来说明调度服务器是master或是backup
ipvsadm --stop-daemon state
#停止同步进程
ipvsadm -h
Commands:
Either long or short options are allowed.
--add-service -A add virtual service with options|添加一个虚拟服务,使用ip地址、端口号、协议来唯一定义一个虚拟服务,添加内容保存在内核虚拟服务器列表中
--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|如果没有指定参数,则列出虚拟服务器表。如果选择了虚拟服务器地址,则仅列出该虚拟服务器的信息。如果选择-c选项,则显示连接表。输出内容受到其他参数的影响
--zero -Z zero counters in a service or all services|虚拟服务表计数器清零(清空当前的连接数量等)
--set tcp tcpfin udp set connection timeout values|更改用于IPVS连接的超时值。该命令始终使用3个参数,分别表示TCP会话,接收到FIN数据包后的TCP会话和UDP数据包的超时值(以秒为单位)。超时值0表示保留相应条目的当前超时值
--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]
#说明虚拟服务器提供的是tcp 的服务。服务器地址的形式为 主机[:端口]。
#主机可以是IP地址也可以是主机名。
#端口可以是普通的端口号,也可以是端口的服务名称。端口可以被省略,在这种情况下,默认端口号为0。当端口号为0时,需要指定服务器提供持久稳固的服务(也即是使用了-p | --persistent选项)才有效,在这种情况下,它是一个通配符端口,即访问任何端口的连接都将被接受。
--udp-service -u service-address service-address is host[:port]
#虚拟服务器提供的是udp 的服务。服务器地址的形式为 主机[:端口]。
--fwmark-service -f fwmark fwmark is an integer greater than zero
#使用fwamrk(fwmark是一个大于0的整数值)来防火墙标识集群服务,而不是地址、 端口和协议使用它,fwmark可以通过结合IPtables将多个以调度器为目标的端口定义成一个防火墙标识,由ipvsdam通过此项关联标识,则可以实现对一个IP多端口调度,即实现后端服务器可以开放多个服务
--ipv6 -6 fwmark entry uses IPv6
#与-f一起使用表示fwmark规则使用IPv6地址
--scheduler -s scheduler one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
the default scheduler is wlc.
#指定集群服务使用的调度算法。10种调度算法被实现为内核模块。默认的调度算法是wlc
--pe engine alternate persistence engine may be sip,
not set by default.
#设置持久化引擎如源IP,默认不设置
--persistent -p [timeout] persistent service
#开启持久化服务,开启它则表示在指定时间内,来自同一IP的请求都会转发到后端同一台真实服务器上进行处理,默认时间为300秒
#此选项可以与SSL或FTP等协议结合使用,这对客户端始终与同一台真实服务器保持连接至关重要
--netmask -M netmask persistent granularity mask
#使用网络掩码来屏蔽持久化来源IP的地址范围,默认值为255.255.255.255,即所有来源IP请求都会享受持久化服务
--real-server -r server-address server-address is host (and port)
#指定真实服务器的主机IP与端口
--gatewaying -g gatewaying (direct routing) (default)
#指定IPVS的工作模式为DR模式,DR为默认模式
--ipip -i ipip encapsulation (tunneling)
#指定IPVS的工作模式为IP隧道模式
--masquerading -m masquerading (NAT)
#指定IPVS的工作模式为NAT模式
--weight -w weight capacity of real server
#指定真实服务器的权重值
--u-threshold -x uthreshold upper threshold of connections
#设置转发请求的最大上连接阀值,范围为0~65535,当连接数超过指定上限时,LVS则不会转发请求
--l-threshold -y lthreshold lower threshold of connections
#设置转发请求的下连接阀值,范围为0~65535,当连接数降低至指定值时,LVS则继续提供服务,默认值为0
--mcast-interface interface multicast interface for connection sync
#设置用于连接同步守护进程的组播接口
--syncid sid syncid for connection sync (default=255)
#设置连接同步守护进程的SID号,用于标识,范围0~255,默认为255
--connection -c output of current IPVS connections
#显示连接信息,一般与"-l"连用
--timeout output of timeout (tcp tcpfin udp)
#显示TCP、TCPFIN、UDP超时时间信息,一般与"-l"连用
--daemon output of daemon information
#显示连接同步守护信息,一般与"-l"连用
--stats output of statistics information
#显示统计信息,一般与"-l"连用
--rate output of rate information
#显示转发速率信息,一般与"-l"连用
--exact expand numbers (display exact values)
#显示数据包和字节计数器的确切值,扩大字符长度
--thresholds output of thresholds information
#显示阀值信息,一般与"-l"连用
--persistent-conn output of persistent connection info
#显示持久化连接信息,一般与"-l"连用
--nosort disable sorting output of service/server entries
#不要对虚拟服务和真实服务器的列表进行排序
--sort does nothing, for backwards compatibility
#排序虚拟服务和真实服务器的列表。虚拟服务条目按照升序排列。真实的服务器条目按<地址,端口>升序排列。
--ops -o one-packet scheduling
#指定一个虚拟服务使用单包调度。该选项只能用于UDP服务。如果指定了此选项,则创建的所有连接都仅用于转发一个数据包。选项对于将UDP数据包从相同的客户端端口调度到不同的真实服务器很有用
--numeric -n numeric output of addresses and ports
#地址和端口以数字格式显示,一般与"-l"连用
--sched-flags -b flags scheduler flags (comma-separated)
#设置调度算法的范围标识,用于SH算法,有两个标识:sh-fallback,如果真实服务器不可用,则将其转发到其他真实服务器上。sh-port,将源地址的端口号也添加到散列键=值中
#第一次启动ipvsadm服务,会报错
[root@node1 network-scripts]# systemctl start ipvsadm
Job for ipvsadm.service failed because the control process exited with error code. See "systemctl status ipvsadm.service" and "journalctl -xe" for details.
#报错显示信息
[root@node1 network-scripts]# systemctl status ipvsadm.service
● ipvsadm.service - Initialise the Linux Virtual Server
Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2020-02-06 10:59:31 EST; 35s ago
Process: 16139 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm (code=exited, status=1/FAILURE)
Main PID: 16139 (code=exited, status=1/FAILURE)
Feb 06 10:59:31 node1 systemd[1]: Starting Initialise the Linux Virtual Server...
Feb 06 10:59:31 node1 bash[16139]: /bin/bash: /etc/sysconfig/ipvsadm: No such file or directory
Feb 06 10:59:31 node1 systemd[1]: ipvsadm.service: main process exited, code=exited, status=1/FAILURE
Feb 06 10:59:31 node1 systemd[1]: Failed to start Initialise the Linux Virtual Server.
Feb 06 10:59:31 node1 systemd[1]: Unit ipvsadm.service entered failed state.
Feb 06 10:59:31 node1 systemd[1]: ipvsadm.service failed.
[root@node1 network-scripts]# touch /etc/sysconfig/ipvsadm
[root@node1 network-scripts]# systemctl status ipvsadm.service
● ipvsadm.service - Initialise the Linux Virtual Server
Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2020-02-06 10:59:31 EST; 2min 49s ago
Process: 16139 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm (code=exited, status=1/FAILURE)
Main PID: 16139 (code=exited, status=1/FAILURE)
Feb 06 10:59:31 node1 systemd[1]: Starting Initialise the Linux Virtual Server...
Feb 06 10:59:31 node1 bash[16139]: /bin/bash: /etc/sysconfig/ipvsadm: No such file or directory
Feb 06 10:59:31 node1 systemd[1]: ipvsadm.service: main process exited, code=exited, status=1/FAILURE
Feb 06 10:59:31 node1 systemd[1]: Failed to start Initialise the Linux Virtual Server.
Feb 06 10:59:31 node1 systemd[1]: Unit ipvsadm.service entered failed state.
Feb 06 10:59:31 node1 systemd[1]: ipvsadm.service failed.
报错信息:Feb 06 10:59:31 node1 bash[16139]: /bin/bash: /etc/sysconfig/ipvsadm: No such file or directory
报错原因:因为是第一次启动还没有此文件
解决方式:生成一个此文件
#方式1,使用ipvsadm命令:
[root@node1 network-scripts]# ipvsadm --save > /etc/sysconfig/ipvsadm
#方式2,直接touch一个文件
[root@node1 network-scripts]# touch /etc/sysconfig/ipvsadm
[root@node1 network-scripts]# vim /etc/sysconfig/ipvsadm-config
# Unload modules on restart and stop
# Value: yes|no, default: yes
# This option has to be 'yes' to get to a sane state for a ipvs
# restart or stop. Only set to 'no' if there are problems unloading ipvs
# modules.
IPVS_MODULES_UNLOAD="yes"
# Save current ipvs rules on stop.
# Value: yes|no, default: no
# Saves all ipvs rules to /etc/sysconfig/ipvsadm if ipvsadm gets stopped
# (e.g. on system shutdown).
IPVS_SAVE_ON_STOP="no" #服务关闭,是否保存将现有策略到策略文件中
# Save current ipvs rules on restart.
# Value: yes|no, default: no
# Saves all ipvs rules to /etc/sysconfig/ipvsadm if ipvsadm gets
# restarted.
IPVS_SAVE_ON_RESTART="no" #服务重启,是否保存将现有策略到策略文件中
# Numeric status output
# Value: yes|no, default: yes
# Print IP addresses and port numbers in numeric format in the status output.
IPVS_STATUS_NUMERIC="yes"
建议将IPVS_SAVE_ON_STOP和IPVS_SAVE_ON_RESTART改为yes,保证服务重启或者停止下配置策略不丢失