在CentOS上实现Nginx的高可用性,通常涉及以下几个关键步骤:
首先,确保在两台或多台服务器上安装了Nginx。可以使用以下命令进行安装:
sudo yum install epel-release
sudo yum install nginx
在每台服务器上配置Nginx,确保它们处理相同的请求。以下是一个基本的Nginx配置示例:
http {
upstream backend {
server server1.example.com;
server server2.example.com;
# 可以添加更多服务器
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
Keepalived可以用来管理虚拟IP地址,当一台服务器宕机时,VIP会自动切换到另一台服务器。
sudo yum install keepalived
在每台服务器上创建Keepalived配置文件 /etc/keepalived/keepalived.conf
。
主服务器配置示例:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.1.100
}
}
备份服务器配置示例:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.1.100
}
}
在每台服务器上启动Keepalived服务:
sudo systemctl start keepalived
sudo systemctl enable keepalived
通过停止主服务器上的Keepalived服务来测试高可用性:
sudo systemctl stop keepalived
此时,VIP应该会自动切换到备份服务器上,确保服务的连续性。
配置监控和日志记录,以便及时发现和解决问题。可以使用工具如Prometheus和Grafana进行监控,以及ELK Stack进行日志管理。
根据需求,可以在Nginx配置中调整负载均衡策略,例如使用least_conn
(最少连接)或ip_hash
(IP哈希)等。
upstream backend {
least_conn;
server server1.example.com;
server server2.example.com;
}
通过以上步骤,你可以在CentOS上实现Nginx的高可用性,确保在单点故障时服务仍然可用。