前言
使用 Nginx 与 Keepalived 构建高可用集群,是提升系统稳定性和可靠性的常见方案。这篇文章从概念讲起,逐步搭建完整的高可用环境。
核心概念
Nginx
Nginx 是一款高性能的 HTTP 和反向代理服务器,主要应用于负载均衡和静态内容服务,同时也提供了 IMAP/SMTP/POP3 服务。
Keepalived
Keepalived 是一个用于监听和故障转移的工具,基于 VRRP 协议(虚拟路由冗余协议)实现。它可以监控服务器状态,并在主服务器故障时自动切换到备份服务器。
Keepalived 提供了几种冗余方式:
- 主备模式(Master-Backup)
- 负载均衡模式(Load Balancing)
- 主备负载均衡模式
双机高可用方案
- Keepalived + Nginx 双机主从模式
- Keepalived + Nginx 双机主主模式
Nginx 核心功能
正向代理
帮助内网客户端访问外网服务器的代理方式。客户端无法直接访问目标服务器,但可以通过代理服务器进行访问。
主要目的:解决访问限制问题,如绕过地区限制或组织内部的访问限制。
反向代理
把外网客户端的请求转发给内网服务器的代理方式。客户端并不知道实际提供服务的服务器地址,只与代理服务器进行交互。
作用:
- 作为负载均衡器,将客户端请求分发到多个后端服务器
- 安全防护,过滤恶意请求和响应
负载均衡
将工作负载均匀地分配到多个服务器上,防止任何单一节点过载。
度量标准:CPU 使用率、内存使用率、磁盘 I/O、网络带宽、并发用户数量等。
分类:
- 客户端负载均衡:发生在客户端,由自己决定访问哪台服务器
- 服务端负载均衡:通过专门的负载均衡器(如 Nginx、HAProxy)分发请求
环境搭建
1. 安装依赖
1
| yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel
|
2. 下载并解压 Nginx
1 2 3 4 5 6 7
| mkdir /opt/nginx cd /opt/nginx
wget http://nginx.org/download/nginx-1.26.1.tar.gz tar -xzvf nginx-1.26.1.tar.gz
|
3. 编译安装
1 2 3 4 5 6 7 8 9 10 11
| mkdir nginx-1.26.1_install
cd nginx-1.26.1
./configure --prefix=/opt/nginx/nginx-1.26.1_install
make && make install
|
4. 启动 Nginx
1 2 3 4 5 6 7 8
| /opt/nginx/nginx-1.26.1_install/sbin/nginx -t
/opt/nginx/nginx-1.26.1_install/sbin/nginx
curl http://192.168.10.100:80
|
Keepalived 配置
主节点配置
1
| vi /opt/nginx/keepalived/etc/keepalived/keepalived.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| ! Configuration File for keepalived
global_defs { notification_email { acassen@firewall.loc } router_id LVS_DEVEL }
vrrp_script chk_nginx { script "/opt/nginx/keepalived/check_nginx.sh" interval 2 weight 2 }
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.10.100 } track_script { chk_nginx } }
|
检查脚本
1
| vi /opt/nginx/keepalived/check_nginx.sh
|
1 2 3 4 5 6 7
| #!/bin/bash if ! pgrep -x nginx > /dev/null; then systemctl start nginx if ! pgrep -x nginx > /dev/null; then systemctl stop keepalived fi fi
|
1
| chmod +x /opt/nginx/keepalived/check_nginx.sh
|
备节点配置
与主节点类似,修改以下参数:
1 2
| state BACKUP priority 90
|
启动服务
1 2 3 4 5 6 7 8
| /opt/nginx/keepalived/sbin/keepalived
/opt/nginx/keepalived/sbin/keepalived
ip addr show eth0
|
常见问题
❌ VIP 无法访问
原因:Keepalived 未正确启动或配置错误。
解决:
1 2 3 4 5
| ps -ef | grep keepalived
tail -f /var/log/messages
|
❌ Nginx 故障未切换
原因:检查脚本未正确执行。
解决:
1 2 3 4 5
| /opt/nginx/keepalived/check_nginx.sh
chmod +x /opt/nginx/keepalived/check_nginx.sh
|
以上就是 Nginx + Keepalived 高可用集群的完整搭建过程。