Haproxy+rabbitmq集群搭建

开始找了很多篇关于如何搭建ha+兔子的文章,但是,由于各种的依赖问题,还是回官网看官方文档比较实在。

下面具体说下搭建的麻烦。

由于开始直接EPEL源下载安装erlang,导致安装rabbit时显示erlang版本必须大于某一版本(rabbit是基于erlang底层节点做集群的,依赖erlang),于是从把erlang从14升级到19,发现依旧报错,继续升级到最新21,发现依然报错! 那就意味着 不是erlang的版本问题了。

去官方看手册,发现 官网上有rabbit提供的专门erlang yum库,果断重新编译安装 结果完美解决,看来官方提供的才是亲儿子

官方提供erlang依赖包:https://packagecloud.io/rabbitmq/erlang

安装完成后 输入erl -v 即可显示erlang版本号,证明成功第一步。

rabbit包:https://packagecloud.io/rabbitmq/rabbitmq-server

把rabbit作为开机启动服务

chkconfig rabbitmq-server on

/sbin/service rabbitmq-server start 启动rabbit

/sbin/service rabbitmq-server status 查看rabbit状态

/sbin/service rabbitmq-server stop 停止rabbit

由于rabbit有可视化管理后台,果断开启

rabbitmq-plugins enable rabbitmq_management

开启后会发现默认账号guest无法登陆,因为据网上所说,3.0以上guest账号已经禁止了非localhost的登陆,需要到配置里面进行修改

/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.16/ebin (最好自己添加新账号)

里面红框置空即可,重启rabbit服务

到此已经完成rabbitmq搭建,集群第二台rabbit也重复上述步骤。

rabbitmq集群是基于erlang,erlang节点通过交换Erlang Cookie从而保持通讯。

集群有两种方案

普通模式:集群中各节点有相同的队列结构,但消息只会存在于集群中的一个节点。对于消费者来说,若消息进入A节点的队列中,当从B节点拉取时,rabbit会将消息从A中取出,并经过B发送给消费者。
镜像模式:消息实体会主动在镜像节点间同步,而不是在取数据时临时拉取,高可用;该模式下,mirror queue有一套选举算法,即1个master、n个slaver,生产者、消费者的请求都会转至master。(这种模式也是基于普通模式上进行,而且master挂了后,需要重新选举master,这时来不及确认的可能会重复消费)

本人只搭建普通的集群,过程如下:

首先,假设两台服务器为A,B

修改其hosts /etc/hosts

保证两部服务器通过自己设定的域名能访问

第二步,由于rb的集群是通过erlang集群,而erlang集群基于cookie

所以将A机器的.erlang.cookie(隐藏文件)

scp /var/lib/rabbitmq/.erlang.cookie B机器:/var/lib/rabbitmq/

之后分别启动两台服务器的mq服务

service rabbitmq-server start

在B服务器中停止 mq_app

rabbitmqctl stop_app

将rb加入集群

join_cluster rabbit@B

启动mq_app

rabbitmqctl start

查看状态

rabbitmqctl cluster_status

这时候应该会发现机器集群已经成功。

[root@B rabbitmq]# rabbitmqctl clusterstatus Cluster status of node rabbit@B [{nodes,[{disc,[rabbit@A,rabbit@B]}]}, {runningnodes,[rabbit@A,rabbit@B]},
{cluster_name,<<"rabbit@A">>},
{partitions,[]},
{alarms,[{rabbit@A,[]},{rabbit@B,[]}

打开后台管理界面,这时候

已经可以看到两个节点。

这时候rabbit集群已经成功搭建。

接下来是haproxy

在服务器C上,先下载haproxy源码包

wget http://www.haproxy.org/download/1.8/src/haproxy-1.8.14.tar.gz

解压, 查看linux系统版本号 uname -r

因为编译的时候需要制定版本号

make TARGET=linux3100 (服务器C版本号为31.0.0)

然后制定文件夹安装 make install PREFIX=/data/haproxy

查看ha 是否安装成功 /data/haproxy/sbin/haproxy -v

然后copy文件到默认启动目录下

cp /data/haproxy/sbin/haproxy /usr/sbin/
cp ./examples/haproxy.init /etc/init.d/haproxy

修改vim /etc/sysconfig/rsyslog

加入 local2.* /var/log/haproxy.log

重启 /etc/init.d/rsyslog restart

然后到最重要的部分,因为编译安装并没有默认配置文件,需要自己手动创建

vim /etc/haproxy/haproxy.cfg

配置内容以业务异,这里提供一份比较完整的配置文件

配置关于rb如下

https://blog.csdn.net/freshair_x/article/details/80542481

配置完成后启动ha,打开后台管理页面

可以看到集群都在正常运行.

关于启动命令 建议是haproxy -f /etc/haproxy/haproxy.cfg ,因为使用配置文件启动可以直接显示报错信息

rabbitmq生产、消费端链接IP均指向服务器C

通过rabbit代码测试,生产者消费者均可以通过服务器C进行生产消费。

到此rabbitmq+ha部署完成。 keepalive将在后续应用到的时候补上。

转载于:https://my.oschina.net/bo081220/blog/2874159

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值