标签:期望 ipvsadm 版本 打开 隧道 配置实例 报文 连接数 组合
Cluster:计算机集合,为解决某个特定问题组合起来形成的单个系统
LB:Load Balancing,负载均衡
HA: High Availiablity,高可用
HP:High Performance,高性能
lvs集群的类型:
lvs-nat(network address translation)
多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和port实现转发
lvs-dr(direcrot routing直接路由)
Director Routing:直接路由: //后端主机,改IP后不做通告,也不arp请求响应
通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
lvs-tun
转发方式 :不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)
[CIP/VIP] ---> director ---> [DIP/RIP[CIP/VIP]] ---> RIP ---> [VIP|CIP]
lvs-tun
通过同时修改请求报文的源IP地址和目标IP地址进行转发
此类开型默认不支持,需要手动编译安装
LVS的调试算法 Scheduler
静态方法:仅根据算法本身进行调度,不考虑RS负载状态
缺陷:
每台服务器工作性能可能有差异,应该能者多劳,轮询没法达到此效。
session无法保持,用户第一次请求时发往A服务器,第二次请求发往B服务器,这两个不同的会话,客户端第一次请求操作是在购物车添加商品,第二次请求轮询至另一台,则第一次添加的商品会丢失,这是客户不可忍受的(此时需要依赖于session保持机制)
通过给RS设定权重,一般性能高的RS权重设置大,按照权重的算法依次轮询转发
客户端的首次请求按照其他算法选择RS,后续请求只要是源地址相同都发往同一台RS,这样一定程度上解决了session保持问题。但是又引出情人眼里出西施下问题:
缺陷:
现今多数用户都通过snat方式访问互联网,如一个上百台主机的局域网环境,都指向同一个网关,所以对DR而言,源地址都是同一个,实际上是来自不同的客户端的请求,这些请求都将被 发往同一台RS处理,严重损害了负载均衡的效果
此算法一般在有多个防火墙时的场景下应用,在防火墙基于状态追踪的机制下,保证响应报文能够通过同一防火墙发送出去
动态算法: 根据算法及各RS当前负载状态进行调度
当计算结果相同时,自上而下选择,一般首次所有RS都先轮询一遍,每个都处理一个请求,以免权重小的术轻松了。第二轮开始权重才开始发挥效果,但是第一次响应的有可能是性能最差的服务器
改进版的WLC,这种算法保证了是有权重最高的RS首先响应服务,而非初始计算值都是相同的造成轮询,但是会造成权重大的RS过多的负载,而权重小的RS过于空闲
相当于DH+LC,基于局部性的最少连接算法是针对请求报文的目标IP地址的负载均衡调度,主要用于Cache集群系统,因为Cache集群中客户请求报文的布标IP地址是变化的,这里假设任何后端服务器都可以处理任何请求,算法的设计目标在服务器的负载基本平衡的情况下,将相同的目标IP地址的请求调度到同一个台服务器,来提高个太服务器的访问局部性和主存Cache命中率,从而调整整个集群系统的处理能力。 基于局部性的最少连接调度算法根据请求的目标IP地址找出该目标IP地址最近使用的RealServer,若该Real Server是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。
带复制的基于局部性最少链接调度算法也是针对目标IP地址的负载均衡,该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度
如今centos6/7的版本上已经自动的编译了ipvs,但是可以确定一下://如果没有显示的话,就要自己重新编译内核
[root@localhost ~]# grep -i -C 10 ‘ipvs‘ /boot/config-3.10.0-327.el7.x86_64
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
# IPVS scheduler //lvs支持的10种算法
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
CONFIG_IP_VS_NQ=m
管理集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]A:添加 E:修改 t:tcp u:udp f:firewall server-address:VIP -s:调试算法 -p:持久连接功能
ipvsadm -D -t|u|f service-address //删除 ipvsadm -C //清空 ipvsadm -R < /etc/sysconfig/ipvsadm //载入规则 ipvsadm -S [-n] //保存规则管理集群服务中的RS
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]
Director | CR1 | CR2 |
VIP:172.168.254.35 | CIP:192.168.153.143 | CIP:192.168.153.144 |
DIP:192.168.153.139 |
Director
~]# yum install ipvsadm ~]# ipvsadm -A -t 172.16.254.35:80 -s rr ~]# ipvsadm -a -t 172.16.254.35:80 -r 192.168.153.143 -g ~]# ipvsadm -a -t 172.16.254.35:80 -r 192.168.153.143 -g ~]# sysctl -w net.ipv4.ip_forward=1 ~]# sysctl -pCR1
~]# yum install httpd ~]# echo 143 > /var/www/html/index.html ~]# systemctl start httpd ~]# ip route add default via 192.168.153.139CR2
~]# yum install httpd ~]# echo 144 > /var/www/html/index.html ~]# systemctl start httpd ~]# ip route add default via 192.168.153.139打开一个客户端,访问一下,试试,可不可以轮询
[root@localhost ~]# for((i=1;i<=10;i++));do curl 172.16.254.35 ;done 143 144 143 144 143 144 143 144 143 144
Director | CR1 | CR2 |
VIP:172.168.254.36 | CIP:172.16.252.113 | CIP:172.16.250.84 |
DIP:172.16.254.35 |
arp_ignore:定义响应级别,响应时忽略方式,1表示只从本接口进入的请求响应,且本接口地址是个网络地址
arp_annouce:定义通告级别,2表示仅使用定义的网卡接口在同网络内通信
Director:
~]# ip addr add 172.16.254.36 dev eth0:0 ~]# yum install ipvsadm ~]# ipvsadm -A -t 172.16.254.36:80 -s rr ~]# ipvsadm -a -t 172.16.254.36:80 -r 172.16.252.113 -g ~]# ipvsadm -a -t 172.16.254.36:80 -r 172.16.250.84 -g ~]# for((i=1;i<=10;i++));do curl 172.16.254.36;done 113 84 113 84 113 84 113 84 113 84
FWM防火墙标记功能
功能:防火墙标记可以实现多个集群服务绑定为同一个,实现统一调度;将共享一组RS的集群服务统一进行定义。
在PREROUTING链上打标,在INPUT链上把打标记的请求来做成集群
~]# iptables -t mangle -A PREROUTING -d 172.16.254.36 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 2 ~]# ipvsadm -A -f 2 -s rr -p 60 //在一定时间内,将同一个ip地址的请求发往同一个RS ~]# ipvsadm -a -f 2 -r 172.16.252.113 -g -w 1 ~]# ipvsadm -a -f 2 -r 172.16.250.84 -g -w 3 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm ~]# iptables-save > /etc/sysconfig/iptable
~]# ipvsadm -A -t 172.16.254.36:0 -s rr //默认所有的服务全都调度给后端服务器,所以不常用
标签:期望 ipvsadm 版本 打开 隧道 配置实例 报文 连接数 组合
原文地址:https://www.cnblogs.com/dance-walter/p/12177452.html