HAProxy 参数配置

RabbitMQ集群部署完成,经过HAProxy反向代理来提供统一的对RabbitMQ的访问入口。php

1.Haproxy提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。(负载均衡策略有不少:轮询、加权轮询、源地址哈希、最小链接数等等)css

2.为何使用集群?面对大量业务访问、高并发请求可使用高性能的服务器来提高RabbitMQ服务的负载能力。当单机容量达到极限时,采起集群的策略来对负载能力作进一步的提高和提高系统稳定性,可是这里还存在一个负载不均衡的问题。若是一个集群中有3个节点,全部的客户端都与其中的单个节点node1创建TCP链接,那么node1的网络负载必然会大大增长而显得难以承受,其余节点又因为没有那么多的负载而形成硬件资源的浪费。经过使用 haproxy 的负载策略来转发客户端的请求到RabbitMQ集群中,缓解队列集群中单一节点网络负载等状况html

 3.RabbitMQ集群的搭建方式有多种,其中就包括咱们今天要说的RabbitMQ+HAProxy的形式。前端

HAProxy是部署在Linux服务器的一个很是容易安装的程序包,对于安装咱们再也不赘述,咱们只说明HAProxy的配置。node

HAProxy部署完成之后,在配置文件/etc/haproxy/haproxy.cfg(Haproxy的安装路径) 的后面加上如下配置android

  1 # 配置文件
  2 -------------------------------------------------------
  3 # 全局配置
  4 global
  5 
  6     # 设置日志文件输出定向
  7     log 127.0.0.1 local3 info
  8 
  9     # 改变当前工做目录
 10     chroot /usr/local/haproxy
 11 
 12     # 用户与用户组
 13     user haproxy
 14     group haproxy
 15 
 16     # 守护进程启动,运维方式为后台工做
 17     daemon
 18 
 19     # 最大链接数
 20     maxconn 4000
 21 
 22 # 做用于其后紧跟的listen块,直至下一个defaults 块,下一个default 将替换上一个块做用于之后的listen 
 23 defaults
 24 
 25     # 启用每一个实例日志记录事件和流量。
 26     log global
 27     
 28     # 默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
 29     mode http
 30 
 31     # maxconn 65535         maxconn 每一个进程可用的最大链接数
 32     # retries 3         当对server的connection失败后,重试的次数  
 33     # option abortonclose     启用或禁用在队列中挂起的停止请求的早期丢弃 
 34     # option redispatch     启用或禁用在链接故障状况下的会话从新分配 
 35     # option dontlognull     启用和禁用 记录 空链接
 36     # option httpclose         每次请求完毕后主动关闭http通道,HA-Proxy不支持keep-alive模式 
 37     # option forwardfor     得到客户端IP 
 38     # option httplog        记录HTTP 请求,session 状态和计时器 
 39     option httplog
 40     option dontlognull
 41     timeout connect 5000
 42     timeout client 50000
 43     timeout server 50000
 44 
 45 
 46 #前端配置,http_front名称可自定义
 47 frontend http_front
 48     
 49     # bind *:443 ssl crt /etc/haproxy/cert.pem        启用ssl证书 
 50     # bind *:80                        发起http请求道80端口,会被转发到设置的ip及端口
 51     bind *:80
 52 
 53     #haproxy的状态管理页面,经过/haproxy?stats来访问
 54     stats uri /haproxy?stats
 55     default_backend http_back
 56 
 57 #后端配置,http_back名称可自定义
 58 backend http_back
 59 
 60     # 负载均衡方式
 61     # source 根据请求源IP
 62     # static-rr 根据权重
 63     # leastconn 最少链接者先处理
 64     # uri 根据请求的uri
 65     # url_param 根据请求的url参数
 66     # rdp-cookie 据据cookie(name)来锁定并哈希每一次请求
 67     # hdr(name) 根据HTTP请求头来锁定每一次HTTP请求
 68     # roundrobin 轮询方式
 69     balance roundrobin
 70 
 71     #设置健康检查页面
 72     option httpchk GET /index.html
 73 
 74     #传递客户端真实IP
 75     option forwardfor header X-Forwarded-For
 76 
 77     # inter 2000 健康检查时间间隔2秒
 78     # rise 3 检测多少次才认为是正常的
 79     # fall 3 失败多少次才认为是不可用的
 80     # weight 30 权重
 81     # 须要转发的ip及端口
 82     server node1 192.168.179.131:8081 check inter 2000 rise 3 fall 3 weight 30
 83     server node2 192.168.179.131:8082 check inter 2000 rise 3 fall 3 weight 30
 84 
 85 -------------------------------------------------------
 86 
 87 
 88 
 89 # haproxy的acl规则
 90 -------------------------------------------------------
 91 
 92 frontend http_front
 93     bind *:80
 94     stats uri /haproxy?stats
 95  
 96     #建立一个acl,is_http_back2是acl的名称,可自定义,用于判断主机名是否为www.back2.com
 97     acl is_http_back2 hdr_end(host) www.back2.com
 98 
 99     #经过正则判断主机名中是否为bbs.back.com或forum.back.com
100     acl is_host_bbs hdr_reg(host) -i ^(bbs.back.com|forum.back.com)
101 
102     #判断ua是否为android
103     acl is_ua_android hdr_reg(User-Agent) -i android
104 
105     #判断主机名开头是否为img.或css.或js.
106     acl is_host_static hdr_beg(host) -i img. css. js.
107 
108     #判断url路径中是否有/bbs
109     acl is_path_bbs path_beg -i /bbs
110 
111     #判断url文件结尾
112     acl is_php path_end -i .php
113 
114     #经过正则判断url中结尾以
115     acl is_static_file url_reg -i /*.(css|jpg|png|jpeg|gif)$
116 
117     #效果同上
118     acl is_static_file2 path_end -i .css .jpg .png .jpeg .gif
119 
120     #若是主机名是www.back2.com那么就使用后端http_back2
121     use_backend http_back2ifis_http_back2
122 
123     #默认使用的后端
124     default_backend http_back
125 
126 backend http_back
127     balance roundrobin
128     option httpchk GET /index.html
129     option forwardfor header X-Forwarded-For
130     server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30
131 
132 backend http_back2
133     balance roundrobin
134     option httpchk GET /index.html
135     option forwardfor header X-Forwarded-For
136     server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30
137 
138 -------------------------------------------------------

 

4.HAProxy及RabbitMQ均部署完成后,能够经过查看HAProxy的监控页面,来确认HAProxy是否正确安装redis

 

 

 5.HAProxy及RabbitMQ的部署关系后端

 

 

 针对HAProxy参数配置,比较固定,调整的时机也很小,但每一个参数都有其必要的做用,所以了解每一个经常使用HAProxy参数是很是有必要的。服务器

针对RabbitMQ集群,顺便提一下,部署了集群之后,务必针对重要队列开启镜像,由于能够最大限度的避免消息丢失。cookie

相关文章
相关标签/搜索