centos7部署rabbitmq集群

先安装单机版

  • 1.关闭防火墙,安装依赖 yum install socat
    如果是刚修改了主机名hostname,需要先重启服务器(或者修改主机名之后立即执行bash命令强制生效),否则安装的mq会绑定之前的主机名,会安装失败。

  • 2.安装erlang
    yum 安装(缺点是版本可能会低)
    https://www.rabbitmq.com/releases/erlang/ 这个网址下面下载最新版安装即可
    erl查看是否安装完成

  • 3.安装rabbitmq-server
    yum安装的版本太低
    http://www.rabbitmq.com/releases/rabbitmq-server到这里下载最新版安装

  • 启动服务
    *systemctl start rabbitmq-server 先启动服务,再做下面的操作,否则报以下错*
    centos7部署rabbitmq集群_第1张图片这是因为启动rabbitmq服务的同时也会启动4369服务(/usr/lib64/erlang/erts-8.0.3/bin/epmd -daemon)

rabbitmq-plugins enable rabbitmq_management  //启用rabbitmq_management服务

可能会报错,这是因为erlang和rabbitmq版本不一致造成的,但目前不影响使用,所以我没处理
centos7部署rabbitmq集群_第2张图片
删除自带的用户,自定义用户

rabbitmqctl delete_user guest    //删除guest用户
rabbitmqctl add_user admin admin  //创建用户并设置密码
rabbitmqctl set_user_tags admin administrator  //设置为管理用户
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"  //设置权限
systemctl enable rabbitmq-server

部署集群

  • 1.先安装好多台单主机的RabbitMQ(一台master,其他slave,启动好服务)比如像上面一样安装三台一样的。
  • 2.修改每一台的主机名和/etc/hosts
    ip 主机名(hostname)
  • 3.同步每个节点Cookie(在master执行)把master上的.erlang.cookie发送到salve上
scp /var/lib/rabbitmq/.erlang.cookie root@slaveip:/var/lib/rabbitmq/

Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信

做完后每台机器都重启一下服务

systemctl restart rabbitmq-server
  • 4.slave节点执行以下命令,加入集群
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@docker(master主机)
rabbitmqctl start_app
  • 5.查看集群
rabbitmqctl cluster_status
  • 6.删除节点:

方法一:
修改每台hosts,把要脱离的那台机器从hosts里删除
在要脱离集群的节点执行:

rabbitmqctl  stop_app
rabbitmqctl  rest
rabbitmqctl  start_app
  • 方法二:

在其他节点执行:(例如删除RMQ_M_154节点)

 rabbitmqctl stop_app
   rabbitmqctl forget_cluster_node rabbit@RMQ_M_154
  • 增加节点

将已有节点的cookies复制到新的节点
在新的节点执行

rabbitmqctl stop_app
rabbitmqctl join_cluster   rabbit@docker(rabbitmq的master节点)
rabbitmqctl start_app
  • RabbitMQ镜像集群配置

尽管我们部署好了普通模式的集群,但因为节点间只同步队列结构并不进行消息的同步,对于一些可靠性要求较高的场景需要对队列中的消息也同步到所以节点。
使用Rabbit镜像功能,需要基于rabbitmq策略来实现,政策是用来控制和修改群集范围的某个vhost队列行为和Exchange行为,在cluster中任意节点启用策略,策略会自动同步到集群节点。
策略的修改可以通过命令也可以通过WEB,如果我是通过WEB来修改的,非常简单。
Pattern:“^” 表示所有匹配所有队列名称。”^log” 是指同步”log”开头的队列名称。
ha-mode:“all”代表同步到所以节点。

centos7部署rabbitmq集群_第3张图片

你可能感兴趣的:(centos7部署rabbitmq集群)