IPVS的介绍:

        IPVS基本上是一种高效的Layer-4交换机,它提供负载平衡的功能。当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它。此后通过查发报文的IP和TCP报文头地址,保证此连接的后继报文被转发到相同的服务器。这样,IPVS无法检查到请求的内容再选择服务器,这就要求后端的服务器组是提供相同的服务,不管请求被送到哪一台服务器,返回结果都应该是一样的。但是在有一些应用中后端的服务器可能功能不一,有的是提供HTML文档的Web服务器,有的是提供图片的Web服务器,有的是提供CGI的Web服务器。这时,就需要基于内容请求分发 (Content-Based Request Distribution),同时基于内容请求分发可以提高后端服务器上访问的局部性。

IPVS的工作原理:

        当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它。此后通过查发报文的IP和TCP报文头地址,保证此连接的后继报文被转发到相同的服务器。这样,IPVS无法检查到请求的内容再选择服务器,这就要求后端的服务器组是提供相同的服务,不管请求被送到哪一台服务器,返回结果都应该是一样的。但是在有一些应用中后端>的服务器可能功能不一,有的是提供HTML文档的Web服务器,有的是提供图片的Web服务器,有的是提供CGI的Web服务器。这时,就需要基于内容请求分发 (Content-Based Request Distribution),同时基于内容请求分发可以提高后端服务器上访问的局部性。

         上面已经说了IPVS是LVS的关键,因为LVS的IP负载平衡技术就是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时>在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然>后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。

PS:LVS的本身分成了两个部分,第一部分是工作在内核空间的一个IPVS的模块(工作在Netfilter框架的input链上),其实LVS的功能都是IPVS模块实现的,第二部分是工作在用户空间的一个用来定义集群服务的一个工具ipvsadm, 这个工具的主要作用是将管理员定义的集群服务列表传送给工作在内核空间中的IPVS模块。


ipvsadm命令参考:

ipvsadm -A|E -t|u|f service-address:port [-s scheduler] [-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight]
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]
ipvsadm --stop-daemon
ipvsadm -h

集群服务相关选项:
ipvsadm -A -t|u|f service-address:port [-s scheduler] [-p [timeout]] [-M netmask]    ###添加一个集群服务
           -t :tcp
           -u:udp
           -f :firewall make  #防火墙标记(通常应用于将两个或以上的服务绑定为一个服务进行处理时使用)
           service-address     #集群服务的ip地址,Vip
                   -s  :                        #调度算法,默认为wlc
                   -p                          #持久连接
                   
ipvsadm -E -t|u|f service-address:port  [-s scheduler] [-p [timeout]] [-M netmask]    ###修改定义过的集群

ipvsadm -D -t|u|f service-address            ###删除指定的集群服务

RS相关选项:
ipvsadm -a  -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight]  ###添加RS
           -t :tcp
           -u:udp
           -f :firewall make  #防火墙标记(通常应用于将两个或以上的服务绑定为一个服务进行处理时使用)
           service-address     #集群服务的ip地址Vip,向那个集群里添加RS
           -r  :                        #RS的Rip,在支持端口映射的模型里可以使用额外端口
           -g                          #使用LVS-DR模型
           -i                           #使用LVS-TUN模型
           -m                        #使用LVS-NAT模型
           -w:                        #指定RS的权重
           
ipvsadm -a  -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight]  ###修改定义过的RS

ipvsadm -d -t|u|f service-address -r server-address   ###在指定的集群服务中删除一个指定的RS

其他相关选项:
ipvsadm -C         ###清空所有的集群服务

ipvsadm -R   |   ipvsadmin-restore        ###载入默认文件里的规则或使用输入重定向载入任意规则文件

ipvsadm -S   |    ipvsadm-save  |  service ipvsadm save  #保持规则到默认文件或使用输出重定向至任意文件中

ipvsadm -Z [-t|u|f service-address]       ###虚拟服务表计数器清零(清空当前的连接数量等)

ipvsadm --set tcp tcpfin udp                ###设置连接超时值

ipvsadm --start-daemon state [--mcast-interface interface]    ###启动同步守护进程,它后面可以是master 或backup,用来说明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的VRRP 功能

ipvsadm --stop-daemon      ###停止同步守护进程

ipvsadm -h                          ###显示帮助信息

查看ipvs规则的相关选项:
ipvsadm -L|l [options]
                     [options]:
                 -n            ###使用数字格式显示IP地址,不反解
                 -c            ###查看连接数相关信息
                 --stats     ###显示统计数据
                 --rate      ###数据传输速率
                 --timeout   ###显示tcp,udp会话超时时长
                 --daemon   ###显示同步守护进程的信息
                 --sort      ###对虚拟服务进行排序,默认为升序
                 --exact    ###精确显示,不做单位换算