高可用集群keepalived

一、为什么要用keepalived
        LVS通过IP、MAC地址对后端服务器进行调用,但调用中缺少监听功能,所以我们在其中引入了Haproxy;Haproxy首先能够完善监听功能,在此基础上,支持七层网络,通过七层报文对数据进行分析,从而实现动静分离(ACL),与此同时,Haproxy同时缺少主机备份功能,为了达成高集群的效果,引入了Keepalived。

二、VRRP协议
        
        如图所示,配置两台路由器组,各自有一个IP,一旦一方出现问题,会将IP迁移到另一台路由器上,两台路由器组会通过VRRP协议发送组播,组播地址在收到信息(Heartbeat)后判断是否存在问题,若存在问题,则将IP进行迁移。
        抢占模式非抢占模式:顾名思义,两台路由器组,哪方抢占模式,哪方取走双方IP
        安全认证:MD5、无认证、共享密钥
        工作模式:主/备(一台使用一台闲置) 主/主(两台都有VIP,负责不同业务,互为主备)

三、keepalived组件与架构

用户空间核心组件:
vrrp stack:VIP消息通告
checkers:监测
real server system call:实现 vrrp 协议状态转换时调用脚本的功能
SMTP:邮件组件
IPVS wrapper:生成IPVS规则
Netlink Reflector:网络接口
WatchDog:监控进程
控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
IO复用器:针对网络目的而优化的自己的线程抽象
内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

四、环境准备


1.配置网络




2.查询selinux与防火墙是否关闭

其他三台类似
3.给两台服务器配置httpd(下载完记得开启)

[root@realserver1 ~]# yum install httpd -y
[root@realserver1 ~]# echo 172.25.254.110 > /var/www/html/index.html
[root@realserver2 ~]# yum install httpd -y
[root@realserver1 ~]# echo 172.25.254.120 > /var/www/html/index.html

最后访问确认 

五、虚拟路由配置
1.安装keepalived

[root@ka1 ~]# yum install keepalived -y
[root@ka2 ~]# yum install keepalived -y

 2.安装完毕后,查询keepalived相关配置文件

[root@ka1 ~]# rpm -ql keepalived

 
/etc/keepalived ->配置目录
/etc/keepalived/keepalived.conf ->主配置文件
/etc/sysconfig/keepalived ->对启动进程进行设定
/usr/lib/systemd/system/keepalived.service ->启动服务的脚本
/usr/sbin/keeplived ->执行的命令
3.进入主配置文件进行配置

global 全局设置

vrrp 虚拟路由做设定
配置完成后重启,查询VIP

同样对ka2进行配置,对ka1复制即可

复制后打开文件,对其中属性进行修改即可

priority设为80(优先级小于ka1)
对224.0.0.18进行抓包查询

此时只有10没有20 是因为优先级 把10关了(模拟故障)就可以看到20

此时20也有了VIP

再把10的打开,发现20的VIP没了,抓包得到的报文又回到了10


同样,查看10的ip 发现vip又回到10了

此时ka1有vip,但是ping不通


查询网关发现,报文传输过来全部被丢弃
为了ping通,需要在参数配置里,加入vrrp_iptables

此时再ping 就已ping通

ping通的另一种方法就是将vrrp_strict与vrrp_iptables同时注释掉(一同在或一同无)都可以ping通
六、日志分离
进入日志文件(/etc/sysconfig/keepalived)并进行编辑

重启后进入rsyslog文件配置

此时cat查看

七、实现独立子配置文件
环境复杂时,文件内容过多不宜管理
可利用include指令实现包含子配置文件

使用include 会自动读取目录下的.conf文件从而实现子配置文件管理

创建文件并进行编辑,编辑后重启,查看vip是否存在

说明include划分使用成功

八、抢占与非抢占模式
1.非抢占模式
两台ka1、ka2配置时加入nopreempt,同时将两台状态都改为BACKUP

而后重启设置,vip在ka2主机上。

将ka2停止后,vip又回到了ka1上

这就很好的诠释了非抢占模式的概念(即vip搁置在其中,哪台先启动哪台先拥有且不会因为优先级等等进行抢夺)
2.延迟抢占模式

设置延迟时间为5s 
将ka1停止后,vip到ka2上

此时重新打开ka1,vip并没有立即回到ka1上,而是在延时5s后回到

九、VIP单播配置
打开配置,在ka1中添加如下单播配置

同样,20与其相反

但是,此时开始抓包,并未有任何反应

打开网卡配置查看,发现连vip都没了

然后查看文件(确保配置无误)、防火墙设置、selinux设置等等,发现并没有问题

最后查找相关资料,发现必须要同时把这两个相关配置注释掉才可以

此时再进行相关查询,发现一切正常



十、邮件通知
下载安装包

在qq邮箱里生成授权码

编辑配置,输入个人账号信息

而后发送邮件,打开邮箱发现已收到

编写脚本

加权限

打开主配置文件,添加如下配置

执行脚本
[root@ka1 ~]# /etc/keepalived/mail.sh fault

十一、双主架构
编辑双主配置
ka1:

ka2:

配置完成后,重启查看


由图可知 eth0:1的主在ka1 eth0:2的主在ka2
stop掉ka2的keepalive后,发现eth0:2在ka1中出现

十二、单主LVS-DR模式
ka1进入编辑文档进行配置


ka2进行配置编辑


rs1配置

进入/etc/sysctl.d/arp.conf目录下

[root@realserver1 ~]# sysctl --system
[root@realserver1 ~]# sysctl -p
rs2同理


[root@realserver2 ~]# sysctl --system
[root@realserver2 ~]# sysctl -p
十三、利用keepalived实现haproxy高可用
1.对两台服务器进行http搭建


2.对ka1ka2进行配置文件编辑
[root@ka1 ~]# vim /etc/sysctl.conf

[root@ka1 ~]# vim /etc/haproxy/haproxy.cfg

进入keepalived配置文件进行编辑
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf

最后重启
同样,对ka2进行配置
[root@ka2 ~]# vim /etc/sysctl.conf

[root@ka2 ~]# sysctl -p
下载haproxy
[root@ka2 ~]# yum install haproxy -y
[root@ka2 ~]# vim /etc/haproxy/haproxy.cfg

编写脚本
[root@ka2 ~]# vim /etc/keepalived/haproxy.sh

加权

最后进入keepalived文件进行编辑配置

完成后重启,配置完毕
[root@ka2 ~]# systemctl restart keepalived.service

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值