畅聊架构 2020-02-26
HAproxy 负载均衡器;
用它的原因 只是单纯做 HTTP协议负载; 同时可以保server端服务IP不被暴露到网络上。
yum install haproxy -y
HAproxy 配置示例;
haproxy的配置分为5个级别: global:全局配置 Listen:Frontend和Backend的组合体 defaults:配置默认参数 frontend:前端响应配置 backend:后端服务器集群配置
配置文件示例:
vi /etc/haproxy/haproxy.cfg # global # to have these messages end up in /var/log/haproxy.log you will # need to: # # 1) configure syslog to accept network log events. This is done # by adding the ‘-r‘ option to the SYSLOGD_OPTIONS in # /etc/sysconfig/syslog # # 2) configure local2 events to go to the /var/log/haproxy.log # file. A line like the following can be added to # /etc/sysconfig/syslog # # local2.* /var/log/haproxy.log # log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid nbproc 4 # 线程数 maxconn 5000 # 最大连接数 user haproxy group haproxy # 用户组 daemon # 以守护进程进行运行 # turn on stats unix socket stats socket /var/lib/haproxy/stats # defaults mode http # 默认 http 模块 log global # 采用global模块中定义的日志配置 option httplog # 日志类别 option dontlognull #保证HAProxy不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包 option http-server-close # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 option forwardfor except 127.0.0.0/8 # 设置后端地址 option redispatch # serverId对应的服务器挂掉后,强制定向到其他健康的服务器 retries 3 # 重试次数 timeout http-request 10s # http请求超时时间 timeout queue 1m # 默认队列超时时间 timeout connect 10s # 成功连接一台服务器最长等待时间 timeout client 1m # 连接客户端最长等待时间 timeout server 1m # 服务器回应客户端最长等待时间 timeout http-keep-alive 10s # 长连接超时时间 timeout check 10s # 心跳检测超时 maxconn 3000 # 最大连接数 # 设置静态监控页 listen stats mode http bind 0.0.0.0:2019 # 监听 stats enable # stats hide-version # 隐藏版本 stats uri /haproxyadmin?stats # haproxy的状态管理页面,通过/haproxy?stats来访问 stats realm Haproxy\ Statistics # 统计状态 stats auth admin:admin # 设置监控页面的用户和密码 stats admin if TRUE # 负载配置 frontend http bind *:2020 mode http log global option httpclose option logasap option dontlognull capture request header Host len 20 capture request header Referer len 60 default_backend servers # 定义一个服务器组 http_back # 后端配置 backend servers balance roundrobin # 轮询 server server1 172.16.2.40:80 check maxconn 2000 server server2 172.16.2.41:80 check maxconn 2000 后端服务标识区别 ip:port maxconn 最大连接数 check 关键字 inter 健康检查间隔 2000 毫秒 rise 检测为正常次数 fall 检测为失败次数 weight 权重
HAProxy的负载均衡算法:
roundrobin #轮询 static-rr #加权轮询 leastconn #最少连接数 source #相当于nginx的ip_hash hdr(name) #根据HTTP请求头来锁定每一次HTTP请求 uri #根据请求的URI url_param #根据请求的URl参数‘balance url_param‘ requires an URL parameter name rdp-cookie(name) #表示根据据cookie(name)锁定并哈希每一次TCP请求
检测页访问 http://ip:2019; 密码前面设置 admin:admin
当服务器节点数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载。采用VS-NAT的负载均衡器。为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。