keepalived配置Nginx高可用
keepalived基于VRRP协议,组件免费,可以解决单点故障,实现高可用HA机制。keepalived可以用于解决Nginx高可用问题。
- 云服务器不采用keepalived,云服务厂商可能不提供虚拟IP服务,可以直接使用云负载均衡服务。
1 keepalived
1.1 VRRP协议与原理
虚拟路由冗余协议 VRRP,是解决内网单机故障的路由协议,构建有多个路由器MASTER BACKUP,采用虚拟IP机制(用户访问虚拟ip,渲染出主节点;当主节点故障,心跳检测到故障,虚拟IP指向备用节点)。
配置高可用主备节点,机器配置需要相同。备用节点配置过低,大量请求进来会瞬间宕机,无法保证高可用。
VRRP原理
VRRP将局域网内的一组路由器划分在一起,称为一个备份组。备份组由一个Master路由器和多个Backup路由器组成,功能上相当于一台虚拟路由器。
VRRP备份组具有以下特点:
- 虚拟路由器具有IP地址,称为虚拟IP地址。局域网内的主机仅需要知道这个虚拟路由器的IP地址,并将其设置为缺省路由的下一跳地址。
- 网络内的主机通过这个虚拟路由器与外部网络进行通信。
- 备份组内的路由器根据优先级,选举出Master路由器,承担网关功能。其他路由器作为Backup路由器,当Master路由器发生故障时,取代Master继续履行网关职责,从而保证网络内的主机不间断地与外部网络进行通信。
2 安装keepalived与配置双机主备
官网下载https://www.keepalived.org/download.html
# 解压缩
cd keepalived-2.0.18/
# 安装依赖
yum -y install libnl libnl-devel
# 初始配置路径
./configure --prefix=/usr/local/keepalived --sysconf=/etc
# 编译,安装
make && make install
- prefix: 安装位置
- sysconf:核心配置文件位置,固定位置。改为其它,启动报错。
配置192.168.233.130/131两台机器的核心配置
global_defs {
# 路由id, 当前安装keepalived节点的主机标识符,保证全局唯一
router_id LVS_130
}
vrrp_instance VI_1 {
# 表示节点是MASTER,还是BACKUP
state MASTER
# 该实例绑定的网卡
interface ens33
# 保证主备节点一致即可
virtual_router_id 51
# 权重,主节点挂掉后,选举出优先级更高的节点作为主节点
priority 100
# 心跳间隔,主备节点之间同步检查时间间隔,默认1s
advert_int 1
# 认证权限密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 设置虚拟ip,可以多个
virtual_ipaddress {
192.168.233.120
}
}
- 131节点的配置文件与主节点配置基本一致,需要修改路由id、state改为BACKUP、调低权重。
启动keepalived,查看ip addr可以看到虚拟网卡信息。ps查看进程信息。
inet 192.168.233.120/32 scope global ens33
ps -ef | grep keepalived
将keepalived注册为服务
# 将源码目录下文件拷贝到启动目录
cp init.d/keepalived /etc/init.d/
cp sysconfig/keepalived /etc/sysconfig/
systemctl daemon-reload
systemctl start keepalived.service
当主节点MASTER和备用节点BACKUP同时运行起来,只有MASTER的网卡信息中有虚拟IP。当MASTER宕机(主机keepalived挂掉)时,BACKUP启用,网卡中出现虚拟IP;在MASTER修复重新启动后,运行主机切换为原MASTER。
针对于访问哪台节点,可以监控nginx访问日志:tail access.log -f 。
参考资料
版权声明:本文为博主原创文章,未经博主允许不得转载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix