Haproxy + Nginx
haproxy
haproxy是一款流行的负载均衡软件
- 优点:
- 支持TCP和HTTP两种协议层的负载均衡,使得它的功能非常丰富。
- 支持8种左右的负载均衡算法,尤其是在HTTP模式时,有一些高级的算法,如动态加权的最少连接算法,可以根据后端服务器的响应时间和负载情况动态调整权重。
- 支持虚拟主机,可以根据域名、目录结构等进行分流。
- 支持Session的保持,Cookie的引导,以及通过获取指定的URL来检测后端服务器的状态。
- 转发性能稍高,因为它追求zero copy的forward流程,所以代码都倾向于优化在这一点上。
- 对后端服务器一直在做健康检测,可以及时切换故障机器,提高可用性。
- 缺点:
- 代码模块化不足,内部结构复杂,二次开发困难。
- 配置文件比较繁琐,需要手动修改和重启。
- 日志功能不够强大,需要配合其他工具进行分析。
- 健康检测机制有一定的延迟,不能完全避免故障机器的影响。
使用haproxy为nginx配置高可用
- 在haproxy配置文件中指定nginx服务器的地址和端口
- 负载均衡的算法和模式 使用roundrobin算法,将web请求均匀地分配到三台nginx服务器上 示例:
conf
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend web
bind *:80
default_backend nginx
backend nginx
balance roundrobin
server nginx1 192.168.1.101:80 check
server nginx2 192.168.1.102:80 check
server nginx3 192.168.1.103:80 check