02-lvs

02-lvs

参考文献:http://www.linuxvirtualserver.org/zh/lvs1.html

l4

四层交换,四层路由
    根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法)

lvs在INPUT链上强行把报文送给POSTROUTING链,因此在director中的INPUT的链上不可以使用iptables的filter规则

lvs cluster term

vs:virtual server
    director,dispatcher,balancer

rs:real server

cip:client ip

director virtual ip:vip

director ip:dip

real server ip:rip

lvs:

ipvsadm/ipvs

ipvsadm:用户空间的命令行工具,用于管理几区服务及集群服务器上的RS等
ipvs:工作于内核上的netfilter INPUT钩子之上的程序
    其集群功能依赖于ipvsadm定义的集群服务器规则


支持tcp、udp、ah、est、ah_est、sctp等协议的众多服务

ipvs:内核
ipvsadm:用户空间

lvs type

lvs-nat

通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

多目标的DNAT:通过将请求报文的目标地址和目标端口修改为挑选出某RS的RIP和PORT来实现
    1、RS应该和DIP使用私网地址,各RS的网关应该指向DIP
    2、请求和响应报文都要经由director转发;极高负载的场景中,director可能会成为系统瓶颈
    3、支持端口映射
    4、VS必须为Linux系统,RS可以是任意OS,只要提供相应的服务就行
    5、RS的RIP与Director的DIP必须在同一网络

lvs-dr(direct routing)

VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地 提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连 在同一物理网段上。

通过修改请求报文的MAC地址进行转发:IP首部不会发生变化(源IP为CIP,目标IP为VIP)

    1、确保前端路由器 将目标IP为VIP的请求报文一定会发送给Director
    解决方案:
        静态绑定:但是lvs就不能做HA,因为前端路由器静态绑定了lvs得MAC地址
        禁止RS响应VIP的ARP请求
            a、arptables
            b、修改各RS的内核参数,并把VIP配置在特定的接口上实现禁止其相应
    2、RS的RIP可以使用私网地址,也可以使用公网地址
        因为只要RS的报文可以路由到公网上                                                                                                                                               
    3、RS跟Director必须在同一物理网络中(以太网就都是以太网)          
    4、请求报文必须由Director调度,但响应报文必须不能经由Director
    5、不支持端口映射
    6、各RS可以使用大多数的OS

lvs-tun(ip tunneling)

采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报 文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。

不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是在原有的IP首部之外再次封装一个IP首部(源IP为DIP,目标IP为RIP)

    这种方式要求报文的封装长度不要超过MTU
        1、RIP,DIP、VIP全得是公网地址
        2、RS的网关不能也不可能指向DIP
        3、请求报文经由Director调度,而响应报文将直接发送给CIP
        4、不支持端口映射
        5、RS的OS必须支持隧道功能

lvs-fullnat(同时改变请求的源IP和目标IP)

通过同时修改请求报文的源IP地址(cip-->dip)和目标IP地址(vip-->rip)实现转发
    1、VIP是公网地址:RIP和DIP是私网地址,且可以不在同一IP网络中,但需要通过路由互相通信
    2、RS收到的请求报文的源IP为DIP,因此其响应报文将发送给DIP
    3、请求报文和响应报文都必须经由Director
    4、支持端口映射
    5、RS可使用任意类型的OS

lvs scheduler

静态方法:仅根据算法本身进行轮调

RR:round robin轮询

调度器通过”轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

WRR:weighted rr圈圈加权轮询

调度器通过”加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

SH:source ip hashing源地址哈希

“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

负载均衡器位于server端。

DH:destination ip hashing目标地址哈希

“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

负载均衡器位于client端。DH用户记录client的各个请求经过哪个路由发出
    正向web代理,负载均衡内网用户对互联网的请求
        client-director-web cache server

动态方法:根据算法及其各RS当前的负载状态进行评估

LC:least connection最少链接
overhead=active*256+inactive

调度器通过”最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用”最小连接”调度算法可以较好地均衡负载。

WLC:weighted LC
overhead=(active*256+inactive)/weight

在集群系统中的服务器性能差异较大的情况下,调度器采用”加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

SED:Shortest Expectation Delay

overhead=(active+1)*256/weight

NQ:Never Queue

LBLC:locality-based LC

动态的DH算法

“基于局部性的最少链接” 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用”最少链接”的原则选出一个可用的服务 器,将请求发送到该服务器。

LBLCR:LBLC with replication

“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个 目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务 器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按”最小连接”原则从这个集群中选出一 台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的 程度。

ipvs的集群服务

四层交换(四层路由)

tcp、udp、sctp、ad、esp、ah_esp

1、一个ipvs主机可以同时定义多个cluster service

端口绑定http、https
多种服务http、mysql

2、一个ipvs服务至少应该一个RS


查看内核是否支持

内核配置中如果有ipvs则支持lvs

[root@husa ~]# grep -i -C 3 "ipvs" /boot/config-3.10.0-229.el7.x86_64 
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_HL=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_IPVS=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
--
CONFIG_IP_VS_TAB_BITS=12

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
--
CONFIG_IP_VS_PROTO_SCTP=y

#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
--
CONFIG_IP_VS_NQ=m

#
# IPVS SH scheduler
#
CONFIG_IP_VS_SH_TAB_BITS=8

#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
CONFIG_IP_VS_NFCT=y

安装ipvsadm

[root@husa ~]# yum install ipvsadm
---> 软件包 ipvsadm.x86_64.0.1.27-7.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
========================================================================================
 Package            架构              版本                   源                    大小
========================================================================================
正在安装:
 ipvsadm            x86_64            1.27-7.el7             classRoom             45 k
事务概要
========================================================================================
  正在安装    : ipvsadm-1.27-7.el7.x86_64                                           1/1 
  验证中      : ipvsadm-1.27-7.el7.x86_64                                           1/1 
已安装:
  ipvsadm.x86_64 0:1.27-7.el7                                                           
完毕!

ipvsadm使用方法

管理集群服务

ipvsadm -A|E -t|u|f service-address [-s scheduler]
       [-p [timeout]] [-M netmask] [-b sched-flags]

ipvsadm -D -t|u|f service-address

    -A:添加
    -E:修改
    -D:删除
    service-address
        -t:tcp,ip:port
        -u:udp,ip:port
        -f:fwm,MARK
    -s scheduler:
        调度方法默认为wlc(weighted least connection)

管理集群服务上的RS

ipvsadm -a|e -t|u|f service-address -r server-address
       [-g|i|m] [-w weight] [-x upper] [-y lower]

ipvsadm -d -t|u|f service-address -r server-address

    -a:添加一个RS
    -e:修改一个RS
    -d:删除一个RS
    service-address
        -t:tcp,vip:port
        -u:udp,vip:port
        -f:fwm,MARK
    server-address
        rip[:port]
    -g:GATWAY表示DR模型,默认类型
    -i:IPIP模型,tunnel模型
    -m:MASQUERADE模型,NAT模型

查看

   ipvsadm -L|l [options]

        -n:numeric,数字格式显示地址和端口
        -c:connection,显示ipvs连接
        --stats:统计数据
        --rate:速率
        --exact:精确值
[root@husa ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@husa ~]# ipvsadm -L -n --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS
  -> RemoteAddress:Port
[root@husa ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
[root@husa ~]# ipvsadm -L -n --exact
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

保存

使用重定向
ipvsadm -S [-n] > /path/to/somefile
ipvsadm-save > /path/to/somefile

重载

使用重定向
ipvsadm -R < /path/to/somefile
iptables-restore > /path/to/somefile

计数器清零

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

清空

ipvsadm -C

director上面不要使用iptables的filter功能,要禁用这个功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值