要实现两台 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
在 server1
和 server2
上分别编辑 /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
在 server1
和 server2
上分别编辑 /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 local0
和log /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 haproxy
和group haproxy
:设置 HAProxy 进程的用户和组。 -
daemon
:让 HAProxy 作为守护进程运行。
-
-
defaults
:默认配置部分,适用于所有未在特定部分覆盖的设置。-
log global
:使用全局日志配置。 -
mode http
:设置模式为 HTTP。 -
option httplog
:启用 HTTP 日志格式。 -
option dontlognull
:不记录空连接的日志。 -
timeout connect 5000
:连接超时设置为 5000 毫秒。 -
timeout client 50000
和timeout server 50000
:客户端和服务器的超时设置为 50000 毫秒。 -
errorfile 400
到errorfile 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 check
和server server2 192.168.18.52:443 check
:定义两个后端服务器,分别是192.168.18.51:443
和192.168.18.52:443
,并启用健康检查。
-
总结
-
Keepalived 负责管理浮动 IP
192.168.18.53
,并在MASTER
节点失效时自动切换到BACKUP
节点。 -
HAProxy 负责在两台服务器
192.168.18.51
和192.168.18.52
之间进行负载均衡,通过轮询算法分发客户端请求。
当配置完成后,客户端通过浮动 IP 192.168.18.53
访问服务时,HAProxy 会将请求分发到 192.168.18.51
或 192.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
能够记录并反馈本机服务的切换情况。