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

相关推荐
DDC楼宇自控与IBMS集成系统解读12 分钟前
园区3D可视化数字孪生管理平台与 IBMS 智能化集成系统:打造智慧园区新范式
运维·3d可视化·楼宇自控系统·数字孪生管理平台·ibms集成系统·3d可视化数字孪生管理平台·智能化集成系统
望获linux15 分钟前
【Linux基础知识系列:第一百四十篇】理解SELinux与系统安全
linux·运维·服务器·数据库·chrome·macos
初学者_xuan26 分钟前
零基础新手小白快速了解掌握服务集群与自动化运维(七)Nginx模块--Nginx反向代理与缓存功能(二)
运维·nginx·自动化
Java-xy²28 分钟前
AlmaLinux release 9.6服务器离线安装MySQL8.0.27详细步骤
运维·服务器·adb
啦啦啦在冲冲冲31 分钟前
如何计算sequence粒度的负载均衡损失
运维·负载均衡
zcz160712782132 分钟前
Ansible Playbook
运维
人逝花落空.38 分钟前
docker容器的三大核心技术UnionFS(下)
运维·docker·容器
岚天start41 分钟前
Nginx配置中location和proxy_pass指令尾部是否带斜杠的区别
运维·nginx·centos·proxy_pass·location·uri·斜杠
xx.ii1 小时前
54.Nginx部署与lnmp的部署
运维·nginx·负载均衡
纳切威2 小时前
CentOS 10服务器版 部署Zabbix7.2 server端
linux·运维·centos·zabbix