centos进程如何实现负载均衡
导读:在 CentOS 上,负载均衡通常指在多台服务器或同一台服务器上的多个进程之间分发请求或连接。常见做法有两类:一是在单机上用进程管理工具做多进程并发(如 PM2 cluster),二是在多台机器前部署 Nginx / HAProxy / L...
在 CentOS 上,负载均衡通常指在多台服务器或同一台服务器上的多个进程之间分发请求或连接。常见做法有两类:一是在单机上用进程管理工具做多进程并发(如 PM2 cluster),二是在多台机器前部署 Nginx / HAProxy / LVS(+Keepalived) 做反向代理或四层分发。下文给出可直接落地的做法与关键注意点。
单机多进程负载均衡
- 适用场景:一个应用需要吃满多核 CPU,提升吞吐。
- 做法:使用 PM2 启动多个应用实例(集群模式),由 PM2 在本地端口上做进程间负载分发;再用 Nginx/HAProxy 对外暴露 80/443,反向代理到这些实例。
- 快速示例
- 安装与启动集群
- 安装:npm install pm2 -g
- 启动 4 个实例:pm2 start app.js -i 4 --name api
- 查看状态:pm2 list
- Nginx 反向代理到本机实例(示例 upstream 使用本地端口 3000-3003)
- 配置片段:
- upstream backend { server 127.0.0.1:3000; server 127.0.0.1:3001; server 127.0.0.1:3002; server 127.0.0.1:3003; }
- 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; } }
- 管理:启动/开机自启 systemctl start|enable nginx
- 配置片段:
- 安装与启动集群
- 说明:nohup 仅用于“退出登录后保持进程运行”,不承担分发请求的职责;负载均衡应由 PM2(进程内)或 Nginx/HAProxy(进程外)承担。
多机或对外服务的负载均衡
- 方案选型
- Nginx:七层反向代理/负载均衡,配置灵活,支持健康检查、多种调度算法(如轮询、加权轮询、最少连接、IP Hash 等)。
- HAProxy:专注负载均衡与高可用,七层能力强,健康检查与统计完善。
- LVS(IPVS)+ Keepalived:四层(传输层)高性能分发,适合大流量;配合 Keepalived 提供 VIP 与故障切换。
- 快速示例
- Nginx
- 安装:sudo yum install epel-release -y & & sudo yum install nginx -y
- 配置 upstream 与 proxy_pass(示例见下节“关键配置片段”)
- 管理:systemctl start|enable nginx
- 防火墙:开放 80/443(示例:firewall-cmd --permanent --add-service=http --add-service=https & & firewall-cmd --reload)
- HAProxy
- 安装:sudo yum install haproxy -y
- 配置 frontend/backend 与 balance 策略(示例见下节)
- 管理:systemctl start|enable haproxy
- LVS + Keepalived
- 安装:sudo yum install ipvsadm keepalived -y
- LVS 规则示例:ipvsadm -A -t VIP:80 -s rr;ipvsadm -a -t VIP:80 -r RS1:80 -g;ipvsadm -a -t VIP:80 -r RS2:80 -g
- 开启转发:echo 1 > /proc/sys/net/ipv4/ip_forward
- Keepalived 提供 VIP 与主备切换(state MASTER/BACKUP、virtual_ipaddress 等)。
- Nginx
关键配置片段
- Nginx 七层负载均衡(HTTP)
- http { upstream backend { server 10.0.0.11:8080 weight=1 max_fails=3 fail_timeout=10s; server 10.0.0.12:8080 weight=1 max_fails=3 fail_timeout=10s; # 可选:least_conn; 最少连接;ip_hash; 会话保持 } server { listen 80; server_name app.example.com; 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; } } }
- HAProxy 七层负载均衡(HTTP)
- global log /dev/log local0 log /dev/log local1 notice daemon defaults log global mode http option httplog timeout connect 5s timeout client 50s timeout server 50s frontend http-in bind *:80 default_backend app_servers backend app_servers balance roundrobin server s1 10.0.0.11:8080 check server s2 10.0.0.12:8080 check
- LVS(四层,DR 模式思路)
- 调度器:ipvsadm -A -t 192.168.100.100:80 -s rr
- 真实服务器:ipvsadm -a -t 192.168.100.100:80 -r 10.0.0.11:80 -g;ipvsadm -a -t 192.168.100.100:80 -r 10.0.0.12:80 -g
- 开启转发:echo 1 > /proc/sys/net/ipv4/ip_forward
- 每台真实服务器将 VIP 192.168.100.100 配置在 lo:0 并抑制 ARP 响应(arp_ignore/arp_announce),保证回包经调度器。
健康检查与高可用
- 健康检查
- Nginx:在 upstream 中使用 max_fails 与 fail_timeout 实现被动探测;商业版支持主动 health_check,开源常用 max_fails/fail_timeout 或结合外部探针。
- HAProxy:server 行加 check,可配合 inter、rise、fall 精细控制。
- LVS:可结合 Keepalived 或外部脚本做应用层健康检查,自动摘除异常节点。
- 高可用
- 对外暴露建议使用 VIP + Keepalived 实现主备切换,避免单点故障;七层方案(Nginx/HAProxy)自身也可双机热备。
实践建议
- 选择算法:服务器性能相近用 轮询/加权轮询;长连接或会话敏感可用 IP Hash;波动负载用 最少连接。
- 调优要点:合理设置 worker_processes/worker_connections(Nginx)、maxconn(HAProxy),并开启压缩、缓存、连接复用等。
- 监控与观测:Nginx 可启用 stub_status 查看连接与请求;HAProxy 自带统计页面;结合 Prometheus/Grafana 做指标与告警。
- 安全加固:对外仅开放 80/443,限制管理接口访问;启用日志与审计;必要时启用 TLS。
- 常见误区:nohup 不是负载均衡器;不要把“多开进程”与“跨进程/跨机器分发”混淆,后者需要 Nginx/HAProxy/LVS 等专门组件。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos进程如何实现负载均衡
本文地址: https://pptw.com/jishu/763620.html
