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的安装路径) 的后面加上以下配置

 # 配置文件
-------------------------------------------------------
# 全局配置
global # 设置日志文件输出定向
log 127.0.0.1 local3 info # 改变当前工作目录
chroot /usr/local/haproxy # 用户与用户组
user haproxy
group haproxy # 守护进程启动,运维方式为后台工作
daemon # 最大连接数
maxconn # 作用于其后紧跟的listen块,直至下一个defaults 块,下一个default 将替换上一个块作用于以后的listen
defaults # 启用每个实例日志记录事件和流量。
log global # 默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
mode http # maxconn maxconn 每个进程可用的最大连接数
# retries 当对server的connection失败后,重试的次数  
# option abortonclose 启用或禁用在队列中挂起的中止请求的早期丢弃
# option redispatch 启用或禁用在连接故障情况下的会话重新分配
# option dontlognull 启用和禁用 记录 空连接
# option httpclose 每次请求完毕后主动关闭http通道,HA-Proxy不支持keep-alive模式
# option forwardfor 获得客户端IP
# option httplog 记录HTTP 请求,session 状态和计时器
option httplog
option dontlognull
timeout connect
timeout client
timeout server #前端配置,http_front名称可自定义
frontend http_front # bind *: ssl crt /etc/haproxy/cert.pem 启用ssl证书
# bind *: 发起http请求道80端口,会被转发到设置的ip及端口
bind *: #haproxy的状态管理页面,通过/haproxy?stats来访问
stats uri /haproxy?stats
default_backend http_back #后端配置,http_back名称可自定义
backend http_back # 负载均衡方式
# source 根据请求源IP
# static-rr 根据权重
# leastconn 最少连接者先处理
# uri 根据请求的uri
# url_param 根据请求的url参数
# rdp-cookie 据据cookie(name)来锁定并哈希每一次请求
# hdr(name) 根据HTTP请求头来锁定每一次HTTP请求
# roundrobin 轮询方式
balance roundrobin #设置健康检查页面
option httpchk GET /index.html #传递客户端真实IP
option forwardfor header X-Forwarded-For # inter 健康检查时间间隔2秒
# rise 检测多少次才认为是正常的
# fall 失败多少次才认为是不可用的
# weight 权重
# 需要转发的ip及端口
server node1 192.168.179.131: check inter rise fall weight
server node2 192.168.179.131: check inter rise fall weight ------------------------------------------------------- # haproxy的acl规则
------------------------------------------------------- frontend http_front
bind *:
stats uri /haproxy?stats #创建一个acl,is_http_back2是acl的名称,可自定义,用于判断主机名是否为www.back2.com
acl is_http_back2 hdr_end(host) www.back2.com #通过正则判断主机名中是否为bbs.back.com或forum.back.com
acl is_host_bbs hdr_reg(host) -i ^(bbs.back.com|forum.back.com) #判断ua是否为android
acl is_ua_android hdr_reg(User-Agent) -i android #判断主机名开头是否为img.或css.或js.
acl is_host_static hdr_beg(host) -i img. css. js. #判断url路径中是否有/bbs
acl is_path_bbs path_beg -i /bbs #判断url文件结尾
acl is_php path_end -i .php #通过正则判断url中结尾以
acl is_static_file url_reg -i /*.(css|jpg|png|jpeg|gif)$ #效果同上
acl is_static_file2 path_end -i .css .jpg .png .jpeg .gif #如果主机名是www.back2.com那么就使用后端http_back2
use_backend http_back2ifis_http_back2 #默认使用的后端
default_backend http_back backend http_back
balance roundrobin
option httpchk GET /index.html
option forwardfor header X-Forwarded-For
server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30 backend http_back2
balance roundrobin
option httpchk GET /index.html
option forwardfor header X-Forwarded-For
server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30 -------------------------------------------------------

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

5.HAProxy及RabbitMQ的部署关系

针对HAProxy参数配置,比较固定,调整的时机也很小,但每个参数都有其必要的作用,因此了解每个常用HAProxy参数是非常有必要的。

针对RabbitMQ集群,顺便提一下,部署了集群以后,务必针对重要队列开启镜像,因为可以最大限度的避免消息丢失。

HAProxy 参数配置的更多相关文章

  1. Haproxy安装配置及日志输出问题

    简介: 软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载 ...

  2. HAPROXY 配置项/配置实例

    HAPROXY 配置项/实例 常用配置选项: OPTION 选项: option httpclose :HAProxy会针对客户端的第一条请求的返回添加cookie并返回给客户端,客户端发送后续请求时 ...

  3. HAproxy部署配置

    HAproxy部署配置 拓扑图 说明: haproxy服务器IP:172.16.253.200/16 (外网).192.168.29.140/24(内网) 博客服务器组IP:192.168.29.13 ...

  4. HAProxy详解(二):HAProxy基础配置与应用实例

    一.HAProxy基础配置与应用实例: 1.快速安装HAProxy集群软件: HAProxy的官网: https://www.haproxy.org/#down下载HAProxy的源码包. 安装: [ ...

  5. HAPRoxy(一):HAProxy基本配置、调度算法与tcp、http、heath模式配置示例

    一.HAProxy安装 1.HAProxy简单介绍 HAProxy虽然名字前有HA,但它并不是一款高可用软件,而是一款用于实现负载均衡的软件,可实现四层与七层的负载均衡. 2.yum安装HAProxy ...

  6. haproxy参数

    https://blog.csdn.net/chengfei112233/article/details/78983026 https://www.cnblogs.com/dkblog/archive ...

  7. Ubuntu 16.04 haproxy 简单配置应用

    HAproxy HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.   测试环境 ubuntu16.04 192.168.20 ...

  8. 负载均衡服务之HAProxy基础配置(一)

    前文我们聊了下haproxy的基础安装,以及怎样去代理后端主机的配置:当然没有很详细的去说配置文件中各指令的意思:有关haproxy的安装和代理后端server可以参考本人博客https://www. ...

  9. 负载均衡服务之HAProxy基础配置(二)

    前文我们聊了下haproxy的global配置段中的常用参数的说明以及使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12763245.html:今天我们来 ...

随机推荐

  1. python如何实现类似php的引用赋值

    直接放代码,有注释,就不解析了 # ############################ # 改变一个变量的值,与之有关系的变量的值也会相等变化 # 类似php的引用赋值,宏观来看 # ##### ...

  2. Python中类的定义及使用

    类是一些有共同特征和行为事务事物的抽象概念的总和. 从中可以看出,方法只能使用实例直接调用(无需传self参数),而使用类调用必须传入实例对象: 属性可以使用实例调用,也可以使用类直接调用,因此可以看 ...

  3. scrapy实例:爬取中国天气网

    1.创建项目 在你存放项目的目录下,按shift+鼠标右键打开命令行,输入命令创建项目: PS F:\ScrapyProject> scrapy startproject weather # w ...

  4. Python 标示符和关键字

    标示符 开发人员在程序中自定义的一些符号和名称.标示符是自己定义的,如变量名 .函数名等 标示符的规则 标示符由字母.下划线和数字组成,且数字不能开头   注:python中的标识符是区分大小写的 命 ...

  5. jQuery设置元素的readonly和disabled属性

    jQuery的api中提供了对元素应用disabled和readonly属性的方法,如下: 1.readonly    $('input').attr("readonly",&qu ...

  6. 【PAT】 B1006 换个格式输出整数

    超简单题 //直接将各位分开,分别用for循环输出 #include<stdio.h> int main(){ int num; scanf("%d",&num ...

  7. Windows Live Writer 2012在Blogjava管理和发布博客

    下载Windows Live Writer 2012的完整版本(wlsetup-all.exe),安装的时候减少网络下载消耗的时间.注:有些平台可能还需要下载DotNet3.5(dotnetfx35. ...

  8. lua 编译安装

    官网http://www.lua.org/download.html Building Lua is implemented in pure ANSI C and compiles unmodifie ...

  9. C#中Request.ServerVariables详细说明及代理

    Request.ServerVariables("Url") 返回服务器地址 Request.ServerVariables("Path_Info") 客户端提 ...

  10. 因PHP漏洞,超过4.5万个中国网站被攻击

    因PHP漏洞,超过4.5万个中国网站被攻击 日前据外媒ZDNet了解,超过4.5万个中国网站受到了试图进入网络服务器的不法分子攻击. 此次黑客利用中国网络安全公司VulnSpy在ExploitDB上发 ...