# 高可用 Nginx 集群

URL: https://caijiao.org/nginx/ha-cluster
Source: docs/nginx/ha-cluster.md
Description: 本节介绍 Nginx 高可用集群搭建方法，包括主从架构、负载均衡、故障切换、Keepalived 配置及集群优化，实现高可用 Web 服务。

为保证 Web 服务高可用性，可使用 Nginx 集群结合负载均衡和故障切换实现无单点故障。

## 一、主从架构与负载均衡

- 多台 Nginx 节点组成集群  
- 使用 **upstream** 块分配请求到不同节点  

```nginx
upstream backend_servers {
    least_conn;
    server 192.168.1.101;
    server 192.168.1.102;
}
````

- **least_conn**：将请求分配给连接数最少的节点
- 可根据需求使用 `round-robin` 或 `ip_hash`

## 二、Keepalived 配置

- 配合 Keepalived 实现 VIP（虚拟 IP）故障切换

```bash
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    virtual_ipaddress {
        192.168.1.100
    }
}
```

- MASTER 节点故障时，BACKUP 节点接管 VIP
- 确保访问请求不中断

## 三、健康检查与故障转移

- 配置 `proxy_next_upstream` 自动切换故障节点

```nginx
location / {
    proxy_pass http://backend_servers;
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
```

- 支持错误自动切换，提高集群可靠性

## 四、性能与优化建议

1. 使用缓存和 Gzip 减少后端压力
2. 配置 Keep-Alive 提升连接复用率
3. 定期监控节点状态，确保服务健康
4. 配合监控工具（如 Prometheus、Grafana）观察集群指标

---

通过搭建高可用 Nginx 集群，可以实现 Web 服务的稳定、高可用和负载均衡，防止单点故障。

```
