LVS-DR集群+Keepalived

LVS-DR数据包流向

数据包流经路线为1、2、3、4
在这里插入图片描述
接受和响应都是由VIP地址回应,而根据DR模式来看的话,负载均衡器和real server是在同一内部网,VIP地址都是192.168.57.126,所以real server需要做路由禁锢,关闭各种重定向以及路由功能

LVS-DR数据包流向分析

1、Client向目标VIP发出请求,负载混衡器接受,ip包头源mac地址是自己的,目标mac地址是负载均衡器的
2、负载均衡器根据算法选择realserver_1,不修改也不封装IP报文,而是将数据帧的MAC地址改为realserver_1的MAC地址,然后在局域网上发送。
3、realserver_1收到这个帧,解封装后发现目标IP与本机匹配(realserver事先绑定了vip),于是处理这个报文,随后重新封装报文,发送到局域网。
4、Client将收到回复报文,Client认为得到正常的服务,而不会知道是哪一台服务器处理的。注意:如果是跨网段,则报文需要通过路由器经由Internet返回给用户

详细版:
1、客户端发送请求到Director server(负载均衡器),请求的数据报文(源IP是cIP,目标IP是VIP)到达内核空间。
2、Director Server和Real server在同一个网络中,数据通过二层数据链路层来传输。
3、内核空间判断数据包的目标IP是本机VIP,此时IPVS(IP虚拟服务器)比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源MAc地址为Director Server的MAC地址,修改目标MAc地址为RealServer的Mac地址,源IP地址与目标IP地址没有改变,然后将数据包发送给Real Server。
4、到达Realserver的请求报文的MAc地址是自身的Mac地址,就接收此报文。数据包重新封装报文(源IP地址为VIP,目标IP为CIP),将响应报文通过lo接口传送给物理网卡然后向外发出。
5、Real Server 直接将响应报文传送到客户端。

LVS-DR特性

1、 Director Server和Real Server必须在同一个物理网络中。
2、RealServer可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行
直接访问。
3、Director Server作为群集的访问入口,但不作为网关使用。
所有的请求报文经由Director Server,但回复响应报文不能经过Director Server
4、Real Server的网关不允许指向DirectorServer IP,即RealServer发送的数据包不允许经过Director Server。
5、Real Server. 上的lo:0接口配置VIP的IP地址。

LVS-DR中ARP问题

第一个问题: 在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址。LVS-DR特性是负载均衡器的接受和分发请求,真实服务器接受LVS请求和响应客户端同时,响应给客户端的源IP是一致的(VIP),那么问题来了,在同一个局域网里面配置同一个IP地址不是会冲突吗在这里插入图片描述
在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱。
当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播
只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。

解决方法
对节点服务器进行处理,使其不响应针对vip的arp请求
1、使用虚接口lo:0 承载vip地址,并且设置路由禁锢
2、设置内核参数arp_ignore=1,系统只相应目的ip为本地ip的arp请求

第二个问题,当realserver 01返回报文的时候lo:0 ip是192.168.100.100,而routearp表里记录的192.168.100.100对应的是LVS的mac地址,它就会更新掉,造成下一次传过来直接给realserver1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解决方法:
对节点服务器进行处理,设置内核参数arp_announce=2: 系统不使用ip包的源地址来设置arp请求的源地址,而选择发送接口的IP地址(即ens33地地址)

总结:
在这里插入图片描述

Keepalived

1、Keepalived
支持故障自动切换(Failover)
支持节点健康状态检查( Health Checking)
判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup’节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master 节点(前提是根据优先级)。
2、Keepalived实现原理剖析
keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能VRRP (虚拟路由冗余协议)是针对路由器的一种备份解决方案。
由多台路由器组成个热备份组,通过共用的虚拟IP地址对外提供服务
每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

snmp通过网络管理服务器、交换机、路由器等设备的一种协议
在keepalivedSNMP管理的是健康检查(状态)
PS:在监控中也会通过snmp监控、获取被监控服务器的数据

发生场景:企业应用中,单台服务器承担应用存在单点故障的危险,单点故障一旦发生,企业服务将发生中断,造成极大的危险
单点故障(没有备份,挂掉就没了)
备份冗余(keepalived热备方案)
keepalived 主-备方案
以优先级区分主备关系
以id表示热备组中的服务器定位
以vip作为接收、响应请求的地址(只会存在于master服务器上)

Keepalived实现原理

keepalived采用vrrp热备份协议实现linux服务器的多机热备功能,共享同一个VIP,供于VIP飘移选择主设备

VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案

在这里插入图片描述

●由多台路由器组成-一个热备组,通过共用的虚拟IP地址对外提供服务
●每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态.
●若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
在这里插入图片描述
在这里插入图片描述

LVS-DR+keepalived部署

主机IP
real-server1192.168.59.129
real-server2192.168.59.128
lvs1192.168.59.130
lvs2192.168.59.131
client(win)192.168.59.22

LVS-DR部署(192.168.59.130、192.168.59.131 主备都要配)

systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

vim /etc/sysctl.conf

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

首先肯定要关闭防火墙和selinux
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
创建虚拟VIP地址:192.168.59.100

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.59.100
NETMASK=255.255.255.255

service network restart 或 systemctl restart network
ifup ens33:0
ifconfig ens33:0


在这里插入图片描述

在这里插入图片描述
重新启动网卡,在开启网卡
在这里插入图片描述
在这里插入图片描述
LVS2有的时候不管是ifup 还是restart 都开不了ens33:0,需要开启NetworkManager重启网卡 再关闭。

添加负载均衡策略

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C
ipvsadm -A -t 192.168.59.100:80 -s rr
ipvsadm -a -t 192.168.59.100:80 -r 192.168.59.129:80 -g
ipvsadm -a -t 192.168.59.100:80 -r 192.168.59.128:80 -g
ipvsadm

ipvsadm -ln

在这里插入图片描述

配置节点服务器

关掉防火墙和selinux 安装httpd服务

systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

然后编写主页文件便于区分

192.168.59.129
echo 'this is dyf web' > /var/www/html/index.html

192.168.59.128
echo 'this is aabb web' > /var/www/html/index.html

在这里插入图片描述

在这里插入图片描述
编写回环地址

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.59.100
NETMASK=255.255.255.255


ifup lo:0
ifconfig lo:0
route add -host 192.168.59.100 dev lo:0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编辑内核配置

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p
systemctl start httpd  

在这里插入图片描述
在这里插入图片描述
可以查看结果
在这里插入图片描述
在这里插入图片描述
是轮询的

设置keepalived

LVS1

之前安装好keepalived 就不yum了

先备份一下配置文件 以防出错
cd /etc/keepalived
cp keepalived.conf keepalived.conf.bak

配置文件
vim keepalived.conf

global_defs {                      #定义全局参数
      router_id lvs_01             #热备组内的设备名称不能一致
}
vrrp_instance vi_1 {                   #定义VRRP热备实例参数
      state MASTER                   #指定热备状态,主为master,备为backup
      interface ens33                   #指定承载vip地址的物理接口
      virtual_router_id 51              #指定虚拟路由器的ID号,每个热备组保持一致
      priority 110                           #指定优先级,数值越大越优先
      advert_int 1
      authentication {
           auth_type PASS
           auth_pass 6666
 }
virtual_ipaddress {                         #指定集群VIP地址
      192.168.59.100
}
}

virtual_server 192.168.59.100 80 {                #指定虚拟服务器地址vip,端口,定义虚拟服务器和web服务器池参数
      lb_algo rr                                                  #指定调度算法,轮询(rr)
      lb_kind DR                                                #指定集群工作模式,直接路由DR
      persistence_timeout 6                             #健康检查的间隔时间
      protocol TCP                                           #应用服务采用的是TCP协议

real_server 192.168.59.129 80 {                     #指定第一个web节点的地址,端口
      weight 1                                                       #节点权重
      TCP_CHECK {
          connect_port 80                                      #添加检查的目标端口
          connect_timeout 3                                  #添加连接超时
          nb_get_retry 3                                         #添加重试次数
          delay_before_retry 3                            #添加重试间隔
   }
}
real_server 192.168.59.128 80 {                       #指定第二个web节点的地址,端口
      weight 1
      TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
   }
}
}
               

LVS2

global_defs {
      router_id lvs_02
}
vrrp_instance vi_1 {
      state BACKUP
      interface ens33
      virtual_router_id 51
      priority 100
      advert_int 1
      authentication {
           auth_type PASS
           auth_pass 6666
 }
virtual_ipaddress {
      192.168.59.100
}
}

virtual_server 192.168.59.100 80 {
      lb_algo rr
      lb_kind DR
      persistence_timeout 6
      protocol TCP

real_server 192.168.59.129 80 {
      weight 1
      TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
   }
}
real_server 192.168.59.128 80 {
      weight 1
      TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
   }
}
}

     

两端开启keepalived

systemctl start keepalived.service

在这里插入图片描述
在这里插入图片描述
可以看到LVS1的VIP存在 ,LVS2的VIP消失了

下面开始实验 关闭LVS1的keepalived

在这里插入图片描述
在这里插入图片描述
可以看到LVS1上的VIP飘移到了LVS2上

小结

Keepalived服务进行健康检查,比较灵活的地方在于我们可以和其他各个服务搭建HA集群的时候,使用shell脚本来自定义健康检测脚本,从而实现对VIP飘移的控制

服务功能工作层
Apache负载均衡
Nginx负载均衡4、7
LVS负载均衡4
Haproxy负载均衡4、7

LVS:一种四层的负载均衡策略(适合于中大型环境)
LVS集成在内核之中,也是比较消耗资源的
LVS三种模式
1、NAT
2、TUN
3、DR
四种分流算法
1、轮询
2、加权轮询
3、最小连接
4、加权最少连接
LVS可以和Keepalived结合实现备份、冗余、健康检查、故障切换
keepalived:
1、vrrp热备协议 主要针对的对象是router 路由器,同一个路由器下为同一个热备组,同一个热备组中的成员ID不可相同
2、以VIP作为提供服务的IP地址,VIP只会飘移在优先级最高的设备中,多种类型的设备以优先级区分主-备-(备)关系,主宕机,则主优先级下降,备服务器将提升为主(VIP飘移到备)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值