RabblitMQ Cluster + HAProxy(负载均衡)

标签: rabblitmq cluster haproxy | 发表时间:2013-07-24 16:24 | 作者:
出处:http://flyingdutchman.iteye.com
        在本节中,我们主要来学习软件负载均衡器HAProxy在RabbitMQ集群中的使用。

        软件负载均衡器HAProxy
        HAProxy的特点是:
        1、HAProxy是支持虚拟主机的,,并能支持上万级别的连接;
        2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
        3、支持url检测后端的服务器出问题的检测会有很好的帮助;
        4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
        5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS,所以我向大家推荐LVS+Keepalived;
        6、能够提供4层,7层代理。HAProxy支持两种主要的代理模式:" tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层( HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量,7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则;
        7、HAProxy的算法现在也越来越多了,具体有如下8种:
             ①roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
             ②static-rr,表示根据权重,建议关注;
             ③leastconn,表示最少连接者先处理,建议关注;
             ④source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注;
             ⑤ri,表示根据请求的URI;
             ⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name;
             ⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
             ⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

         好了,下面我们来开始安装HAProxy:
引用

         # wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
         # chmod +x haproxy-1.4.24.tar.gz
         # tar xzvf haproxy-1.4.24.tar.gz
         # cd haproxy-1.4.24
         //linux2.6 kenel的epoll功能可以提高HAProxy的性能,故在编译是要加上TARGET=linux26或TARGET=generic
         # make TARGET=generic
         # make install
        


         配置RabbitMQ集群的HAProxy
         下面我们开始先来创建rabbitmq集群,详情参看 《在单节点上构建built-in内置集群》,这里不再赘述。
         接下来我们编辑集群的配置文件:
引用

         # mkdir conf
         # touch haproxy-rabbitmq.conf
         # chmod +x haproxy-rabbitmq.conf
         # vi haproxy-rabbitmq.conf
        

         haproxy-rabbitmq.conf配置文件内容如下:
引用

# this config needs haproxy-1.4.24

#logging options
global
        log 127.0.0.1 local0 info
        maxconn 5120
        chroot /opt/haproxy-1.4.24
        uid 99
        gid 99
        daemon
        quiet
        nbproc  2
        pidfile /opt/haproxy-1.4.24/haproxy.pid

#load balancing defaults
defaults
       log        global
       #使用4层代理模式,"mode   http"为7层代理模式
       mode       tcp
       #if you set mode to tcp,then you nust change tcplog into httplog
       option     tcplog
       option     dontlognull
       retries    3
       option redispatch
       maxconn 2000
       contimeout      5s
       clitimeout      120s
       srvtimeout      120s

#front-end IP for consumers and producters
listen rabbitmq_local_cluster 127.0.0.1:5670
       #配置TCP模式
       mode      tcp
       #balance url_param userid
       #balance url_param session_id check_post 64
       #balance hdr(User-Agent)
       #balance hdr(host)
       #balance hdr(Host) use_domain_only
       #balance rdp-cookie
       #balance leastconn
       #balance source  //ip
       #简单的轮询
       balance roundrobin
       #rabbitmq集群节点配置
       server rabbit  127.0.0.1:5672 check inter 5000 rise 2 fall 2
       server rabbit2 127.0.0.1:5674 check inter 5000 rise 2 fall 2
       server rabbit3 127.0.0.1:5676 check inter 5000 rise 2 fall 2

#配置haproxy web监控,查看统计信息
listen private_monitoring :8100
       mode    http
       option  httplog
       stats   enable
       #设置haproxy监控地址为http://localhost:8100/rabbitmq-stats
       stats   uri  /rabbitmq-stats
       stats   refresh 5s
        

       好了到这里就将rabbitmq集群的haproxy配置文件写好了,下面我们来启动haproxy:
引用

       # /opt/haproxy-1.4.24/haproxy -f /opt/haproxy-1.4.24/conf/haproxy-rabbitmq.conf
      

       最后我们打开http://localhost:8100/rabbitmq-stats,看一下监控页面,如果显示出正常就表明已经将HAProxy负载均衡配置好了!

       我们做一个测试,如果将rabbit3这个rabbitmq停掉,那么在HAProxy监控页面就会江浙一变化显示出来,rabbit3这一行就会显示“棕红色”:


      
        
       

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [rabblitmq cluster haproxy] 推荐:

RabblitMQ Cluster + HAProxy(负载均衡)

- - 飞翔的荷兰人
        在本节中,我们主要来学习软件负载均衡器HAProxy在RabbitMQ集群中的使用.         软件负载均衡器HAProxy.         HAProxy的特点是:.         1、HAProxy是支持虚拟主机的,,并能支持上万级别的连接;.         2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;.

Percona XtraDB Cluster 搭配 HAProxy

- - 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY
本篇文章紀錄安裝 Percona XtraDB Cluster (簡稱 PXC) 及搭配 HAProxy 做分散流量系統,其實在業界已經很常看到 HAProxy + MySQL Cluster Database 解決方案,HAProxy 幫您解決負載平衡,並且偵測系統是否存活,管理者也就不用擔心 MySQL 服務是否會掛掉.

小试 MariaDB Galera Cluster

- - raynix 筆記
前些时, 难得老板关注新技术, 哈哈, 我于是有机会尝试一下数据库服务器集群. 什么是 Galera Cluster. 简单的说就是3个或以上的 MariaDB 服务器相互作为镜像. 我按照 Digital Ocean 的指点, 用 AWS 上 3 个虚拟机做了个最小的集群, 下面是我的一些心得(针对 MariaDB 10.0.17):.

Haproxy+KeepAlived 负载均衡

- - CSDN博客系统运维推荐文章
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现. LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. 还可以使用nginx来实现,不过nginx只工作在7层网络之上. 详细请参考 抚琴煮酒写的“ 软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比”这篇文章,简单很详细,很好.

haproxy负载均衡 xtracluster

- - x-marker的博客
上一篇为xtracluster的安装(http://xmarker.blog.163.com/blog/static/226484057201472610520306/),本篇将记录下使用haproxy在三个数据节点做负载均衡,haproxy可以安装在数据节点,也可以安装在别的节点,如果安装在数据节点,需要注意端口号不能和mysql的3306冲突.

MyCat集群部署(HAProxy + MyCat)

- - 行业应用 - ITeye博客
参考实战视频: http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53. 《高可用架构篇--第13节--MySQL源码编译安装(CentOS-6.6+MySQL-5.6)》. 《高可用架构篇--第14节--MySQL主从复制的配置(CentOS-6.6+MySQL-5.6)》.

MariaDB Galera Cluster 10.0.11 发布

- - 开源中国社区最新新闻
MariaDB Galera Cluster 是一个用于同步 MariaDB 数据库的多 master 集群的工具. 在数据方面完全兼容 MariaDB 和 MySQL. MariaDB Galera Cluster 10.0.11 发布,这是一个 Beta 版本,相关链接:.

PostgreSQL Cluster系列教程

- - 数据库 - ITeye博客
PostgreSQL9.1 PITR示例. 本教程是PostgreSQL Cluster系列教程的一部分,该系列包括:. PostgreSQL9.1 PITR示例  (该教程主要阐述DBA如何基于WAL日志做备份恢复). PostgreSQL9.1 Warm-Standby ---之基于拷贝WAL文件的方法 (file-based log shipping).

Redis Cluster理论整理

- - 开源软件 - ITeye博客
Redis 集群的 TCP 端口(Redis Cluster TCP ports). 每个 Redis 集群节点需要两个 TCP 连接打开. 正常的 TCP 端口用来服务客户端,例如 6379,加 10000 的端口用作数据端口,在上面的例子中就是 16379. 第二个大一些的端口用于集群总线(bus),也就是使用二进制协议的点到点通信通道.

HAproxy采用粘滞会话吗?

- - CSDN博客系统运维推荐文章
HAProxy是我们选用的世界一流的负载均衡器,每秒可处理250,000个连接及数万个请求. 不仅功能强大,而且经事实证明,它仍然非常灵活,有强大的记录及监控系统还有很多其它特点. 但是,同其它许多负载均衡器相同的是,HAproxy的主要特点也是:粘滞会话. 这一功能很有用,甚至对于某些系统来说,是必须的,如某些系统的网络服务器会话是不可移动的,即不可在网络服务器之间随机移动会话.