keepalived详细笔记

keepalived 是一种基于VRRP(虚拟路由器冗余协议)的高可用解决方案,主要是用于服务器的负载均衡和高可用性的保障,自动将服务切换到备份服务器上,确保业务的连续性。

工作原理:

VRRP协议:一组路由器(或服务器)组成一个虚拟路由器,其中有一个主路由器(Master)和多个备份路由器(Backup)。虚拟路由器有一个虚拟 IP 地址(VIP),对外提供服务。主路由器定期发送VRRP通告消息,备份路由器监听这些消息。

当备份路由器在一定时间内没有收到主路由器的通告消息时,会认为主路由器发生故障,此时会根据优先级选举出一个新的主路由器,并接管虚拟 IP 地址,继续对外提供服务。

Keepalived 在此基础上,不仅实现了 VRRP 的基本功能,还添加了一些自定义的健康检查机制和服务管理功能。它对后端的真实服务器进行健康检查,如通过 HTTP、TCP 等协议检查服务器的端口是否可达、服务是否正常响应等。

如果检测到某台真实服务器出现故障,Keepalived 可以将其从负载均衡集群中剔除,待服务器恢复正常后再重新加入。

keepalived+nginx高可用实验

1.下载 Nginx 源码包:

cd /usr/local/src

wget http://nginx.org/download/nginx-1.18.0.tar.gz

  • 解压源码包:

    tar -zxvf nginx-1.18.0.tar.gz

    进入解压目录配置并编译安装

    cd nginx-1.18.0

    ./configure --prefix=/usr/local/nginx

    make && make install

    启动Nginx

    /usr/local/nginx/sbin/nginx

    • 验证 Nginx 是否成功启动:在浏览器中输入服务器的内网 IP 地址,若出现 Nginx 的欢迎页面,则启动成功。
  1. 安装 Keepalived

    • 在 Server1 和 Server2 上同时进行以下操作:
复制代码
yum install -y keepalived
  1. 配置 Keepalived

    • 在 Server1 上,编辑 /etc/keepalived/keepalived.conf 文件,如下:
复制代码
global_defs {
   router_id SERVER1  # 服务器唯一标识
}
​
# 定义 VRRP 实例
vrrp_instance VI_1 {
    state MASTER  # 此服务器为主服务器
    interface ens160  # 绑定的网络接口
    virtual_router_id 65  # 虚拟路由器 ID,取值范围 0 - 255,同一组需保持一致
    priority 100  # 优先级,数值越大优先级越高
    advert_int 1  # 通告间隔时间,单位为秒
    authentication {
        auth_type PASS  # 认证类型为简单密码认证
        auth_pass 123456  # 认证密码,需与 Server2 保持一致
    }
    virtual_ipaddress {
        192.168.65.200/24 dev ens160  # 虚拟 IP 地址
    }
}
  • 在 Server2 上,编辑 /etc/keepalived/keepalived.conf 文件,如下:
复制代码
global_defs {
   router_id SERVER2  # 服务器唯一标识
}
​
# 定义 VRRP 实例
vrrp_instance VI_1 {
    state BACKUP  # 此服务器为备用服务器
    interface ens160  # 绑定的网络接口
    virtual_router_id 65  # 虚拟路由器 ID,取值范围 0 - 255,同一组需保持一致
    priority 90  # 优先级,低于 Server1
    advert_int 1  # 通告间隔时间,单位为秒
    authentication {
        auth_type PASS  # 认证类型为简单密码认证
        auth_pass 123456  # 认证密码,需与 Server1 保持一致
    }
    virtual_ipaddress {
        192.168.65.200/24 dev ens160  # 虚拟 IP 地址
    }
​
}
  1. 启动 Keepalived

    • 在 Server1 和 Server2 上分别执行:
复制代码
systemctl start keepalived

MASTER(主)节点(192.168.65.131)成功标志

192.168.65.131拿到了VIP 192.168.131.200。

BACKUP(备)节点(192.168.65.132)成功标志

BACKUP上只有192.168.65.132这个ip,正常。

  1. 测试高可用性

    • 初始状态下,在局域网内的其他电脑(或通过虚拟机的宿主机)上,在浏览器中输入虚拟 IP 地址(192.168.1.200),此时应该能访问到 Server1 上的 Nginx 页面,因为 Server1 为主服务器。

    • 模拟 Server1 故障:

      • 在 Server1 上停止 Keepalived 服务:
复制代码
systemctl stop keepalived

*初始状态:*

*模拟故障:*

  • 快速在浏览器中再次输入虚拟 IP 地址,此时页面应能快速切换到 Server2 上的 Nginx 页面,这表明 Server2 成功接管服务。

这样,就完成了一个 Keepalived + Nginx 的简单实验,实现了 Web 服务的高可用性。

相关推荐
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_1 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉1 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦1 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj1 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
lsyeei1 天前
linux 系统目录详解
linux·运维·服务器