使用使用 Keepalived 和 HAProxy做Manager的高可用HA集群组网

要实现两台 Rocky Linux 8 服务器的高可用性服务集群,可以使用 Keepalived 和 HAProxy。Keepalived 用于管理浮动 IP 地址,确保在一台服务器失效时,浮动 IP 自动切换到另一台服务器;HAProxy 用于负载均衡,分发流量到两个服务节点。

使用AI在线机器生成配置,以下是的详细配置示例:

1. 环境准备

假设Rocky Linux 8.8 服务器 IP 为:

  • server1: 192.168.18.51
  • server2: 192.168.18.52
  • 浮动 IP: 192.168.18.53

安装 Keepalived 和 HAProxy:

sudo yum install -y keepalived haproxy

2. 配置 Keepalived

server1server2 上分别编辑 /etc/keepalived/keepalived.conf 文件。

server1 的 Keepalived 配置:
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.18.53
    }
}
server2 的 Keepalived 配置:
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.18.53
    }
}

启动并启用 Keepalived 服务:

sudo systemctl start keepalived
sudo systemctl enable keepalived

3. 配置 HAProxy

server1server2 上分别编辑 /etc/haproxy/haproxy.cfg 文件。

HAProxy 配置:
global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend http_front
    bind *:443
    default_backend http_back

backend http_back
    balance roundrobin
    server server1 192.168.18.51:443 check
    server server2 192.168.18.52:443 check

启动并启用 HAProxy 服务:

sudo systemctl start haproxy
sudo systemctl enable haproxy

4. 测试和验证

通过浏览器或 curl 测试访问浮动 IP 地址:

curl -k https://192.168.18.53

server1 关闭时,server2 应自动接管浮动 IP 地址,并继续提供服务。

5. 高可用性验证

停止 server1 的 Keepalived 服务,验证浮动 IP 是否切换到 server2

sudo systemctl stop keepalived

server2 上检查浮动 IP:

ip addr show ens192

确保浮动 IP 192.168.18.53 显示在 server2 的网络接口上。

通过上述配置,你可以实现两台 Rocky Linux 8 服务器的高可用服务集群,保证服务的可靠性和持续可用性。

6. 配置解析:

Keepalived 配置解析

配置文件路径:/etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_instance VI_1 {
    state BACKUP 
    interface ens192 
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.18.53
    }
}
解析
  • vrrp_instance VI_1:定义一个 VRRP(Virtual Router Redundancy Protocol)实例,名称为 VI_1

  • state BACKUP:定义当前节点的初始状态为 BACKUP,这意味着它在启动时不会拥有虚拟 IP,除非 MASTER 节点失效。另一台机器上的状态应配置为 MASTER

  • interface ens192:指定用于 VRRP 的网络接口为 ens192

  • virtual_router_id 51:定义虚拟路由器的 ID 为 51,所有参与该 VRRP 实例的节点必须有相同的 ID。

  • priority 100:定义节点的优先级为 100。优先级较高的节点会成为 MASTER。另一台机器上的优先级应配置为高于 100,如 101。

  • advert_int 1:定义 VRRP 广播的间隔时间为 1 秒。

  • authentication:定义认证信息,使用密码认证,密码为 1234

  • virtual_ipaddress:定义虚拟 IP 地址为 192.168.18.53。这是浮动 IP,当 MASTER 节点失效时,这个 IP 会自动切换到 BACKUP 节点。

HAProxy 配置解析

配置文件路径:/etc/haproxy/haproxy.cfg
global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend http_front
    bind *:443
    default_backend http_back

backend http_back
    balance roundrobin
    server server1 192.168.18.51:443 check
    server server2 192.168.18.52:443 check
解析
  • global:全局配置部分。

    • log /dev/log local0log /dev/log local1 notice:配置日志记录,日志将发送到系统日志。

    • chroot /var/lib/haproxy:将 HAProxy 进程的根目录更改为 /var/lib/haproxy,增加安全性。

    • stats socket /run/haproxy/admin.sock mode 660 level admin:配置 HAProxy 管理套接字,用于与 HAProxy 的通信和管理。

    • stats timeout 30s:管理套接字的超时时间。

    • user haproxygroup haproxy:设置 HAProxy 进程的用户和组。

    • daemon:让 HAProxy 作为守护进程运行。

  • defaults:默认配置部分,适用于所有未在特定部分覆盖的设置。

    • log global:使用全局日志配置。

    • mode http:设置模式为 HTTP。

    • option httplog:启用 HTTP 日志格式。

    • option dontlognull:不记录空连接的日志。

    • timeout connect 5000:连接超时设置为 5000 毫秒。

    • timeout client 50000timeout server 50000:客户端和服务器的超时设置为 50000 毫秒。

    • errorfile 400errorfile 504:定义自定义错误页面。

  • frontend http_front:前端配置部分,定义入口。

    • bind *:443:监听所有接口的 443 端口。

    • default_backend http_back:将所有流量转发到 http_back 后端。

  • backend http_back:后端配置部分,定义后端服务器池。

    • balance roundrobin:使用轮询算法进行负载均衡。

    • server server1 192.168.18.51:443 checkserver server2 192.168.18.52:443 check:定义两个后端服务器,分别是 192.168.18.51:443192.168.18.52:443,并启用健康检查。

总结

  • Keepalived 负责管理浮动 IP 192.168.18.53,并在 MASTER 节点失效时自动切换到 BACKUP 节点。

  • HAProxy 负责在两台服务器 192.168.18.51192.168.18.52 之间进行负载均衡,通过轮询算法分发客户端请求。

当配置完成后,客户端通过浮动 IP 192.168.18.53 访问服务时,HAProxy 会将请求分发到 192.168.18.51192.168.18.52,从而实现高可用性和负载均衡。如果 MASTER 节点失效,Keepalived 会自动切换浮动 IP 到 BACKUP 节点,确保服务的持续可用性。

7 如何增加keepalived的日志和状态检查

要修复相关配置以确保可以在日志和状态文件中检查本机服务是否切换为 MASTER,需要执行以下步骤:

7.1 创建keepalive用户和组

groupadd keepalived
useradd -g keepalived keepalived

7.2 确保日志文件路径正确并且有权限写入日志

keepalived 配置文件中添加或修改日志配置:

global_defs {
    log_file /var/log/keepalived/keepalived.log
}

确保 /var/log/keepalived/ 目录存在并且 keepalived 有写入权限:

mkdir -p /var/log/keepalived
chown keepalived:keepalived /var/log/keepalived
chmod 755 /var/log/keepalived

7.3 确保状态文件路径正确并且有权限写入状态

keepalived 配置文件中添加状态文件路径:

vrrp_instance VI_1 {
    ...
    notify_master "/etc/keepalived/notify.sh MASTER"
    notify_backup "/etc/keepalived/notify.sh BACKUP"
    notify_fault "/etc/keepalived/notify.sh FAULT"
}

创建state文件,赋予读写权限

[root@Learning-18-52 ~]# touch /var/lib/keepalived/state
[root@Learning-18-52 ~]# chown keepalived:keepalived /var/lib/keepalived/state

创建 notify.sh 脚本来记录状态:

#!/bin/bash
echo $1 > /var/lib/keepalived/state

确保 notify.sh 脚本有执行权限:

chmod +x /etc/keepalived/notify.sh

确保 /var/lib/keepalived/ 目录存在并且 keepalived 有写入权限:

mkdir -p /var/lib/keepalived
chown keepalived:keepalived /var/lib/keepalived
chmod 755 /var/lib/keepalived

7.4 完整的 keepalived 配置文件

确保你的 keepalived 配置文件包含所有必要的设置:

! Configuration File for keepalived
global_defs {
    log_file /var/log/keepalived/keepalived.log
}

vrrp_instance VI_1 {
    state BACKUP 
    interface ens192 
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.18.53
    }
    notify_master "/etc/keepalived/notify.sh MASTER"
    notify_backup "/etc/keepalived/notify.sh BACKUP"
    notify_fault "/etc/keepalived/notify.sh FAULT"
}

7.5 重启 keepalived 服务

在完成上述配置后,重启 keepalived 服务:

systemctl restart keepalived

7.6 检查日志和状态文件

重启后,你可以通过以下命令检查 keepalived 的日志和状态文件:

检查日志文件:

tail -n 50 /var/log/keepalived/keepalived.log

检查状态文件:

cat /var/lib/keepalived/state

7.7 验证切换

为了验证切换情况,可以手动停掉 192.168.18.51 上的 keepalived 服务,观察 192.168.18.52 是否切换为 MASTER

systemctl stop keepalived

然后在 192.168.18.52 上检查状态文件和日志文件是否有相应的切换记录。

这样,通过正确的日志和状态文件配置,可以确保 keepalived 能够记录并反馈本机服务的切换情况。

  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值