在云计算环境中,将青云QingCloud的负载均衡服务与Nginx结合使用,可以构建出具备高可用性和横向扩展能力的Web服务架构。QingCloud LB负责在公网入口处分发流量,Nginx作为后端服务器处理具体业务请求,两者协同工作能够有效应对高并发场景。

青云QingCloud负载均衡器基础配置
青云QingCloud的负载均衡器是一个分布式的流量分发服务,它可以将来自公网的用户请求按照预设的算法转发到后端的多台服务器上。与传统的硬件负载均衡设备不同,QingCloud LB是基于软件定义网络实现的,具备弹性伸缩和高可用的特性。在开始配置之前,需要先在QingCloud控制台中创建一个负载均衡器实例,选择合适的部署位置和网络区域。
创建负载均衡器实例时,需要关注几个关键参数。首先是网络部署方式,QingCloud支持公网和私网两种类型的LB。公网类型的LB会分配一个公网IP地址,直接接收来自互联网的流量;私网类型的LB则只在VPC内部进行流量分发,适用于内部服务调用的场景。其次是规格选择,不同规格的LB在最大连接数、新建连接速率和吞吐量上有所差异,需要根据业务实际流量进行评估。
创建完成后,下一步是配置监听器。监听器定义了LB接收流量的协议和端口,QingCloud支持TCP、UDP、HTTP和HTTPS四种协议类型。对于Web服务,通常选择HTTP或HTTPS协议。以HTTP监听器为例,配置时需要指定前端端口(监听端口)和后端端口(服务器端口),前端端口是用户访问LB时使用的端口,后端端口是Nginx服务器实际监听的端口。如果使用HTTPS协议,还需要上传SSL证书。
# QingCloud LB监听器配置参数示例 监听协议: HTTP 监听端口: 80 后端协议: HTTP 后端端口: 8080 负载均衡算法: 轮询 会话保持: 关闭 健康检查间隔: 5秒 健康检查超时: 3秒 健康阈值: 3次 不健康阈值: 3次
监听器配置完成后,需要添加后端服务器。在QingCloud控制台中,可以将已创建的云服务器直接添加到LB的后端服务器组中。添加时需要指定服务器的权重,权重越高的服务器接收到的请求越多。如果所有服务器性能相当,可以设置相同的权重实现均匀分发。QingCloud LB支持多种调度算法,包括轮询、最小连接数和源地址哈希,不同的算法适用于不同的业务场景。
Nginx作为后端服务器的部署与优化
Nginx作为后端服务器,主要职责是接收来自QingCloud LB转发的请求并进行处理。在部署Nginx之前,需要确保云服务器已经安装了Nginx软件包。在Ubuntu或Debian系统上,可以通过apt包管理器安装;在CentOS或RHEL系统上,则使用yum或dnf进行安装。安装完成后,需要对Nginx进行基础配置,使其能够正确接收和处理来自LB的请求。
Nginx的核心配置文件通常位于/etc/nginx/nginx.conf,站点配置文件位于/etc/nginx/conf.d/目录下。在配置Nginx作为后端服务器时,有几个关键点需要注意。首先是监听端口的配置,必须与QingCloud LB监听器中设置的后端端口保持一致。其次是server_name的设置,由于请求是经过LB转发的,server_name应该配置为实际的域名或使用default_server参数捕获所有请求。最后是日志格式的调整,建议在日志中记录X-Forwarded-For和X-Real-IP等头部信息,以便获取客户端的真实IP地址。
# 安装Nginx(以Ubuntu为例) sudo apt update sudo apt install nginx -y # 启动Nginx并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginx # 检查Nginx状态 sudo systemctl status nginx
在Nginx配置文件中,需要设置虚拟主机来处理来自LB的请求。以下是一个基础的Nginx配置示例,展示了如何监听指定端口、设置访问日志格式以及处理请求。配置中的proxy_set_header指令用于设置传递给后端应用服务器的HTTP头部,确保应用服务器能够获取到客户端的真实信息。
# /etc/nginx/conf.d/webapp.conf
server {
listen 8080;
server_name _;
# 自定义日志格式,记录客户端真实IP
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_x_forwarded_for"';
access_log /var/log/nginx/webapp_access.log main;
error_log /var/log/nginx/webapp_error.log;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
# 健康检查端点
location /health {
access_log off;
return 200 "OK";
}
}除了基础配置外,Nginx的性能调优也非常重要。在高并发场景下,默认的Nginx配置可能无法充分发挥服务器性能。需要调整的参数包括worker_processes(工作进程数,通常设置为CPU核心数)、worker_connections(每个工作进程的最大连接数)、keepalive_timeout(保持连接的超时时间)等。此外,还可以开启gzip压缩、设置合理的缓存策略来提升整体性能。
# /etc/nginx/nginx.conf 性能调优部分
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 10240;
use epoll;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
keepalive_requests 1000;
# Gzip压缩配置
gzip on;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript;
# 文件上传大小限制
client_max_body_size 50m;
include /etc/nginx/conf.d/*.conf;
}双层负载均衡架构与健康检查机制
在实际生产环境中,单纯依赖QingCloud LB进行一次负载均衡可能无法满足复杂的业务需求。通过将QingCloud LB与Nginx的upstream模块结合,可以构建出双层负载均衡架构。第一层是QingCloud LB,负责公网入口的流量分发;第二层是Nginx的upstream模块,负责将请求再次分发到后端的应用服务器。这种架构的好处在于,QingCloud LB可以处理SSL卸载和公网流量调度,而Nginx则可以灵活地进行基于URL路径的请求路由和细粒度的负载控制。
在双层负载均衡架构中,健康检查机制是保障服务可用性的核心。QingCloud LB自带健康检查功能,会定期向后端服务器发送探测请求,如果服务器连续多次未响应或响应异常,LB会自动将该服务器从可用列表中移除,直到其恢复正常。健康检查的配置参数包括检查协议(HTTP或TCP)、检查路径(如/health)、检查间隔、超时时间以及健康和不健康阈值。合理设置这些参数,可以在服务器出现故障时快速切换流量,避免用户请求被发送到不可用的节点。
# QingCloud LB健康检查配置建议 检查协议: HTTP 检查路径: /health HTTP方法: GET 期望响应码: 200 检查间隔: 5秒 超时时间: 3秒 成功阈值: 2次(连续2次成功标记为健康) 失败阈值: 3次(连续3次失败标记为不健康)
在Nginx层面,虽然开源版本的Nginx没有主动健康检查功能,但可以通过第三方模块如nginx_upstream_check_module来实现。该模块允许Nginx定期向后端服务器发送健康检查请求,并根据响应状态自动调整upstream中服务器的可用状态。如果不想引入第三方模块,也可以通过max_fails和fail_timeout参数实现被动的健康检查。当某个后端服务器在fail_timeout时间内失败次数达到max_fails时,Nginx会暂时将其标记为不可用。
# Nginx upstream被动健康检查配置
upstream backend_servers {
# 应用服务器1
server 192.168.100.11:3000 max_fails=3 fail_timeout=30s;
# 应用服务器2
server 192.168.100.12:3000 max_fails=3 fail_timeout=30s;
# 应用服务器3(备份服务器,当主服务器全部不可用时启用)
server 192.168.100.13:3000 backup;
# 保持连接池配置
keepalive 32;
keepalive_requests 1000;
keepalive_timeout 60s;
}
server {
listen 8080;
location / {
proxy_pass http://backend_servers;
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_connect_timeout 5s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
# 代理缓冲区设置
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
}
}在双层架构中,会话保持也是一个需要重点考虑的问题。QingCloud LB支持基于Cookie和源IP的会话保持策略。如果选择基于Cookie的会话保持,LB会在首次请求时插入一个Cookie,后续带有相同Cookie的请求会被发送到同一台后端服务器。在Nginx层面,可以使用ip_hash指令实现基于客户端IP的会话保持,或者使用sticky模块实现基于Cookie的会话保持。需要注意的是,如果QingCloud LB和Nginx都配置了会话保持,可能会导致流量分发不均匀,建议只在其中一层配置。
最后,监控和日志分析是保障双层负载均衡架构稳定运行的重要手段。QingCloud控制台提供了LB的监控指标,包括请求数、流量、活跃连接数和后端服务器健康状态等。Nginx侧可以通过stub_status模块开启状态监控,或者使用Prometheus配合nginx_exporter采集更详细的指标数据。通过将两层的监控数据整合到统一的监控平台,可以全面掌握整个链路的运行状态,及时发现并处理异常情况。
NginxQingCloud LB负载均衡修改时间:2026-08-26 18:31:22