一、关于ipvsadm

    ipvsadm是运行于用户空间、用来与ipvs交互的命令行工具,它的作用表现在:

    1、定义在Director上进行dispatching的服务(service),以及拿此服务器(server)用来提供此服务;

    2、为每台同时提供某一种服务的服务器定义其权重(即根据服务器性能确定的其承担负载的能力)。


    注:权重用整数来表示,有时候也可以将其设置为atomic_t;其有效表示值范围为24bit整数空间,即(2^24-1);


    因此,ipvsadm命令的主要作用表现在以下方面:

    1、添加服务(通过设定其权重>0);

    2、关闭服务(通过设定其权重>0);

        此应用场景中,已经连接的用户将可以继续使用此服务,直到其退出或超时;新的连接请求将被拒绝;

    3、保存ipvs设置,通过使用"ipvsadm-save > ipvsadm.bak"命令实现;

    4、恢复ipvs设置,通过使用"ipvsadm-save < ipvsadm.bak"命令实现;

    5、显示ipvs的版本号,下面的命令显示ipvs的hash表的大小为4k;

        # ipvsadm

        IP Virtual Server version 1.2.1 (size=4096)

    6、显示ipvsadm的版本号

        # ipvsadm --version

        ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)


二、ipvsadm使用中应注意的问题

    默认情况下,ipvsadm在输出主机信息时使用其主机名而非IP地址,因此,Director需要使用名称解析服务。如果没有设置名称解析服务、服务不可用或设置错误,ipvsadm将会一直等到名称解析超时后才返回。当然,ipvsadm需要解析的名称仅限于RealServer,考虑到DNS提供名称解析服务效率不高的情况,建议将所有RealServer的名称解析通过/etc/hosts文件来实现。


三、ipvsadm常用命令

    管理集群服务:

        添加:-A -t|u|f service-address [-s scheduler]

            -t:TCP协议的集群

                service-address:    IP:PORT

            -u:UDP协议的集群

                service-address:    IP:PORT

            -f :FireWallMark(FWM),防火墙标记

                service-address:    Mark Number

            example:

                # ipvsadm -A -t 10.10.10.1:80 -s rr

        修改:-E

                使用格式跟-A选项相同

        删除:-D -t|u|f service-address


    管理集群服务中的Real Server:

        添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]

            -t|u|f service-address:事先定义好的某集群服务

            -r server-address:real server的地址,在NAT模型中,可以使用IP:PORT实现端口映射

            [-g|i|m]:LVS类型

                -g:DR

                -i:TUN

                -m:NAT

            [-w weight]:定义服务器权重

            example:

                # ipvsadm -a -t 10.10.10.1:80 -r 10.10.10.11 -m

                # ipvsadm -a -t 10.10.10.1:80 -r 10.10.10.12 -m

        修改:-e

            使用格式跟-a选项相同

        删除:-d -t|u|f service-address -r server-address


    查看:

        -L | -l :显示规则

        -n:以数字格式显示主机地址和端口

        -c:显示当前ipvs连接状况

        --stats:显示统计信息

        --rate:显示速率

        --timeout:显示tcp、tcpfin、udp会话超时时长

            # ipvsadm -L -n --timeout

            Timeout (tcp tcpfin udp): 900 120 300

        --daemon:显示进程状态以及多播端口

        --sort:排序显示


    设置tcp、tcpfin、udp会话超时时长:

        # ipvsadm --set tcp tcpfin udp


    删除所有集群服务:

        -C:清空ipvs规则

        # ipvsadm -C


    保存规则:-S

        # ipvsadm -S > /path/to/file


    恢复规则:-R

        # ipvsadm -R < /path/to/file


    清空服务计数器:-Z [-t|u|f service-address]

        # ipvsadm -Z [-t|u|f service-address]


    查看RealServer持久连接:

        # ipvsadm -L -n --persistent-conn