1、LVS三种模式:

LVS四层负载均衡

引入虚拟服务(virtual ip,VIP)的原因,早期服务器少,使用DNS作负载均衡,DNS容易被直接破坏

DNS负载均衡:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维

引入虚拟服务(vip)

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_02

LVS是4层负载均衡,LVS三种模式,DR、NAT、隧道TUN

DR模式工作在数据链路层,

1.1DR模式:client客户端 -> VS -> RS -> client

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_03

整个架构在同一个VLAN是因为要走二层数据链路层,不经过路由。arp协议工作。

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_04

client:客户端(宿主机38)   VS:调度器(server1,有vip)   rs:real server(server2、3 均有vip)

客户端请求vs调度器,vs上面有vip,vs调度到后端的rs;

数据包ip:cip(源地址)>vip(目标地址),mac地址:dmac>rmac,dmac是目标,是vs的mac。

整个过程中目标地址不变都是vip。DR,最主要在二层数据链路层,数据包到达vs上,没改数据包源地址和目标地址,把数据包的mac地址改为real server的mac地址是lvs三种模式最佳的,检测到mac改变为real server的mac,通过vs上FORWARD转发数据包到rs上,在向上第三层网络层解,然后rs上需要vip解(rs如果没有vip,数据包转到rs上时没有vip,数据包被丢弃,客户端访问失败)

1、经过vs的时候更改mac,通过mac转发,到数据链路层,到rs(real server),再往上解

2、real server上作arp屏蔽,调度器和rs都在同一个VLAN交换机上,客户端访问vip时候,有可能rs直接访问vip,导致无法负载均衡。

两条策略:直接访问server2、3的vip是被禁止的:此策略加到server2、3的INPUT链(进入server2、3时);OUTPUT链上加策率,不能对外广播。源地址是254.100时进行源地址转换,转换ip为172.25.254.2(正常调度到server2,server2使用vip254.100完成三次握手后,转换为254.2)

DR详细图:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_05

1.2NAT模式:client客户端 -> VS -> RS -> VS -> client原路经返回

进来时在input链作DNAT(目标地址重定向)

出去时作SNAT(源地址重定向),原路经返回

所有RS网关要指向vs调度器,到rs后又要回包到调度器

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_06

1.3TUN隧道模式:client客户端 -> VS -> RS -> client,

虚拟隧道,通过隧道协议对原数据包进行封装,但数据包会增加一个ip头(所以数据包的数据帧要预留一个位填充ip头),real server要求有ipip模块(能满足隧道协议) ,real server上解封装拿到ip头(源地址、目标地址信息),rs也要vip,通过源地址、目标地址返回客户端。

工作方式:把原始cip、vip通过ipip模块(隧道协议)封包,到达rs之后解包,解包之后拿到地址依旧是cip和vip,所以rs上也要增加vip

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_07

TCP7层及协议工作

图文并茂:16张图详解网络协议 - 知乎

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_08

https://zhuanlan.zhihu.com/p/517011243

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_09

2、使用LVS DR模式的问题:

问题1:某台real server down了,怎么办?

上一篇LVS存在弊端:

调度器对后端的real server没有健康检查,不知道后端real server是否出现故障,从而无法更新调度列表,把故障的主机从调度列表中去掉,直接影响客户端宿主机38的访问。

server2上停止httpd服务:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_10

 在客户端宿主机38访问172.25.254.100,调度server3成功,server2全失败,导致 一半访问失败

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_11

但是查看调度器,调度策略增加表示正常调度 ,意味着调度器对后端的real server没有健康检查,不知道后端real server是否出现故障

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_12

server2上打开httpd:

 

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_13

 在客户端宿主机38访问172.25.254.100,正常论调;查看调度器,调度策略增加表示正常调度

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_14

上述说明调度器对后端的real server没有健康检查,不知道后端real server是否出现故障

某台real server down了,调度到此real server上的全部失败,但是调度器调度策略显示正常。待解决没有健康检查问题

问题2:LVS本身down了,怎么办?

指令依次为显示lvs策略(有策略);清除策略;显示策略(没策略)

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_15

 宿主机38(客户端)上curl 172.25.254.100时,由于lvs本身down了,所以调度全部失败

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_16

解决上述问题1、2:某台real server down了    ---健康检测

                               lvs本身down了    ---LVS冗余

3、LVS+Keepalived负载均衡+高可用

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_17

   -健康检测:支持4/7监测;

   -主备冗余:采用VRRP协议的HeartBeat;

   -如何配置:更改keepalived主配置文件:/etc/keepalived/keepalived.conf

实验前:快照虚拟机vm4:

使用母镜像base7.6-new.qcow2快照新的虚拟机硬盘文件vm4

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_18

使用虚拟机硬盘文件新建虚拟机

内存 2048 cpus=2 ;虚拟机名称vm4 ;网络选择网桥br0

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_19

 进入虚拟机vm4,更改hostname和ip,重启网络

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_linux_20

 

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_21

 

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_linux_22

开始配置Keepalived+LVS:

 server1和server4作高可用集群,用来负责LVS冗余;server1用作主节点(MASTER),server2用作备份节点(BACKUP)。

1、server4上安装ipvsadm

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_23

 server1上安装keepalived:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_24

 server1和server4作免密(copy文件方便一点),并且server4上下载keepalived(使用server1  ssh远程  server4下载)

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_25

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_26

 server1上安装mail软件,用来发邮件和查看邮件

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_linux_27

2、 server1上修改keepalived主配置文件:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_28

配置文件只有下面三部分: 配置文件第1部分:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_29

心跳验证:server1(MASTER主节点)上每秒一直发送心跳给server4从节点,当server1挂掉后,发送停止,从节点server4知道主节点down掉了,从节点状态从BACKUP变为MASTER;当主节点server1好了,重启keepalived服务后(可设置开机自启),server1因为优先级高,又变为MASTER状态,server4从节点状态又变为BACKUP状态。

 配置文件第2部分:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_30

上面配置操作:删除vip,查看没有vip172.25.254.100;删除lvs策略,之前已经删除,ipvsadm -ln查看已无策略。

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_31

 配置文件第3部分:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_32

 把此配置文件发给server4:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_33

 server4上还要更改状态和优先级:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_34

3、开始测试:

 先启动server1上keepalived服务,查看日志

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_linux_35

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_36

ip addr发现server1上成功自动添加vip

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_37

ipvsadm -ln发现server1上策略成功自动添加

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_38

备机server4上启动服务,看日志,当前是BACKUP状态,ip addr查看没有VIP

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_39

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_40

 客户端38上,curl 172.25.254.100,成功调度;

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_41

测试1:real server down掉,down掉server2:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_42

server1上查看策略:

 坏掉的节点server2在调度策略中被移除,并收到邮件提示server2已经DOWN掉,对后端成功健康监测。

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_43

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_44

 策略更新后,客户端38上,curl 172.25.254.100,成功健康监测,调度器调度到server3

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_45

 调度策略正确

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_46

 恢复server2后

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_47

 调度策略中server2恢复,加入列表中

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_48

server1上mail查看邮件,server2恢复,加入列表中

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_lvs集群负载均衡3种模式那种常用_49

 客户端38上,curl 172.25.254.100,成功论调;

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_linux_50

测试2:lvs down掉了

server1上reboot重启,server4上直接接管VIP

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_51

 server4查看日志:成为MASTER状态,并且向网内发布arp,广播vip在server4上,使客户端更新arp缓存信息。

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_52

 server4上有调度策略

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_linux_53

 客户端38上,curl 172.25.254.100,成功论调; server4上调度策略正常增加

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_linux_54

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_55

server1重启后,重新打开keepalived服务,又将VIP抢过来,因为server1优先级为100大于server4优先级50。

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_客户端_56

查看server1日志为MASTER,server4日志又变为BACKUP

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_调度策略_57

 server4上:

lvs集群负载均衡3种模式那种常用 lvs udp数据负载均衡_运维_58