Keepalive+LVS实现负载均衡

实验环境:

1.linux系统中配置四台虚拟机,主机名可以自己定义
2.给四台主机配置和ip和dns地址解析,是的四台主机可ping通

可以参考以下配置,由于我的母盘ip为1。所以我的ip是从2开始
host1
Keepalive+LVS实现负载均衡
host2
Keepalive+LVS实现负载均衡
host3
Keepalive+LVS实现负载均衡
host4
Keepalive+LVS实现负载均衡

做完之后在你的主机中做dns地址解析

vim /etc/hosts
Keepalive+LVS实现负载均衡

配置本地yum源,关闭firewalld和selinux

lvs:linux virtual server

lvs实现http的负载均衡

dr:直接路由模式
tun:隧道模式
nat:路由转发模式
fullnat模式

四种工作模式对比

性能比较:DR>TUN>NAT>FULLNAT

DR工作模式和轮询调度实现httpd的负载均衡

操作步骤:
安装所需要的软件

yum install -y ipvsadm
安装管理器

以下都为参考数值(可以自行设置)

添加虚拟IP和调度算法
ipvsadm -A -t 172.25.25.100:80 -s rr
rr表示调度算法

添加虚拟ip给服务器
ipvsadm -a -t 172.25.15.100:80 -r 172.25.15.5:80 -g
ipvsadm -a -t 172.25.15.100:80 -r 172.25.15.4:80 -g
Keepalive+LVS实现负载均衡

注意:第一个ip为虚拟ip,第二个ip为你服务端主机的ip

ipvsadm -l 查看ipvsadm设置
同时打开两台服务器中的http服务
Keepalive+LVS实现负载均衡

查看两台服务器中的http服务没有问题,进行下一步

在两台主机和调度机中添加虚拟ip(也称VIP)
以一台主机为例添加虚拟ipKeepalive+LVS实现负载均衡

下载arptables火墙
yum install -y arptables
安装完成后启动arptables服务,启动后添加访问原则
host3
arptables -A INPUT -d 172.25.15.120 -j DROP
arptables -A OUTPUT -d 172.25.15.120 -j mangle --mangle-ip-s 172.25.15.4
这里的172.25.15.4的ip为自己当前主机的ip
systemctl restart arptables 重新启动服务
host4
arptables -A INPUT -d 172.25.15.120 -j DROP
arptables -A OUTPUT -d 172.25.15.120 -j mangle --mangle-ip-s 172.25.15.5
这里的172.25.15.5的ip为自己当前主机的ip
systemctl restart arptables 重新启动服务
arptables-save > /etc/sysconfig/arptables 将写的策略追加到arptables中

开始做测试:

测试结果如下:

如果访问的不是这样的结果,那么在你的/var/www/html/index.html下写入你想让显示的内容,建议两个服务器都编辑以便于区分

Keepalive+LVS实现负载均衡

keepalived+lvs

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。
 后来Keepalived又加入了VRRP的功能,VRRP(VritrualRouterRedundancyProtocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied一方面具有服务器状态检测和故障隔离功能,另外一方面也有HAcluster功能。
 健康检查和失败切换是keepalived的两大核心功能。所谓的健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性。

在你的host1和host2安装keepalive
yum install -y keepalive 安装完成之后编辑配置文件(选择一台主机作为主机)
vi /etc/keepalived/keepalived.conf 编辑配置文件(我让我的host2为master)

修改host2中的keepalive主配置文件

master是主机的意思
priority为优先级
后面的这个ipaddress为需要添加的ip是多少(vip)
Keepalive+LVS实现负载均衡

real_serer为服务器的IP
weight权重
TCP_CKECK,tcp检测
connect_timeout 连接超时设置为3秒
nb_get_retry 重启
delay_before_retry 重启前延时

Keepalive+LVS实现负载均衡

编辑完成之后编辑副的keepalive,两个keepalive差不多所以只需将host2上的scp到host1中即可

拷贝完成之后只需在副的keepalive中稍加修改

修改权重(priority)和state(状态)

Keepalive+LVS实现负载均衡

配置完成之后查看日志

Keepalive+LVS实现负载均衡

当我们停止我们host2上的keepalive时我们的ip会给host1
测试:

我们可以看到虚拟ip(vip)飘到了host1上

Keepalive+LVS实现负载均衡

查看日志可以看到host1现在成为了master主机

Keepalive+LVS实现负载均衡

当我们重新启动host2上的keepalive时我们会发现资源又回到了host2上

Keepalive+LVS实现负载均衡

注意:这里的lb_kind要设置成DR

Keepalive+LVS实现负载均衡

如果我们不想让虚拟ip飘来飘去那么我们需要修改状态都为backup

注意:此操作需要在优先级高的主机中做
修改状态都为BACKUP,添加nopreempt意思为重新启动是不抢占资源

Keepalive+LVS实现负载均衡

测试:

测试host2上现在keepalive状态

虚拟ip现在在host2上

Keepalive+LVS实现负载均衡

查看日志

可以看出现在host2为master主机

Keepalive+LVS实现负载均衡

停止host2上的keepalive服务

查看host1上的keepalive

查看虚拟ip

Keepalive+LVS实现负载均衡

查看日志文件

可以看到现在host1为master主机

Keepalive+LVS实现负载均衡

启动host2上的keepalive查看是否有抢占资源问题

当host2上的keepalive服务启动成功时不会去抢占资源并且虚拟ip也没有发生飘转问题

Keepalive+LVS实现负载均衡

本篇博客中出现的一切问题希望大家给出建议我会及时作出修改

end