温馨提示×

nginx在centos上的高可用方案

小樊
55
2025-02-18 19:44:12
栏目: 智能运维

在CentOS上实现Nginx的高可用性,通常需要结合使用Nginx和Keepalived。以下是一个基本的Nginx高可用方案,包括安装、配置和测试步骤:

1. 安装Nginx和Keepalived

首先,在两台服务器上安装Nginx和Keepalived。

# 安装Nginx sudo yum install -y epel-release sudo yum install -y nginx sudo systemctl start nginx sudo systemctl enable nginx # 安装Keepalived sudo yum install -y keepalived 

2. 配置Nginx

在两台服务器上配置Nginx,确保它们有相同的配置文件。例如:

# /etc/nginx/nginx.conf user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { upstream backend { server 192.168.1.101:8080; server 192.168.1.102:8080 backup; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; } } } 

3. 配置Keepalived

在主服务器和备用服务器上配置Keepalived。

主服务器配置文件 /etc/keepalived/keepalived.conf:

vrrp_script chk_nginx { script "/usr/local/src/nginx_check.sh" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 } track_script { chk_nginx } } 

备用服务器配置文件 /etc/keepalived/keepalived.conf:

vrrp_script chk_nginx { script "/usr/local/src/nginx_check.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 } track_script { chk_nginx } } 

4. 创建健康检查脚本

创建一个脚本来检查Nginx的状态。

# /usr/local/src/nginx_check.sh #!/bin/bash if pgrep -x "nginx" > /dev/null then exit 0 else exit 1 fi 

确保脚本有执行权限:

chmod +x /usr/local/src/nginx_check.sh 

5. 启动服务

在两台服务器上启动Nginx和Keepalived服务:

sudo systemctl start nginx sudo systemctl start keepalived sudo systemctl enable nginx sudo systemctl enable keepalived 

6. 测试高可用性

在主服务器上停止Nginx服务以模拟故障情况,并观察备用服务器是否自动接管了VIP。

sudo systemctl stop nginx 

访问虚拟IP(例如:http://192.168.1.100),如果配置正确,应该能够看到备用服务器接管并提供服务。

7. 监控和自动恢复

可以使用监控工具(如Zabbix、Nagios等)来监控Nginx服务器的运行状态,当某台服务器出现故障时,自动将流量切换到其他正常的服务器上。

通过以上步骤,可以实现Nginx在CentOS上的高可用性。这种方案通常用于确保在主服务器发生故障时,备用服务器能够自动接管流量,从而保证服务的连续性。

0