一、Nginx Plus概述
Nginx Plus是Nginx的商业版本,在开源Nginx基础上增加了企业级功能,包括高级负载均衡、健康检查、动态配置、实时监控等。
1.1 Nginx Plus核心特性
- 高级负载均衡:支持更多负载均衡算法和健康检查
- 动态配置:通过API动态修改配置,无需重载
- 实时监控:内置实时监控仪表盘
- 会话持久化:多种会话保持方式
1.2 Nginx Plus与开源版对比
| 功能 | 开源版 | Plus版 |
|---|---|---|
| 负载均衡算法 | 基础算法 | 高级算法 |
| 健康检查 | 被动检查 | 主动检查 |
| 动态配置 | 不支持 | 支持 |
| 监控仪表盘 | 不支持 | 内置 |
| 会话持久化 | 基础 | 高级 |
二、Nginx Plus安装
2.1 仓库安装
# 添加Nginx Plus仓库
# 需要购买许可证获取仓库证书
# 安装Nginx Plus
yum install -y nginx-plus
# 启动服务
systemctl start nginx
systemctl enable nginx
# 查看版本
nginx -v
# 输出示例
nginx version: nginx/1.25.3 (nginx-plus-r31)
nginx version: nginx/1.25.3 (nginx-plus-r31)
三、高级负载均衡
3.1 负载均衡配置
# /etc/nginx/nginx.conf
upstream backend {
zone backend 64k;
# 服务器定义
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
# 高级负载均衡算法
least_time header; # 最少响应时间
# 会话持久化
sticky learn create=$upstream_cookie_examplecookie
lookup=$cookie_examplecookie
zone=client_sessions:1m;
}
server {
listen 80;
server_name fgedu.net.cn;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
3.2 负载均衡算法
# 轮询(默认)
upstream backend {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
# 最少连接
upstream backend {
least_conn;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
# 最少时间(Plus专有)
upstream backend {
least_time header; # 基于响应头时间
# least_time last_byte; # 基于完整响应时间
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
# 一致性哈希
upstream backend {
hash $request_uri consistent;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
# 随机算法
upstream backend {
random two least_conn;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
四、主动健康检查
4.1 HTTP健康检查
upstream backend {
zone backend 64k;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
# 健康检查配置
match health_check {
status 200-399;
header Content-Type = text/html;
body !~ "error";
}
server {
listen 80;
location / {
proxy_pass http://backend;
health_check interval=5s fails=3 passes=2 match=health_check;
}
}
4.2 高级健康检查
# 多条件健康检查
match api_health {
status 200;
header Content-Type ~ "application/json";
body ~ '"status":"healthy"';
}
# TCP健康检查
stream {
upstream mysql {
zone mysql 64k;
server 192.168.1.101:3306;
server 192.168.1.102:3306;
}
server {
listen 3306;
proxy_pass mysql;
health_check interval=10s passes=2 fails=3;
}
}
# 自定义健康检查
match custom_check {
status 200;
header X-Health = "OK";
body ~ "ready";
}
server {
location / {
proxy_pass http://backend;
health_check match=custom_check
interval=5s
jitter=1s
fails=3
passes=2
uri=/health;
}
}
五、动态配置API
5.1 启用API
# 启用动态配置API
upstream backend {
zone backend 64k;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
server {
listen 80;
location /api {
api write=on;
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
}
location / {
proxy_pass http://backend;
}
}
5.2 API操作示例
# 查看Upstream状态
curl http://fgedudb/api/6/http/upstreams/backend
# 输出示例
{
"peers": [
{
"id": 0,
"server": "192.168.1.101:8080",
"name": "192.168.1.101:8080",
"backup": false,
"weight": 1,
"state": "up",
"active": 0,
"requests": 1000,
"responses": {
"200": 1000
}
}
]
}
# 添加服务器
curl -X POST -d '{"server":"192.168.1.103:8080"}' \
http://fgedudb/api/6/http/upstreams/backend/servers
# 修改服务器权重
curl -X PATCH -d '{"weight":5}' \
http://fgedudb/api/6/http/upstreams/backend/servers/0
# 禁用服务器(排空连接)
curl -X PATCH -d '{"drain":true}' \
http://fgedudb/api/6/http/upstreams/backend/servers/0
# 删除服务器
curl -X DELETE \
http://fgedudb/api/6/http/upstreams/backend/servers/2
六、会话持久化
6.1 Cookie持久化
upstream backend {
zone backend 64k;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
# Cookie方式
sticky cookie srv_id expires=1h domain=fgedu.net.cn path=/;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
6.2 学习模式持久化
upstream backend {
zone backend 64k;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
# 学习模式
sticky learn create=$upstream_cookie_jsessionid
lookup=$cookie_jsessionid
zone=client_sessions:2m
timeout=1h;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
七、实时监控
7.1 状态页面
server {
listen 8080;
location /status {
status;
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
}
location /dashboard.html {
root /usr/share/nginx/html;
}
}
# 访问监控仪表盘
# http://fgedudb:8080/dashboard.html
7.2 API监控数据
# 获取统计信息
curl http://fgedudb/api/6/nginx
# 获取连接统计
curl http://fgedudb/api/6/connections
# 获取SSL统计
curl http://fgedudb/api/6/ssl
# 获取HTTP请求统计
curl http://fgedudb/api/6/http/requests
# 获取缓存统计
curl http://fgedudb/api/6/http/caches
# 输出示例
{
“version”: “1.25.3”,
“build”: “nginx-plus-r31”,
“address”: “192.168.1.100”,
“generation”: 5,
“load_timestamp”: “2024-01-15T10:30:00.000Z”,
“timestamp”: “2024-01-15T11:00:00.000Z”,
“pid”: 12345,
“ppid”: 12344,
“workers”: 4,
“connections”: {
“accepted”: 100000,
“dropped”: 0,
“active”: 500,
“idle”: 200
}
}
{
“version”: “1.25.3”,
“build”: “nginx-plus-r31”,
“address”: “192.168.1.100”,
“generation”: 5,
“load_timestamp”: “2024-01-15T10:30:00.000Z”,
“timestamp”: “2024-01-15T11:00:00.000Z”,
“pid”: 12345,
“ppid”: 12344,
“workers”: 4,
“connections”: {
“accepted”: 100000,
“dropped”: 0,
“active”: 500,
“idle”: 200
}
}
八、集群配置
8.1 状态共享
# 配置集群状态共享
cluster {
name nginx_cluster;
node 192.168.1.100;
node 192.168.1.101;
zone cluster_zone 1m;
}
# 共享Upstream状态
upstream backend {
zone backend 64k;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
sticky learn create=$upstream_cookie_jsessionid
lookup=$cookie_jsessionid
zone=client_sessions:2m
timeout=1h
sync;
}
九、运维命令
9.1 常用管理命令
# 测试配置
nginx -t
# 重载配置
nginx -s reload
# 查看进程
ps -ef | grep nginx
# 查看连接
ss -tlnp | grep nginx
# 查看版本
nginx -v
nginx -V
# 使用API管理
# 查看所有upstream
curl http://fgedudb/api/6/http/upstreams
# 查看特定upstream
curl http://fgedudb/api/6/http/upstreams/backend
# 查看服务器状态
curl http://fgedudb/api/6/http/upstreams/backend/servers/0
# 查看keyval存储
curl http://fgedudb/api/6/http/keyvals
十、最佳实践
| 配置项 | 建议值 | 说明 |
|---|---|---|
| 健康检查间隔 | 5秒 | 及时检测故障 |
| zone大小 | 64k-1m | 根据服务器数量 |
| 会话超时 | 1小时 | 根据业务调整 |
| API访问控制 | 限制IP | 安全访问 |
注意事项:
- API需要配置访问控制
- 动态配置不持久化,需配合脚本
- 定期备份配置文件
- 监控资源使用情况
十一、总结
Nginx Plus是功能强大的企业级负载均衡解决方案。通过本培训文档,您应该掌握了:
from 培训视频:www.itpux.com
- Nginx Plus与开源版的区别
- 高级负载均衡算法配置
- 主动健康检查配置
- 动态配置API使用
- 会话持久化配置
- 实时监控和运维管理
IT运维培训文档系列 | 第260篇 | Nginx Plus负载均衡培训
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
