当前位置: 首页 > article >正文

keepalived详细笔记

 

一、Keepalived 概述

  • Keepalived 是一种基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)协议实现的高可用解决方案,主要用于服务器的负载均衡和高可用性保障,能够在主服务器出现故障时,自动将服务切换到备用服务器上,确保业务的连续性。
  • 二、工作原理
  • VRRP 协议:一组路由器(或服务器)组成一个虚拟路由器,其中有一个主路由器(Master)和多个备份路由器(Backup)。虚拟路由器有一个虚拟 IP 地址(VIP),对外提供服务。主路由器定期发送 VRRP 通告消息,备份路由器监听这些消息当备份路由器在一定时间内没有收到主路由器的通告消息时,会认为主路由器发生故障,此时会根据优先级选举出一个新的主路由器,并接管虚拟 IP 地址,继续对外提供服务。
  • Keepalived 在此基础上,不仅实现了 VRRP 的基本功能,还添加了一些自定义的健康检查机制和服务管理功能。它可以对后端的真实服务器进行健康检查,如通过 HTTP、TCP 等协议检查服务器的端口是否可达、服务是否正常响应等。如果检测到某台真实服务器出现故障,Keepalived 可以将其从负载均衡集群中剔除,待服务器恢复正常后再重新加入。
    三、安装与配置
  • 安装:在大多数 Linux 发行版中,可以使用包管理器进行安装。例如,在 CentOS 上,可以使用 yum install keepalived 命令进行安装。
  • 配置文件:Keepalived 的主要配置文件通常为 /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
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 地址
    }

}

在 Keepalived 的配置文件中,以上部分通常是必填或关键必填的内容

global_defs 部分

  • router_id必填。用于在网络中唯一标识本服务器,通常设置为一个有意义的字符串,如服务器主机名等,不同服务器的 router_id 必须不同。

vrrp_instance 部分

  • state:必填。用于指定本服务器在该 VRRP 实例中的角色,如 MASTER 或 BACKUP,必须明确指定。
  • interface:必填。指定绑定的网络接口,如 eth0、ens33 等,需要根据实际服务器的网络接口情况准确填写,否则无法正常收发 VRRP 通告等。
  • virtual_router_id:必填。在同一个虚拟路由器组中,所有服务器的该值必须相同,用于标识虚拟路由器群组,取值范围是 0 到 255。
  • priority:必填。用于在选举主服务器时确定优先级,数值越大优先级越高,MASTER 和 BACKUP 服务器的优先级需要根据角色合理设置,不同服务器的该值通常不同。
  • advert_int必填。主服务器发送 VRRP 通告的时间间隔,单位为秒,一般根据实际网络环境和需求设置一个合适的值,通常为 1 到 5 秒等。
  • authentication:一般必填。用于设置认证方式和认证密码,确保 VRRP 通告的安全性和合法性,同一组中的服务器认证方式和密码必须一致。
  • virtual_ipaddress:通常必填。定义虚拟 IP 地址及绑定的网络接口,这是对外提供服务的 IP 地址,客户端将通过该 IP 访问服务,需要根据实际需求准确配置。

四、常用命令

  • 启动 Keepalived 服务:systemctl start keepalived
  • 停止 Keepalived 服务:systemctl stop keepalived
  • 查看 Keepalived 服务状态:systemctl status keepalived
  • 查看 Keepalived 日志:tail -f /var/log/messages(日志路径可能因系统而异)
    五、故障排查
  • 检查配置文件:确保配置文件语法正确,没有拼写错误或逻辑错误。可以使用 keepalived -t -f /etc/keepalived/keepalived.conf 命令来检查配置文件的语法。
  • 查看日志信息:通过查看系统日志或 Keepalived 专门的日志文件,获取有关服务启动、运行和故障切换的详细信息,以确定问题所在。
  • 检查网络连接:确保服务器之间的网络连接正常,能够相互通信,特别是用于 VRRP 通告和健康检查的网络接口。
  • 验证健康检查:手动执行健康检查脚本,检查其是否能够正确检测后端服务器的健康状态。

Keepalived 的配置和使用需要根据实际的网络环境和业务需求进行调整和优化,以确保高可用性和负载均衡的效果。


http://www.kler.cn/a/459674.html

相关文章:

  • SpringCloud源码-Ribbon
  • Jenkins 中自动化部署 Spring Boot 项目
  • AI大模型的搭建和训练
  • vue3 vite 动态加载路由遇到的问题
  • 性能测试03|JMeter:断言、关联、web脚本录制
  • 二、CSS基础
  • PHP语言的软件开发工具
  • 金蝶V10中间件的使用
  • STM32 软件I2C读写
  • 用c++或c 做一个深度遍历的 棋谱树,我用来 做围棋棋谱的教学,要求节省内存、效率高,便于保存(棋谱)和拷贝棋谱
  • Unity 使用UGUI制作卷轴开启关闭效果
  • 【C#】元组
  • 【GO基础学习】gin的使用
  • ArcGIS教程(009):ArcGIS制作校园3D展示图
  • 基于 `android.accessibilityservice` 的 Android 无障碍服务深度解析
  • 20241227通过配置nomodeset参数解决更新grub之后,ubuntu20.04.5无法启动的问题
  • 移动 APP 设计规范参考
  • GXUOJ-算法-第二次作业(矩阵连乘、最长公共子序列、0-1背包问题、带权区间调度)
  • 工厂方法模式详解
  • Redis - 1 ( 7000 字 Redis 入门级教程 )
  • 语言模型在时间序列预测中的作用
  • PHP关键字Self、Static和parent的区别
  • 小程序中引入echarts(保姆级教程)
  • 对jenkins的rpm进行处理
  • Windows配置IE浏览器不自动跳转到Edge
  • Spring中的设计模式