您的位置:首页 > 运维架构 > 网站架构

集群介绍,keepalived介绍,用keepalived配置高可用集群

2018-01-26 00:00 567 查看

集群介绍

Linux集群根据功能划分为两大类:高可用和负载均衡。

高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 - 高可用衡量标准,4个九,就是99.99%,表示一个比例,在一年时间内99.99%的时间都是在线的,不允许宕机,不允许服务不可用。

实现高可用的开源软件有:heartbeat、keepalived

负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2

实现负载均衡的开源软件有LVS、keepalived、haproxy、nginx,商业的有F5、Netscaler

keepalived介绍

在这里使用keepalived来实现高可用集群,因为heartbeat在centos6上有一些问题,影响实验效果;heartbeat 切换的时候,会不是很及时。

keepalived通过VRRP(Virtual Router Redundancy Protocl虚拟路由冗余协议)来实现高可用。

在这个协议里,会将多台功能相同的路由器组成一个小组,这个小组里会有1个master角色和N(N>=1)个backup角色。

master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。此时就需要根据各个backup的优先级来决定谁成为新的mater。

Keepalived要有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check模块负责健康检查,vrrp模块是来实现VRRP协议的。

用keepalived配置高可用集群

准备两台机器130和132,130作为master,132作为backup

两台机器都执行yum install -y keepalived

两台机器都安装nginx,其中130上已经编译安装过nginx,132上需要yum安装nginx: yum install -y nginx

设定vip为100

编辑130上keepalived配置文件,内容从https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_keepalived.conf获取

130编辑监控脚本,内容从https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_check_ng.sh获取

给脚本755权限

systemctl start keepalived 130启动服务

132上编辑配置文件,内容从https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_keepalived.conf获取

132上编辑监控脚本,内容从https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_check_ng.sh获取

给脚本755权限

132上也启动服务 systemctl start keepalived

首先准备两台机器,都需要安装keepalived,一个作为master,一个作为backup





两台机器装nginx服务,可以yum直接安装



master上配置

编辑keepalived配置文件,按快捷键> !$清空内容,添加内容如下





notification_email//用于设置报警邮件地址

smtp_server 127.0.0.1 //设置邮件的smtp server地址

smtp_connect_timeout 30 //设置连接smtp sever超时时间

vrrp_script chk_nginx {

script "/usr/local/sbin/check_ng.sh" //检查服务是否正常

interval 3 //检查的时间间断是3秒

}

virtual_router_id 51 //定义路由器ID

priority 100 //权重

virtual_ipaddress//设置VIP

track_script//加载监控脚本

定义监控脚本,添加内容如下:





停止Keepalived服务是为了避免发生脑裂

然后更改脚本的权限,启动keepalived服务,查看进程





停掉nginx服务,查看nginx服务进程



查看ip地址,使用 ip add 命令,ifconfig命令无法查看到



检查两台机器的防火墙和selinux是否关闭





backup上配置

编辑keepalived配置文件,添加内容如下:







创建监控脚本,添加内容如下:





更改监控脚本权限,启动Keepalived服务,并查看



测试访问IP

访问master的IP



访问内容可以修改



访问backup的IP





访问192.168.133.132,出现和访问master的IP一样的内容,说明访问到的机器是master



测试高可用

先确定好两台机器上nginx差异,比如可以通过curl -I 来查看nginx版本

测试1:关闭master上的nginx服务

测试2:在master上增加iptabls规则

iptables -I OUTPUT -p vrrp -j DROP

测试3:关闭master上的keepalived服务

测试4:启动master上的keepalived服务

执行命令ip add可以看到,VIP绑定在master上



在master上增加iptabls规则限制vrrp发包,并查看日志变化





访问VIP,发现还是在master上



所以封掉vrrp协议,不能达到切换资源的目的,恢复防火墙规则



模拟生产环境中宕机,停掉keepalived服务,查看IP





访问VIP,发现内容发生改变



启动master上的keepalived服务,查看IP又回来了





访问VIP,内容又变回来了



扩展

heartbeat和keepalived比较

DRBD工作原理和配置

mysql+keepalived
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息