在CentOS上实现Nginx的高可用性,通常需要结合使用Nginx和Keepalived。以下是一个基本的Nginx高可用方案,包括安装、配置和测试步骤:
首先,在两台服务器上安装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
在两台服务器上配置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;
}
}
}
在主服务器和备用服务器上配置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
}
}
创建一个脚本来检查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
在两台服务器上启动Nginx和Keepalived服务:
sudo systemctl start nginx
sudo systemctl start keepalived
sudo systemctl enable nginx
sudo systemctl enable keepalived
在主服务器上停止Nginx服务以模拟故障情况,并观察备用服务器是否自动接管了VIP。
sudo systemctl stop nginx
访问虚拟IP(例如:http://192.168.1.100
),如果配置正确,应该能够看到备用服务器接管并提供服务。
可以使用监控工具(如Zabbix、Nagios等)来监控Nginx服务器的运行状态,当某台服务器出现故障时,自动将流量切换到其他正常的服务器上。
通过以上步骤,可以实现Nginx在CentOS上的高可用性。这种方案通常用于确保在主服务器发生故障时,备用服务器能够自动接管流量,从而保证服务的连续性。