RabbitMQ集群部署完成,通过HAProxy反向代理来提供统一的对RabbitMQ的访问入口。
1.Haproxy提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。(负载均衡策略有很多:轮询、加权轮询、源地址哈希、最小连接数等等)
2.为什么使用集群?面对大量业务访问、高并发请求可以使用高性能的服务器来提升RabbitMQ服务的负载能力。当单机容量达到极限时,采取集群的策略来对负载能力做进一步的提升和提升系统稳定性,但是这里还存在一个负载不均衡的问题。如果一个集群中有3个节点,所有的客户端都与其中的单个节点node1建立TCP连接,那么node1的网络负载必然会大大增加而显得难以承受,其他节点又由于没有那么多的负载而造成硬件资源的浪费。通过使用 haproxy 的负载策略来转发客户端的请求到RabbitMQ集群中,缓解队列集群中单一节点网络负载等情况
3.RabbitMQ集群的搭建方式有多种,其中就包括我们今天要说的RabbitMQ+HAProxy的形式。
HAProxy是部署在Linux服务器的一个非常容易安装的程序包,对于安装我们不再赘述,我们只说明HAProxy的配置。
HAProxy部署完成以后,在配置文件/etc/haproxy/haproxy.cfg(Haproxy的安装路径) 的后面加上以下配置
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

