KeepAlived 高可用解决方案指南

一、KeepAlived的原理及安装

Keepalived 是一个常用的高可用性解决方案,主要用于通过 VRRP (Virtual Router Redundancy Protocol) 实现高可用集群。它主要用于提供负载均衡和故障切换功能。

1、主要功能

  • 虚拟路由器:使用 VRRP 协议创建一个虚拟 IP(VIP),多个节点共同维护这个 IP。一个节点被选为主节点,其它节点作为备份节点。

  • 故障检测:Keepalived 定期检查主节点的健康状态。如果主节点发生故障,其他节点可以自动接管,确保服务的可用性。

  • 负载均衡:可以与 HAProxy 或 Nginx 等负载均衡器结合使用,将流量分配到多个后端服务器,提高系统的整体性能。

2、主要组件

  • 主节点(Master):负责处理流量并响应请求。
  • 备节点(Backup):监控主节点的状态。一旦主节点故障,备节点会自动接管其 IP 地址,成为新的主节点。
  • 虚拟 IP 地址(VIP):客户端访问时使用的 IP 地址。保证了访问时不会受到节点切换的影响。

3、Keepalived 环境准备

  • 各节点时间必须同步:ntp, chrony
  • 关闭防火墙及SELinux
  • 各节点之间可通过主机名互相通信:非必须
  • 建议使用/etc/hosts文件实现:非必须
  • 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信:非必须

4、Keepalived 相关文件

  • 软件包名:keepalived
  • 主程序文件:/usr/sbin/keepalived
  • 主配置文件:/etc/keepalived/keepalived.conf
  • 配置文件示例:/usr/share/doc/keepalived/
  • Unit File:/lib/systemd/system/keepalived.service
  • Unit File的环境配置文件:/etc/sysconfig/keepalived

5、Keepalived 安装

在KA中测试并下载keepalived服务

yum install keepalived -y

二、 KeepAlived 配置说明

1、全局配置

vim /etc/keepalived/keepalived.conf

2、配置虚拟路由器

systemctl enable --now keepalived.service

查看:虚拟路由器的 IP 地址(VIP)

注:1、本文章中KA1的IP是172.25.253.10  ;   KA2的IP是172.25.254.20

       2、每次更改配置文件后都要重启服务

测试:

将KA1的配置文件cp给KA2

scp /etc/keepalived/keepalived.conf root@172.25.254.20:/etc/keepalived/keepalived.conf

修改KA2中的部分参数

节点作为备份 BACKUP ;优先级为 80

systemctl enable --now keepalived.service

重启后并没有出现vip,这是因为优先级低的缘故VRRP 默认是抢占模式

抓包过程中停掉KA1的keepalived服务,就会转到KA2主机

这时用ifconfig查看KA2时vip出现

3、虚拟路由的通信设定

此时172.25.254.100是ping不通的

vim /etc/keepalived/keepalived.conf

第一种方法:都开

第二种:都注释

systemctl restart keepalived.service

这时ping就可以通

4、启用keepalived日志功能

vim /etc/sysconfig/keepalived

vim /etc/rsyslog.conf

systemctl restart rsyslog.service

systemctl restart keepalived.service

5、 实现独立子配置文件

mkdir -p /etc/keepalived/conf.d

vim /etc/keepalived/conf.d/172.25.254.100.conf

三.Keepalived 企业应用示例

2、非抢占模式 nopreempt

vrrp默认为抢占模式preempt,即当高优先级的主机恢复在线后,会抢占低先级的主机的master角色, 这样会使vip在KA主机中来回漂移,造成网络抖动, 建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的master角色。非抢占模块下,如果原主机down机, VIP迁移至的新主机, 后续也发生down时,仍会将VIP迁移回原主机

systemctl restart keepalived.service

此时vip在ks1,若ks1重启keepalived.service,vip就会到ks2中,并且不会被抢占

3、 抢占延迟模式 preempt_delay

抢占延迟模式,即优先级高的主机恢复后,不会立即抢回VIP,而是延迟一段时间(默认300s)再抢回 VIP

重启后5s后抢占

4、单播模式设定

tcpdump -i ens33 -nn src host 172.25.254.10 and dst 172.25.254.20

有vip的主机指向没有vip的主机

5、 Keepalived 通知脚本配置 --邮件通知

yum install mailx -y
vim /etc/mail.rc

echo nihao,kaka | mail -s test 171324xxxx@qq.com

echo hello,kaka | mail -s test 171324xxxx@qq.com

脚本

vim /etc/keepalived/mail.sh

chmod +x /etc/keepalived/mail.sh
vim /etc/keepalived/keepalived.conf

/etc/keepalived/mail.sh fault

6、双主架构

KA2中添加第二个VIP,并设置为备用设备backup,优先级为80

KA2中添加第二个VIP,并设置为主设备master,优先级为100

7、双主的 LVS-DR 模式

server端

在服务端下载httpd

echo 172.25.254.110 > /var/www/html/index.html

echo 172.25.254.120 > /var/www/html/index.html

systemctl enable --now httpd.service

systemctl disable --now firewalld.service

在两个server中分别添加ip      172.25.254.100

ip a a 172.25.254.100/32 dev lo

调整server端的arp配置

vim /etc/sysctl.d/arp.conf

systemctl restart httpd.service

在两个KA中

yum install ipvsadm -y

vim /etc/keepalived/keepalived.conf

这时策略添加成功了

8、实现HAProxy高可用

yum install haproxy

在两个ka1和ka2先实现haproxy的配置

vim /etc/haproxy/haproxy.cfg

在两个ka1和ka2两个节点启用内核参数

 vim /etc/sysctl.conf

在KA1中添加ip

ip a d 172.25.254.100/32 dev lo

在KA1中编写检测脚本

 vim /etc/keepalived/test.sh

chmod  +x /etc/keepalived/test.sh

在KA1中配置keepalived

vim /etc/keepalived/keepalived.conf

调整server端的arp配置

vim /etc/sysctl.d/arp.conf

测试:

关掉KA1的haproxy后,服务没有中断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值