前言:
LVS是基于内核实现负载均衡的,在小编的上一篇演示中我们已经实现了LVS的NAT模式和DR模式,但是企业中只有负载均衡是不行的,如果一台负载均衡器楚翔了故障,那么就会导致整个集群的不可用,所以这里结合LVS我们通过keepalived这个神器来实现高可用。
高可用:通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
首先我们来认识一下keepalived:
keepalived介绍:
1、功能:
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
2、特点及优点:
(a)配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能
(b)稳定性强:keepalived是一个类似于layer3, 4 & 7交换机制的软件,具备我们平时说的第3层、第4层和第7层交换机的功能,常用于前端负载均衡器的高可用服务,当主服务器出现故障时,可快速进行切换,监测机制灵活,成功率高。
(c)成本低廉:开源软件,可直接下载配置使用,没有额外费用。
(d)应用范围广:因为keepalived可应用在多个层面,所以它几乎可以对所有应用做高可用,包括LVS、数据库、http服务、nginx负载均衡等等
(e)支持多种类型:支持主从模式、主主模式高可用,可根据业务场景灵活选择。
3、keepalived功能实现方式
keepalived基于模块来进行工作,在开启服务的时候会开启三个守护进程
(a) 父进程:主要负责读取配置文件初始化、监控2个子进程等,监控WacthDog模块
(b) 子进程1:负责监控vrrp Stack 模块,通过Netlink Reflector模块,控制内核中的netlink模块,实现vrrp协议的功能。
(c) 子进程2:负责监控Cheackers模块,通过IPvs wrapper模块控制内核中的IPVS ,相当于代替了ipvsadm的功能,可以监控和负载后台服务器,负责健康监测功能。
4、keepalived基于vrrp协议工作
VRRP协议:
VRRP(VirtualRouter Redundancy Protocol,虚拟路由冗余协
议)可以认为是实现路由器高可用的协议,简单的说,当一个路由器故障时可以由另一个备份路由器继续提供相同的服务。
VRRP根据优先级来确定虚拟路由器中每台路由器的角色(Master
路由器或Backup路由器)。VRRP优先级的取值范围为0到255(数值越大表明优先级越高),可配置的范围是1到254,优先级0为系统保留给路由器放弃Master位置时候使用,255则是系统保留给IP地址拥有者使用。优先级越高,则越有可能成为Master路由器。当两台优先级相同的路由器同时竞争Master时,比较接口IP地址大小。接口地址大者当选为Master。
5、配置文件:
配置文件简单结构:
1、全局配置 global_defs
2、虚拟路由配置 vrrp_instance
3、虚拟服务器配置 virtual_server
接下来进入展示环节:
一、基于keepalived实现LVS-nat模式的高可用
1、实验前准备及部署:
关闭防火墙,关闭selinux
客户端到VS之间的IP段为公网
VS到RS之间的IP段为私网
2、客户端配置
客户端IP:172.17.0.0/16网段,例如:172.17.253.70
客户端关闭防火墙、关闭selinux
3、VS端配置
(VS端即负载均衡器)
VS端的VIP,172.17.252.60/16
VS端的DIP,192.168.11.107/24
在VS上:
首先我们得安装keepalived和ipvsadm,ipvsadm不是用于部署LVS,LVS的实现在keepalived中就可以实现,ipvsadm只是我们借助ipvsadm这个命令来进行查看ipvs规则。
关闭防火墙,开启路由转发:
(1)修改内存参数:
echo 1 > /proc/sys/net/ipv4/ip_forward
(2)修改配置文件:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
3.1 VS1的配置
编辑keepalived配置文件:
3.2VS2的配置
编辑keepalived配置文件
4、开启keepalived服务
centos6:service keepalived start
centos7:systemctl startkeepalived
如果开启不了是配置文件的错误,语法有错
5、RS端配置:
RS1 地址为:192.168.1.7
RS2 地址为:192.168.1.9
将路由指向DIP
routeadd default gw 192.168.11.107 dev ens34
开启web服务功能
httpd或 nginx
6、可以进行测试了!
实验结果图
二、基于keepalived实现LVS-dr模式的高可用
1、实验前准备:
关闭防火墙、selinux
实际的生产环境中的网络是:
client--公网--VS---私网---RS
但是在教室环境中,由于网卡的限制,所以只能配置同一个网段的IP
2、网络地址分配
3、客户端配置;
关闭防火墙,关闭selinux
添加默认网关到VIP,这是在实验的环境中为了使数据包发往VS服务器所做的特殊操作,在真实的网络环境中,客户端是能够找到VIP的。
route add default gw 192.17.1.17 dev ens34
4、VS端配置:
(1)VS1端配置:
开启路由转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
或
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
安装keepalived请自动yum安装
编辑keepalived配置文件:
启动keepalived;
centos6 ;serverkeepalived start
centos7 : systemctl start keepalived
可安装ipvsadm工具,使用ipvsadm命令进行查看ipvs规则
ip a 查看VIP绑定情况
(2)VS2端配置:
开启路由转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
或
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 VS2的配置
VS2的配置文件跟VS1的配置文件几乎相同,只需要将一下几点进行修改就可以了,这里小编就不在进行配置文件展示了:
不同点:
(1)虚拟路由中的stateBACKUP
(2)虚拟路由中的priority要比master中低
启动keepalived;
centos6 ;serverkeepalived start
centos7 : systemctl start keepalived
5、RS端配置
关闭防火墙,关闭selinux
在回环网卡上配置VIP:
ifconfig lo:1 192.17.1.17 netmask255.255.255.255 broadcast 192.17.1.17 up
route add -host 192.17.1.17 dev lo
配置arptable,将ARP广播关闭:
echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
开启web服务:(以httpd示例)
yum install httpd
centos6 : server httpd start
centos7 : systemctl start httpd
6、在客户端访问输入VIP地址进行访问测试
curl http://192.17.1.17/
可以用for循环测试:
for i in $(seq 10) ; do curlhttp://192.17.1.17 ;done
结果展示:
服务开启情况:
测试:
停掉一个keepalived服务:
查看另一台负载器是否接替了工作:
停掉服务后测试: