环境准备

服务器IP

服务器

IP

hostname

rabbit-50

192.168.86.50

node0

rabbit-51

192.168.86.51

node1

rabbit-52

192.168.86.52

node2

单机模式部署

  1. 根据服务器的内核下载对应的 Erlang 版本、rabbitmq 的版本,并且将两个文件上传到服务器 /opt 目录下
    uname -r
    rabbitmq单机部署、集群部署_rabbitmq
  2. 安装依赖 socat、logrorate
    yum install socat logrotate -y
  3. 安装依赖 Erlang
    cd /opt #进入上传目录 rpm -ivh erlang-23.3.4.4-1.el7.x86_64.rpm
  4. 安装 rabbitmq
    rpm -ivh rabbitmq-server-3.8.19-1.el7.noarch.rpm
  5. 设置开机自启动
    chkconfig rabbitmq-server on
  6. 安装rabbitmq_management 插件用于前台管理
    rabbitmq-plugins enable rabbitmq_management
  7. 创建一个超级管理员用户,并且赋权
    rabbitmqctl add_user root s3crEt rabbitmqctl set_user_tags root administrator rabbitmqctl set_permissions --vhost '/' root '.*' '.*' '.*'
  8. 启动、停止、查看状态
    /sbin/service rabbitmq-server status #查看状态 /sbin/service rabbitmq-server start #启动 /sbin/service rabbitmq-server stop #停止
  9. 前台浏览器访问 http://localhost:15672

集群模式部署

  1. 修改三台机器的主机名称: vi /etc/hostname
  2. 配置各个节点的hosts文件,让各个节点能够互相识别对方: vi /etc/host
    192.168.86.50 node0 192.168.86.51 node1 192.168.86.52 node2
  3. 重启服务器
  4. 按照单机模式部署的步骤,每台机器从第1步执行到第6步结束
  5. 确保每个服务器的 erlang.cookie 文件使用的是同一个值,在node0执行以下命令:
    scp /var/lib/rabbitmq/.erlang.cookie root@node1:/var/lib/rabbitmq/.erlang.cookie scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie
  6. 启动 rabbitmq 服务,在三台机器上执行以下命令
    systemctl start rabbitmq-server
  7. 在 node1 执行以下命令
    rabbitmqctl join_cluster rabbit@node0 rabbitmqctl start_app
  8. 在node2执行以下命令
    rabbitmqctl join_cluster rabbit@node1 rabbitmqctl start_app
  9. 查看集群状态
    rabbitmqctl cluster_status
  10. 创建用户及赋权
    rabbitmqctl add_user admin 123 #创建用户 rabbitmqctl set_user_tags admin administrator #设置用户角色 rabbitmqctl set_permissions -p '/' admin '.*' '.*' '.*' #设置用户权限
  11. 随便打开一个节点的管理界面查看集群状态:
    rabbitmq单机部署、集群部署_单机模式_02

常见问题

  1. 如何解除集群节点?
    #node1 上执行 rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app rabbitmqctl cluster_status #node0 上执行 rabbitmqctl forget_cluster_node rabbit@node1


-- 整理于网络,加上自己的理解,大家一起学习,进步就好