高可用 Keepalived 服务部署流程

news/2025/2/2 16:41:50/

一、配置文件

vim /etc/keepalived/keepalived.confGLOBAL    CONFIGURATION            --- 全局配置部分VRRPD     CONFIGURATION            --- VRRP协议配置部分LVS     CONFIGURATION            --- LVS服务管理配置部分[root@lb01 ~]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs {                      --- 全局配置部分notification_email {            --- 设置发送邮件信息的收件人acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from oldboy@163.com   --- 设置连接的邮件服务器信息smtp_server 163.smtp.xxx_smtp_connect_timeout 30 router_id LVS_DEVEL           --- 高可用集群主机身份标识(集群中主机身份标识名称不能重复)}vrrp_instance oldboy {           --- Vrrp协议家族 oldboystate MASTER                 --- 标识所在家族中的身份 (MASTER/BACKUP)interface eth0               --- 指定虚拟IP地址出现在什么网卡上virtual_router_id 51         --- 标识家族身份信息 多台高可用服务配置要一致 priority 100                 --- 设定优先级 优先级越高,就越有可能成为主advert_int 1                 --- 定义组播包发送的间隔时间()  主和备配置一样  1authentication {             --- 实现通讯需要有认证过程auth_type PASSauth_pass 1111}virtual_ipaddress {          --- 配置虚拟IP地址信息192.168.200.16192.168.200.17192.168.200.18}}

二、环境准备

1、服务器规划

角色	IP 地址	主机名	虚拟 IP (VIP)	优先级
Master	192.168.1.101	node1	192.168.1.100	100
Backup	192.168.1.102	node2	192.168.1.100	90

2、网络要求

主备节点需在同一局域网(二层互通)。确保防火墙允许 VRRP 协议报文(IP 协议号 112,组播地址 224.0.0.18)。若为云环境(如 AWS、阿里云),需确认支持组播或配置单播模式。

三、安装 Keepalived

1、在 Master 和 Backup 节点安装

# CentOS/RedHat
yum install keepalived -y# Ubuntu/Debian
apt-get install keepalived -y

2、启动服务并设置开机自启

systemctl start keepalived
systemctl enable keepalived

3、配置 Keepalived

1、主节点(Master)配置

配置文件路径:/etc/keepalived/keepalived.conf
global_defs {router_id NODE_MASTER  # 唯一标识,建议按节点角色命名
}vrrp_instance VI_1 {state MASTER           # 初始状态为 MASTERinterface eth0         # 绑定网卡名称(需根据实际修改)virtual_router_id 51   # 虚拟路由 ID,同一组需相同(1-255)priority 100           # 优先级,Master 需高于 Backupadvert_int 1           # 心跳间隔(秒)authentication {       # 认证配置(主备需一致)auth_type PASSauth_pass 12345678 # 密码建议复杂化}virtual_ipaddress {    # 虚拟 IP(VIP)192.168.1.100/24 dev eth0}# 可选:触发切换的脚本(如检测服务状态)track_script {chk_nginx          # 引用健康检查脚本}
}# 可选:定义健康检查脚本(示例:检查 Nginx 是否存活)
vrrp_script chk_nginx {script "/usr/bin/killall -0 nginx"  # 检查 Nginx 进程是否存在interval 2                          # 检查间隔(秒)weight -20                          # 检测失败时优先级降低值fall 2                              # 连续失败 2 次判定为故障rise 1                              # 成功 1 次即恢复
}

2、备节点(Backup)配置

配置文件路径:/etc/keepalived/keepalived.conf

global_defs {router_id NODE_BACKUP
}vrrp_instance VI_1 {state BACKUP           # 初始状态为 BACKUPinterface eth0virtual_router_id 51   # 必须与 Master 一致priority 90            # 优先级低于 Masteradvert_int 1authentication {auth_type PASSauth_pass 12345678}virtual_ipaddress {192.168.1.100/24 dev eth0}track_script {chk_nginx}
}# 健康检查脚本需与 Master 一致
vrrp_script chk_nginx {script "/usr/bin/killall -0 nginx"interval 2weight -20fall 2rise 1
}

四、关键配置说明

virtual_router_id:同一 VRRP 组内所有节点必须相同,不同组需不同。priority:优先级决定选举结果,范围 1-254,默认 100。advert_int:心跳间隔建议设为 1 秒,超时时间为 3 × advert_int + skew_time。track_script:用于扩展健康检查(如检测应用服务状态),故障时触发优先级降低。

五、启动与验证

1、启动服务

systemctl restart keepalived

2、检查 VIP 绑定

在 Master 节点执行:ip addr show eth0 | grep 192.168.1.100
# 应输出:inet 192.168.1.100/24 scope global secondary eth0

3、查看 Keepalived 状态

journalctl -u keepalived -f  # 查看实时日志
# 正常日志示例:VRRP_Instance(VI_1) Transition to MASTER STATE

4、模拟故障切换

1、手动停止 Master 的 Keepalived:

systemctl stop keepalived

2、验证 Backup 是否接管 VIP:

# 在 Backup 节点执行:
ip addr show eth0 | grep 192.168.1.100

六、高级配置

1、多实例负载均衡

为不同服务配置多个 VRRP 实例:

vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 52priority 100virtual_ipaddress {192.168.1.200/24 dev eth0}# 其他配置...
}

2、结合 Nginx/Haproxy 实现七层负载均衡

在 Keepalived 节点部署 Nginx/Haproxy,绑定 VIP。通过 Keepalived 监控 Nginx/Haproxy 进程,实现服务级高可用。

7、常见问题处理

1、脑裂(Split-Brain)

现象:主备节点同时持有 VIP。

解决:

检查防火墙是否允许 VRRP 报文。配置 nopreempt 关闭抢占模式。使用单播替代组播。

2、 VIP 无法绑定

原因:网卡未正确配置或 IP 冲突

解决

检查 interface 配置与实际网卡名称是否一致。
使用 arping 检测 VIP 是否被占用:
arping -I eth0 192.168.1.100

http://www.ppmy.cn/news/1568737.html

相关文章

十分钟快速上手 markdown

前言 本人利用寒假期间,将自己所学的markdown的知识,以及将自己常用的一些操作和注意事项记录下来,希望能够帮助大家 一、markdown是什么 Markdown 是一种轻量级标记语言,说白了就是可以让你利用最简单的语法达到最好的排版效果…

关于ARM和汇编语言

一图流 ARM 计算机组成 输入设备 输出设备 存储设备 运算器 控制器 处理器读取内存程序执行的过程 取指阶段:控制器器通过地址总线向存储器发送想要获取的指令的地址编号,存储器将指定的指令发送给处理器 译码阶段:控制器对指令进行分…

论文阅读的附录(八):Understanding Diffusion Models: A Unified Perspective(五):逐步加噪评分匹配

Understanding Diffusion Models: A Unified Perspective(五):逐步加噪评分匹配 文章概括1. Fisher 散度的定义问题 2. 数学技巧:积分分部法(Integration by Parts)2.1 回顾积分分部法2.2 多维积分分部公式…

【4. C++ 变量类型详解与创新解读】

本章目录: 前言什么是变量?C 基本变量类型1. 基本类型2. 扩展类型 自动类型转换与强制类型转换自动类型转换强制类型转换 声明与定义声明定义 左值与右值结语 前言 在C中,变量是程序存储数据的基本单元。变量的定义和使用涉及多种类型和规则&#xff0c…

认识小程序的基本组成结构

1.基本组成结构 2.页面的组成部分 3.json配置文件 4.app.json文件(全局配置文件) 5.project.config.json文件 6.sitemap.json文件 7.页面的.json配置文件 通过window节点可以控制小程序的外观

零代码搭建个人博客—Zblog结合内网穿透发布公网

目录 一、准备工作二、Z-blog 网站搭建1. XAMPP 环境设置2. Z-blog 安装3. Z-blog 网页测试 三、内网穿透工具 Cpolar 的安装和配置1. Cpolar 安装2. Cpolar 云端设置3. Cpolar 本地设置 四、本地网页发布五、注意六、本次经历总结 大家好,我是学问小小谢。 最近心血…

04树 + 堆 + 优先队列 + 图(D1_树(D2_二叉树(BT)(D1_基础学习)))

目录 一、简介 二、二叉树的类型 1. 严格二叉树 2. 满二叉树 3. 完全二叉树 三、二叉树的性质 四、二叉树的结构 五、二叉树的操作 1. 基本操作 2. 辅助操作 六、二叉树的应用 七、二叉树的遍历 1. 简介 2. 遍历方式 3. 遍历的分类:4类 3.1. 前序遍历…

HTML一般标签和自闭合标签介绍

在HTML中,标签用于定义网页内容的结构和样式。标签通常分为两类:一般标签(也称为成对标签或开放闭合标签)和自闭合标签(也称为空标签或自结束标签)。 以下是这两类标签的详细说明: 一、一般标…