RabbitMq集群搭建
RabbitMq有三种模式且集群模式仅2种:
单一模式:即单机情况不做集群,就单独运行一个rabbitmq而已。
普通模式:默认模式,以两个节点(rabbit_A、rabbit_B)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit_A(或者rabbit_B),rabbit_A和rabbit_B两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit_A节点的Queue后,consumer从rabbit_B节点消费时,RabbitMQ会临时在rabbit_A、rabbit_B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连rabbit_A或rabbit_B,出口总在rabbit_A,会产生瓶颈。当rabbit_A节点故障后,rabbit_B节点无法取到rabbit_A节点中还未消费的消息实体。如果做了消息持久化,那么得等rabbit_A节点恢复,然后才可被消费;如果没有持久化的话,就会产生消息丢失的现象。
镜像模式:把需要的队列做成镜像队列,存在与多个节点属于RabbitMQ的HA方案。该模式解决了普通模式中的问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取。该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。所以在对可靠性要求较高的场合中适用。
一、RabbitMq环境安装
a.准备至少两台以上windowsserver服务器eg:【IP:192.168.1.62 , IP:192.168.1.79】最好内网环境下
b.下载otp_win64_20.1与rabbitmq-server安装包【下载地址:http://www.rabbitmq.com/install-windows.html】
c.先安装otp_win64_20.1再安装rabbitmq-server
二、配置环境变量
a.添加系统环境变量 ERLANG_HOME
b.添加系统环境变量Path 值%ERLANG_HOME%\bin
三、运行CMD;查看【erl】是否安装成功
四、安装rabbitmq-server
a.点击rabbitmq-server.exe 下一步下一步直到完成
b.启用Dos窗体运行rabbitmq-plugins enable rabbitmq_management命令进行安装Rabbitmq服务
五、运行http://localhost:15672/ 默认帐号:guest 密码:guest
进入系统后添加自定义帐号和密码 分配administrator权限
六、搭建RabbitMQ集群环境
a.绑定ip计算机名称 (C:\Windows\System32\drivers\etc)
b.打开"C:\Users\Administrator\AppData\Roaming\RabbitMQ"路径在改路径下创建环境变量文件'rabbitmq-env.conf'
NODENAME=rabbit@PC-201501051139
NODE_IP_ADDRESS=192.168.1.62
NODE_PORT=5672
RABBITMQ_MNESIA_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\db
RABBITMQ_LOG_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\log
c.关闭【服务器192.168.1.62】与【服务器192.168.1.79】中的RabbitMQ服务并统一erlang cookie;Erlang cookie就是/var/lib/rabbitmq/.erlang.cookie这个文件中的内容。
将【服务器192.168.1.62】的erlang cookie复制到【服务器192.168.1.79】节点中 覆盖位置【C:\Windows和C:\Users\Administrator】并设置对应文件权限【目前我使用的everyone未发现其问题】
d.设置Rabbitmq服务登录帐号
七、集群搭建将【192.168.1.79】的nods添加到【192.168.1.62】中
打开[192.168.1.79]电脑 配置环境变量找到RabbitMQ的安装目录,本实例为"C:\RabbitMq8879\RabbitMq\rabbitmq_server-3.7.6\sbin"。将"C:\RabbitMq8879\RabbitMq\rabbitmq_server-3.7.6"添加到Path中(或者你不配置环境变量直接cd到安装目录的sbin文件下也是可以的)
输入命令
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@PC-201501051139
rabbitmqctl start_app
验证在两台虚拟机下控制台下输入rabbitmqctl cluster_status如看到类似图片则搭建成功