侧边栏壁纸
博主头像
dsmggm 博主等级

行动起来,活在当下

  • 累计撰写 28 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

keepalived双机热备docker教程

dsmggm
2025-06-17 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

docker-compose.yaml文件内容如下

keepalived:
    image: openeuler/keepalived:latest
    container_name: keepalived
    restart: always
    network_mode: host
    cap_add:
      - NET_ADMIN  # 需要网络管理权限
      - NET_BROADCAST
      - NET_RAW
    volumes:
      - /data/docker/keepalived/conf:/etc/keepalived
    command: keepalived -f /etc/keepalived/keepalived.conf --dont-fork --log-console --log-detail

keepalived.conf 配置文件如下

vrrp_script chk_nginx {
    script "/etc/keepalived/check.sh"  # Nginx检测脚本路径
    interval 2                               # 检测间隔(秒)
    weight -20                               # 检测失败时优先级降低20
    fall 2                                   # 连续2次失败才切换状态
    rise 1                                   # 1次成功即恢复状态
}

vrrp_instance VI_1 {
    state BACKUP        # 初始状态,主节点设为 MASTER,备节点设为BACKUP
    interface enp125s0f0      # 网卡名,可通过 ip a 命令查看实际网卡
    virtual_router_id 51    # 路由 ID,取值 0 - 255,主备节点需相同
    priority 90        # 优先级,主节点数值要高于备节点
    advert_int 1        # 心跳间隔,单位为秒

    authentication {
        auth_type PASS  # 认证类型,采用密码认证
        auth_pass Maxvision # 主备节点需设置相同密码
    }

    track_script {
        chk_nginx  # 关联Nginx检测脚本
    }

    virtual_ipaddress {
        172.16.2.16/24 # VIP(虚拟 IP ),子网掩码与物理 IP 保持一致
    }
}

check.sh脚本如下

#!/bin/bash
# Nginx健康检查脚本

# 请求检查
if ! curl -s --head --request GET http://127.0.0.1:8085/ | grep "200 OK" > /dev/null; then
    exit 1  # 无法访问,返回失败
fi

exit 0  # 一切正常

0

评论区