高并发是大型架构的核心,下面我重点详解百万并发实战方案@mikechen
百万高并发
在互联网服务日益增长的今天,高并发、大流量场景已成为大型网站与分布式应用必须面对的挑战。
为了保证服务的高可用性、可扩展性与性能,常见的架构方案是将负载均衡与反向代理相结合。
百万并发实战中,Nginx + LVS + Keepalived 架构是一种常见的高并发、高可用解决方案。
其主要思路是利用LVS(Linux Virtual Server)做四层负载均衡,Keepalived负责LVS的高可用管理(比如VIP漂移)。
而Nginx作为七层负载均衡和反向代理,处理具体的HTTP/HTTPS请求和业务逻辑。
LVS负载入口
第一层 (负载均衡入口):LVS 集群 + Keepalived。
对外暴露 VIP,将请求分发到 Nginx 集群。
# IPVS virtual service for HTTP virtual_server 10.0.0.100 80 { delay_loop 5 lb_algo rr # rr | lc | wlc | dh | sh | sed | nq lb_kind DR # DR (DIRECT), NAT, TUN persistence_timeout 300 protocol TCP real_server 10.0.0.11 80 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 80 } } real_server 10.0.0.12 80 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 80 } } }
由于LVS,工作在第 4 层(传输层),通过 IPVS 内核模块实现转发。
具备极高的吞吐与低延迟,适合作为集群入口来承载海量并发连接。
Keepalived(高可用与健康检查)
Keepalived 是一个基于 VRRP (Virtual Router Redundancy Protocol), 协议的开源软件。
它通过选举机制在多台服务器中,指定一个 Master (主) 节点、和多个 Backup (备) 节点。
Keepalived 会为 Master 节点绑定一个虚拟 IP 地址,所有外部请求都通过这个 VIP 访问。
如下图所示:
# 检查 Nginx 状态的脚本 vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" interval 2 weight -20 # 如果 Nginx 宕机,降低优先级 }
Master 、和 Backup 节点之间,会不断发送 VRRP 协议的心跳包。
如果 Master 节点宕机,Backup 节点将检测不到心跳。
此时,它会接管 VRRP IP,自动成为新的 Master,继续提供服务。
整个过程对用户是透明的,实现了服务的无缝切换。
Nginx(七层反向代理与应用交付)
Nginx 部署在多台服务器上,作为反向代理服务器接收外部请求。
并根据预设的负载均衡算法(如轮询、加权轮询、IP Hash 等),将请求分发到后端的应用服务器集群。
http { upstream backend_servers { server 192.168.1.100 weight=5; # 后端服务器1 server 192.168.1.101 weight=5; # 后端服务器2 server 192.168.1.102 weight=5; # 后端服务器3 } server { listen 80; server_name your_domain.com; } }
这不仅能分散请求压力,还能隐藏后端服务器的真实 IP 地址,提升安全性。