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 服务的高可用性。

相关推荐
zhang1338308907519 分钟前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.2 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
物联网软硬件开发-轨物科技2 小时前
【轨物洞见】告别“被动维修”!预测性运维如何重塑老旧电站的资产价值?
运维·人工智能
程序员允诺2 小时前
[DevOps实战] 彻底解决依赖地狱:如何编译全静态、可移植的 Xorriso 工具
运维·devops
酣大智2 小时前
接口模式参数
运维·网络·网络协议·tcp/ip
一只自律的鸡2 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
!chen2 小时前
linux服务器静默安装Oracle26ai
linux·运维·服务器
莫大3302 小时前
2核2G云服务器PHP8.5+MySQL9.0+Nginx(LNMP)安装WordPress网站详细教程
运维·服务器·nginx
刚刚入门的菜鸟2 小时前
php-curl
运维·web安全·php
REDcker3 小时前
Linux 文件描述符与 Socket 选项操作详解
linux·运维·网络