ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。需要使用yum单独安装。
modprobe -c|grep ipvs 查内核模块
alias ip6t_ipvs xt_ipvs
alias ipt_ipvs xt_ipvs
查ipvsadm由某个rpm包提供:yum provides ipvsadm
查是否安装了:rpm -q ipvsadm
安装:yum install -y ipvsadm
基本用法:
ipvsadm COMMAND [protocol] service-address
[scheduling-method] [persistence options]
ipvsadm command [protocol] service-address
server-address [packet-forwarding-method]
[weight options]
第一条命令用于向LVS系统中添加一个用于负载均衡的virtual server(VS);第二条命令用来修改已经存在的VS的配置,service address用来指定涉及的虚拟服务即虚拟地址,server-address指定涉及的真实地址。
ipvsadm -h 或 man ipvsadm 查命令帮助.man手册中有EXAMPLE例子
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
命令:
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
选项:
--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)
[root@node1 yum.repos.d]#
其中:
Virtual-service-address是指虚拟服务器的IP地址,本文是192.168.20.200;
Real-service-address是指Real Server的IP地址,本文是192.168.60.132/144;
Scheduler:指定调度算法。
ipvsadm命令选项的详细含义
-A --add-service:在内核的虚拟服务器列表中添加一条新的虚拟IP记录,也就是为ipvs虚拟服务器添加一个虚拟服务。虚拟IP也就是虚拟服务器的IP地址。虚拟地址需要是ip地址,端口号,协议的形式。
-E --edit-service:编辑内核虚拟服务器列表中的一条虚拟服务器记录
-D --delete-service:删除内核虚拟服务器列表中的一条虚拟服务器记录
-C --clear:清除内核虚拟服务器列表中的所有记录
-R --restore:恢复虚拟服务器规则;从标准输入获取ipvsadm命令。一般结合下边的-S使用。
-S --save:保存虚拟服务器规则,从标准输出输出虚拟服务器的规则。可以将虚拟服务器的规则保存,在以后通过-R直接读入,以实现自动化配置。
-a --add-server:在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录(RIP)。也就是在一个虚拟服务器中增加一台新的真实服务器
-e --edit-server:编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server:删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list:显示内核中的虚拟服务器列表;列出虚拟服务表中的所有虚拟服务。可以指定地址。添加-c显示连接表。
-Z --zero:虚拟服务器列表计数器清零(即清空当前的连接数量)这些记录一般用于调度策略。
--set tcp tcpfin udp:设置连接超时值
--start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的VRRP 功能。置虚拟服务器的备服务器,用来实现主备服务器冗余。(注:该功能只支持ipv4)
--stop-daemon 停止同步守护进程;停止备服务器
-h --help 显示帮助信息
-p --persistent [timeout] 持久稳固的服务(持久性连接)。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为360 秒。
-t:说明虚拟服务器提供的是TCP服务,此选项后面跟的格式是[virtual-service-address:port]或[real-server-ip:port];service-address要是host[:port]的形式。端口是0表示任意端口。如果需要将端口设置为0,还需要加上-p选项(持久连接)。
-u:说明虚拟服务器提供的是UDP服务,此选项后面跟的格式是[virtual-service-address:port]或[real-server-ip:port]
-f fwmark:说明是经过iptables标记过的服务类型;用firewall mark取代虚拟地址来指定要被负载均衡的数据包,可以通过这个命令实现把不同地址、端口的虚拟地址整合成一个虚拟服务,可以让虚拟服务器同时截获处理去往多个不同地址的数据包。fwmark可以通过iptables命令指定。如果用在ipv6需要加上-6。
-s scheduler:此选项后面跟LVS使用的调度算法,有调度算法可以指定以下8种:rr(轮询),wrr(权重),lc(最后连接),wlc(权重),lblc(本地最后连接),lblcr(带复制的本地最后连接),dh(目的地址哈希),sh(源地址哈希),sed(最小期望延迟),nq(永不排队),默认的是wlc调度算法。
-p [timeout]:在某个Real Server上持续的服务时间。也就是说来自同一个用户的多次请求,将被同一个Real Server处理。此参数一般用于有动态请求的操作中,通常用于ftp或者ssl中。timeout的默认值为300s。如-p 600表示持续服务时间为600s。
-M --netmask netmask 指定客户地址的子网掩码。用于将同属一个子网的客户的请求转发到相同服务器。
-r:指定真实服务器r的IP地址,此选项后面跟如下格式[real-server-ip:port];为虚拟服务指定数据可以转发到的真实服务器的地址。可以添加端口号。如果没有指定端口号,则等效于使用虚拟地址的端口号。
-g --gatewaying:指定LVS的工作模式为直接路由模式;使用网关(即直接路由)(此模式是LVS的默认工作模式)
-i --ipip:指定LVS的工作模式为ipip隧道模式
-m --masquerading:指定LVS的工作模式为NAT模式
-w --weight wegight:指定真实服务器的权重值;权重是0~65535的整数。如果将某个真实服务器的权重设置为0,那么它不会收到新的连接,但是已有连接还会继续维持(这点和直接把某个真实服务器删除时不同的)。
--mcast-interface interface 指定组播的同步接口
-x --u-threshold uthreshold:设置一个服务器可以维持的连接上限。0~65535。设置为0表示没有上限。
-y --l-threshold lthreshold:设置一个服务器的连接下限。当服务器的连接数低于此值的时候服务器才可以重新接收连接。如果此值未设置,则当服务器的连接数连续三次低于uthreshold时服务器才可以接收到新的连接。(PS:笔者以为此设定可能是为了防止服务器在能否接收连接这两个状态上频繁变换)
--mcast-interface interface:指定使用备服务器时候的广播接口。
--syncid syncid:指定syncid,同样用于主备服务器的同步。
-L -c --connection:显示目前的连接信息,如ipvsadm -L -c
-L --timeout:显示tcp tcpin udp的timeout值,列出超时;如ipvsadm -L --timeout
-L --daemon:显示同步守护进程状态
-L --stats:显示统计状态信息
-L --rate:显示传输速率信息
-L --sort:对虚拟服务器和真实服务器排序输出,例ipvsadm -L --sort
--nosort:不排序
-n --numeric 输出IP地址和端口的数字形式
--thresholds:列出阈值
--persistent-conn:坚持连接
--exact:单位
-6:如果fwmark用的是ipv6地址需要指定此选项。
ipvsadm -A -t 192.168.60.200:80 -s rr -p 600
在内核的虚拟服务器列表中添加一条192.168.60.200的虚拟服务器记录,并且指定此虚拟 服务器的服务端口为80,调度策略算法为轮询调试,并胜在每个Real Server上持续服务时间为600s,即10min。
ipvsadm -A -t 192.168.60.188:21 -s wlc
在内核虚拟服务器上添加一条192.168.60.188的虚拟服务器,此虚拟服务器的服务器端口为21,即FTP服务,使用wlc加权最少链接算法。
ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.132:80 -g
ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.144:80 -g
以上两条设置表示在虚拟服务器192.168.60.200中添加2条新的Real Server记录,两个Real Server的IP分别为192.168.60.132和192.168.60.144,选项-g指定了中的工作模式为DR直接路由模式 。
这样设置完毕后,当用户访问192.168.60.200的80端口时,LVS会根据设置的调度策略和路由模式将请求分配到192.168.60.132以及192.168.60.144的80端口。
ipvsadm -S /opt/ipvs.bak 备份ipvs记录??
ipvsadm -C 清空ipvs记录
ipvsadm -Ln 查看ipvs记录
ipvsadm -Ln --stats
-L|-l --list 显示内核虚拟服务器表
-n --numeric 输出IP 地址和端口的数字形式
--stats 显示统计信息
ipvsadm -Sn > /etc/sysconfig/ipvsadm //保存记录
ipvsadm -R < /etc/sysconfig/ipvsadm //恢复保存的记录
注意:ipvsadm 命令配置的LVS集群列表信息是临时有效的,如果想系统重启自动加载这些设置信息,必须将ipvsadm的操作命令写入到开机启动脚本/etc/rc.d/rc.local文件中。