高并发与负载均衡——keepalived

前言

前文我们提到了如何让LVS来检测RealServer是否健康,我们可以写shell脚本来定期发送http请求监控返回Resp的状态码是否是200,还有就是使用现有技术keepalived

一、keepalived

1.keepalived的简介

高并发与负载均衡——keepalived_第1张图片

VRRP协议主要用来做网络的高可用保障的,keepalived用到了这项协议技术来保证高可用

2.将LVS做主备

最好将LVS上的防火墙关掉,因为LVS和iptables都是控制内核中的网络协议栈的方法,两个技术控制一个内核的一个模块,会产生冲突。所以企业会在整个服务器外部部署一个硬件防火墙,来做安全保障。

高并发与负载均衡——keepalived_第2张图片

3.keepalived安装

高并发与负载均衡——keepalived_第3张图片

4.基于keepalived的主备LVS负载均衡服务器搭建实战

(1)实战要求:将LVS负载均衡配置成两台,一台主,一台备用,在使用keepalived之后,我们可以使用keepalived的配置文件来进行对linux内核中LVS功能调用以及子网卡配置和VIP配置(在LVS模型搭建实战中node01所做的工作),而RealServer的响应级别和忽略级别则需要继续自己手动配置(在LVS模型搭建实战中node02和node03所做的工作)。

(2)具体步骤

0. 准备工作:

  • 最好将node01(主LVS),node04(备LVS)的防火墙关掉,防止防火墙和LVS功能冲突:service iptables stop;node02和node03不用
  • 最好也在node01和node04的iptables中将tcp ip的80端口放开,不然即使关闭防火墙,也可能导致在node01宕机情况下node04接收不到node01漂移的vip(ifconfig检查不到),以及node01重新回到master后,node04不讲vip放开。从而导致再node01宕机后,客户端无法通过VIP负载均衡到RealServer。
  • 如果之前使用了ipvsadm来配置node01的LVS,则使用ipvsadm -C指令来清除负载均衡规则,使用ifconfig eth0:2 down来清除网卡子接口,将VIP从node01中移除。keepalived会配置负载均衡规则和在网卡eth0:2子接口下配置VIP,不需要使用ipvsadm指令来做了。
  • 如果RealServer node01和node02都重新启动过了,则需要重新配置忽略和响应级别,以及将VIP配置给环回接口子接口:
    •  

1.在node01和node04上分别安装keepalived和ipvsadm(用来看负载状况和数据包状态),并进入keepalived目录下找到keepalived.conf,做一个拷贝副本方便以后还原初始——>keepalived.conf.bak。

高并发与负载均衡——keepalived_第4张图片

2.对keepalived.conf进行配置和讲解

<1>vrrp协议的网卡接口相关配置,state字段表示当前服务器是主还是备用,我这里将node01配置成主,给LVS——node01配置VIP高并发与负载均衡——keepalived_第5张图片

PS:LVS服务器做主备,主一旦挂掉,备用接手,一旦主修复,主则抢占备用的级别,重新变为MASTER。LVS服务器做主备是抢占机制,这里考虑到的是服务器成本问题(因为服务器一定是冗余配置防止宕机的,所以成本较高),为了节省成本,LVS主服务器肯定配置较好,备配置较差,因为首先,LVS是内核中的一个程序,是一个字符串规则,也是c语言写的一个结构体,不会大量占用内存,不会占用大量IO和磁盘,所以主可以抢占,因为代价小;其次,备用服务器只需要承担一会儿的数据压力,等待主修好,就可以不用继续承担压力了。但是别的服务器集群不一定做抢占以及主备硬件配置不一样。以文件服务器举例子,文件服务器会承担大量数据的写入。所以文件服务器主备配置是一样的,因为一旦主挂掉,备用顶上去,在主服务器修复好的过程中,备用服务器的内存中已经写了大量数据,需要从内存中同步到磁盘中。主如果已经修复好,要抢占备用占据的主的地位,则会首先做数据移植。这是一个耗时耗资源的过程,业务会造成一个时间窗口是不可用的。所以文件服务器主备不做抢占,并且服务器硬件配置相同。

​​​​​​<2>LVS虚拟服务器相关配置,配置负载均衡规则,相当于ipvsadm -A -t 192.168.88.100:80 -s rr高并发与负载均衡——keepalived_第6张图片

<3>LVS后面的RealServer的配置(node02和node03),

高并发与负载均衡——keepalived_第7张图片

将上述配置node02的real_server方法体复制粘贴到该方法体后并更改为node03的ip和tcp端口,并将上述配置LVS虚拟服务器的方法体外的方法全部删掉即可。

高并发与负载均衡——keepalived_第8张图片

<4> 配置LVS备用服务器node04

使用远程拷贝命令 : scp ./keepalived.conf [email protected]:`pwd` ,将node01的keepalived.conf拷贝到node04的对应目录中去。

高并发与负载均衡——keepalived_第9张图片

将state更改为BACKUP,表示为从属服务器,并修改权重为50,其他全部和node01一样

高并发与负载均衡——keepalived_第10张图片

5.服务器测试

(1)在node01上启动keepalived:service keepalived start,通过ifconfig查看node01上是否有VIP,使用ipvsadm -ln查看负载均衡规则

高并发与负载均衡——keepalived_第11张图片

VIP配置在了eth0:2子接口中

高并发与负载均衡——keepalived_第12张图片

发现node02和node03都在负载均衡的规则中

(2)在node02和node03上启动httpd服务:service httpd start,访问192.168.88.100来查看负载均衡

刷新后:

(3)关掉node03的httpd服务,则只能访问node02

高并发与负载均衡——keepalived_第13张图片

在node01上使用ipvsadm -ln,查看负载均衡情况

高并发与负载均衡——keepalived_第14张图片

只有node02,没有node03了,说明node01中的keepalived通过心跳检测检测到node03宕机,则只将数据包转向node02,正确。

(4)重新启动node03,使用ipvsadm -ln查看负载均衡表

高并发与负载均衡——keepalived_第15张图片

node03重新添加到负载均衡规则中,重新刷新访问192.168.88.100页面也会出现(2)中情况,说明node01和node02,node03的DR模型搭建成功。

(6)测试在node01宕机下,node04是否能够作为LVS重新上线

问题:如果我们将node01和node04的iptables都关掉的话,那么Xshell远程登录和keepalived的IP漂移都不能够正常进行。为了试验成功,只能现将iptables打开,并放开80端口。则可以测试成功,至于为和关闭防火墙反而不能成功,应该和iptables的配置和iptables开机启动有关,这样会导致iptables和LVS内核冲突。

模拟node01宕机:将node01的eth0网卡接口关闭——>ifconfig eth0 down

我们发现阻塞了,因为网卡eth0被关闭了,那么我们外界通过Xshell来访问node01虚拟机则也不能访问了,所以会阻塞。只能从VMware上查看网卡接口状态:

高并发与负载均衡——keepalived_第16张图片

只剩下环回接口lo了这时候node04会得到VIP:

高并发与负载均衡——keepalived_第17张图片
 

后端RealServer访问不受影响,同(2)

将node01恢复:ifconfig eth0 up,访问192.168.88.100,也同(2),实验成功,达成主备。

(7)但是如果keepalived程序本身出现bug,则会出现bug,详情请听https://www.bilibili.com/video/av35028934/?p=29中32分钟之后讲解

 

你可能感兴趣的:(大数据,负载均衡,主从)