centos

nginx在centos上的高可用方案

小樊
37
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
看了该问题的人还看了