HAProxy之体验总结
简介
- HaProxy作为四层优秀的负载均衡服务 可以热更新有关配置 实现配置更新 TCP不中断
- Haproxy转发性能稍高(zero copy的转发流程)
- 支持session保持,Cookie引导,可通过url检测后端服务器健康状态。
- Haproxy 是单进程多线程模式,此模型支持非常大的并发连接数。
配置说明
- 全局配置
- 代理配置字段
- defaults 默认配置字段
- frontend 前端配置字段 用于配置请求链接
- backend 后端配置字段 用于服务集群的配置
- listen 用于同时配置 前端跟后端(相当于frontend+backend)
- 轮询算法
- roundrobin:轮询,依次访问每一个后端ip
- server options: weight 权重
- 动态算法:支持权重的运行时调整,支持慢启动;每个后端中最多支持4095个server;
- static-rr:静态算法:不支持权重的运行时调整及慢启动;后端主机数量无上限;(短连接和无状态的连接推荐使用rr算法)
- 进程相关参数
- chroot
- daemonn
- nbproc 进程个数
- tune.chksize 检查缓冲区的大小 默认单位为字节
- 文章参考 http://www.ttlsa.com/linux/haproxy-study-tutorial/
配置示例
global daemon # nbproc 1 # pidfile /var/run/haproxy.pid # 工作目录 defaults log 127.0.0.1 local0 err #[err warning info debug] mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置 option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 option dontlognull #日志中不记录负载均衡的心跳检测记录 maxconn 4096 #默认的最大连接数 timeout connect 5000ms #连接超时 timeout client 30000ms #客户端超时 timeout server 30000ms #服务器超时 #timeout check 2000 #=心跳检测超时 ######## 监控界面配置 ################# listen admin_status # 监控界面访问信息 bind *:8888 mode http # URI相对地址 stats uri /dbs # 统计报告格式 stats realm Global\ statistics # 登录账户信息 stats auth admin:123456 ########frontend配置############## ######## pg负载均衡配置 ############### listen proxy-pg bind *:5055 mode tcp # 负载均衡算法 # static-rr 权重, leastconn 最少连接, source 请求IP, 轮询 roundrobin balance roundrobin # 日志格式 option tcplog # 这里是容器中的IP地址,由于配置的是轮询roundrobin,weight 权重其实没有生效 server pg_1 172.17.0.1:5411 check weight 1 maxconn 2000 server pg_2 172.17.0.1:5412 check weight 1 maxconn 2000 # 使用keepalive检测死链 # option tcpka #########################################