1. 部署Erlang

1.1 RabbitMQ依赖于Erlang,版本对应请查看

https://www.rabbitmq.com/which-erlang.html

1.2 下载安装Erlang

# 添加epel扩展源
yum install epel-release # 先删除可能存在的erlang(非必须)
yum list erlang
yum remove erl* # 清空和更新安装源(非必须)
yum clean
yum update # 参考 https://github.com/rabbitmq/erlang-rpm -> Erlang 21.x -> o use Erlang 21.x on CentOS 6
# 配置安装源
vim /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/6
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=0 # 安装
yum install erlang
# 如果出现https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/6/repodata/repomd.xml: [Errno 14] problem making ssl connection 悲伤,仓库过期了
# 到https://github.com/rabbitmq/erlang-rpm/releases下载(电脑龟速,夸克下载飞速)

1.3 测试Erlang

# 查看版本
erl -v # 退出Erlang 注意尾部的 .
halt().

2. 安装RabbitMQ

2.1 下载 npm 安装包:

rabbitmq-server-3.8.0-1.el6.noarch.rpm

2.3 创建rabbitmq目录并上传npm安装包

cd /usr/local
mkdir rabbitmq
chmod 777 -R rabbitmq

2.4 上传安装包至rabbitmq文件夹内

2.5 进入rabbitmq文件夹 下载签名并安装

cd rabbitmq
# 已有安装包时下载签名
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
# 安装
yum install rabbitmq-server-3.8.0-1.el6.noarch.rpm

2.5 启动mq

# 添加开机启动RabbitMQ服务
chkconfig rabbitmq-server on
# 手动启动服务
service rabbitmq-server start

2.6 配置MQ

# 查看当前所有用户
rabbitmqctl list_users # 查看默认guest用户的权限
rabbitmqctl list_user_permissions guest # 由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户
rabbitmqctl delete_user guest # 添加新用户
rabbitmqctl add_user username password # 设置用户tag
rabbitmqctl set_user_tags username administrator # 赋予用户默认vhost的全部操作权限
rabbitmqctl set_permissions -p / username ".*" ".*" ".*" # 查看用户的权限
rabbitmqctl list_user_permissions username

2.7 添加插件

# 添加web管理插件
rabbitmq-plugins enable rabbitmq_management # 添加移除异常消息的插件
rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management # 下载延迟队列插件rabbitmq_delayed_message_exchange,得到ez文件
# mq插件位置/usr/lib/rabbitmq/lib/rabbitmq_server/plugins
# 下载网站 https://www.rabbitmq.com/community-plugins.html
rabbitmq-plugins enable rabbitmq_delayed_message_exchange # 添加成功后访问 http://ip地址:15672

2.8 编辑远程连接权限

vim /etc/rabbitmq/rabbitmq.config

2.9 追加以下内容,lucky为允许远程连接的用户

[

{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["username"]}]}

].

2.10 重启rabbitMQ

rabbitmqctl stop
rabbitmq-server restart
# 排查错误指令
systemctl status rabbitmq-server.service

2.11 访问http://IP地址:15672 进行管理

3.集群配置

3.1 Erlang通过erlang.cookie进行集群配置,配置RabbitMQ集群模式时需要各节点erlang.cookie内容一致

# 修改服务器配置 (.erlang.cookie只读)
vim /var/lib/rabbitmq/.erlang.cookie # 复制到其他节点
scp /var/lib/rabbitmq/.erlang.cookie root@10.104.132.37:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@10.104.132.209:/var/lib/rabbitmq/.erlang.cookie # 未获取root密码情况下 需要更改权限,记得改回来
chmod 777 /var/lib/rabbitmq/.erlang.cookie
vim /var/lib/rabbitmq/.erlang.cookie
# 将两文件修改成一致后,改回原权限
chmod 400 /var/lib/rabbitmq/.erlang.cookie

3.2 使用 -detached 参数运行各节点

rabbitmqctl stop
rabbitmq-server -detached

3.3 修改主机的hostname和hosts

# 将HOSTNAME=ttt6-node35 确保两个服务器不一致
vim /etc/sysconfig/network
# 修改hosts
vim /etc/hosts

hosts内容需要和hostname保持一致 :举例

10.104.132.35     ttt6-node35
10.104.114.116 ttt6-node116

3.4 重启时配置生效,大约需要两分钟

reboot

3.5 在从服务器上执行下列语句加入集群

# 停止程序
rabbitmqctl stop_app
# 加入到集群,默认为磁盘节点
# 加入为内存节点 加-ram参数 如:rabbitmqctl join_cluster --ram rabbit@ttt6-node35
rabbitmqctl join_cluster rabbit@ttt6-node35
rabbitmqctl start_app

若出现 rabbitmqctl 指令执行不成功

检查Erlang cookie hash值是否一致,不一致重复3.1,注意空行

若一致,则可能是插件或者rabbitmq本身未启动

service rabbitmq-server start
rabbitmqctl start_app

3.6 查看集群搭建结果

 rabbitmqctl cluster_status

3.7 配置镜像队列模式,即队列会被复制到各个节点,各个节点状态保持一致,高可用

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

Linux 部署 rabbitMQ集群的更多相关文章

  1. RabbitMQ系列(五)使用Docker部署RabbitMQ集群

    概述 本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘. Windows10上Docker的安装 因为本人用的是Win ...

  2. Docker swarm结合Openresty部署rabbitmq集群

    Docker swarm结合Openresty部署rabbitmq集群 大家好,年底了,年味儿越来越浓了.2019年的寒冬被定义为未来10年中最好的一年,对于这一说法悲观的人和乐观的人的理解是不一样的 ...

  3. k8s集群部署rabbitmq集群

    1.构建rabbitmq镜像 RabbitMQ提供了一个Autocluster插件,可以自动创建RabbitMQ集群.下面我们将基于RabbitMQ的官方docker镜像,添加这个autocluste ...

  4. Docker环境下的前后端分离项目部署与运维(八)使用Docker部署RabbitMQ集群

    下载RabbitMQ镜像 镜像地址RabbitMQ Docker官方认证镜像地址:https://hub.docker.com/_/rabbitmq 安装命令安装之前,切记把Docker Hub设置为 ...

  5. docker部署rabbitmq集群

    docker版本:18.09.6 或以上 rabbitmq镜像版本:rabbitmq:3.9.5-management 一.拉镜像: docker pull rabbitmq:3.9.5-manage ...

  6. CentOS 部署RabbitMQ集群

    1. 准备两台CentOS,信息如下: node1:10.0.0.123 node2:10.0.0.124 修改hostname请参照: $ hostname # 查看当前的hostname $ ho ...

  7. Linux 部署redis集群

    下载Redis 下载网址 http://www.redis.cn/download.html Redis需要gcc环境(如果已经有该环境跳过此步骤) yum install gcc-c++ 安装Red ...

  8. openstack(2) -------RabbitMQ集群部署

    一.RabbitMQ简介 RabbitMQ属于一个流行的开源消息队列系统.属于AMQP( 高级消息队列协议 ) 标准的一个 实现.是应用层协议的一个开放标准,为面向消息的中间件设计.用于在分布式系统中 ...

  9. RabbitMQ系列(六)你不知道的RabbitMQ集群架构全解

    前言 本文将系统的介绍一下RabbitMQ集群架构的特点.异常处理.搭建和使用中要注意的一些细节. 知识点 一.为什么使用集群? 二.集群的特点 三.集群异常处理 四.集群节点类型 五.集群搭建方法 ...

随机推荐

  1. MySQL数据库~~~~~锁和事务

    一 锁 innodb存储引擎默认是行级锁 行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的.由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,能够给予 ...

  2. 拷贝本地文件到docker容器内部

    #复制本地目录的xxx到镜像内部并且为xxx docker cp /home/xxx targetImage:/home/xxx

  3. 《HTTPS权威指南》读书笔记——SSL/TLS协议

    记录协议(record protocol) 负责在传输连接上交换所有底层信息 每一条记录以短标头开始,标头包含记录内容的类型.协议版本和长度 握手协议(handshake protocol) 整个过程 ...

  4. leetcode-10

    给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的 ...

  5. Java之ssh框架spring配置文件配置定时任务

    最近做了一个数据同步功能,要求晚上0点去定时同步数据,这是个老项目框架用的ssh,定时任务基于quartz,废话不多说,下面详细说说相关配置. 在spring的配置文件中: <!-- 0点定时任 ...

  6. Latex学习与使用

    Table of Contents Latex学习与使用 简介 文档结构 排版 表格 图片 公式 索引 简介 Latex(发音lay-tek)是一个用来产生专业文档的系统,但它并不是一个单词处理器.它 ...

  7. Change Field Layout and Visibility in a List View 在列表视图中更改字段布局和可见性

    This lesson will guide you through the steps needed to select columns displayed in the List View. Fo ...

  8. 选择企业架构实践公开课的指导?TOGAF+ArchiMate+BangEA,EA工作者必学一门公开课

    我发现身边越来越多人谈数字化.谈企业架构,但是感觉谈的总是IT?知道好像不对,但是又好像也无法告诉别人这和传统的IT架构有什么不一样?网上找资料,看了很多也摸不到门路,也不知道别人讲的对不对.对了还好 ...

  9. 关于vue-detools chorme创建安装完成,但是控制台不显示问题

    搜了一下发现挺多人遇到这个问题的,绝大多数的回答都是在main.js中添加下面代码 Vue.config.devtools = true; 但是发现并不行. 后来看到有人说刷新然后在按F12就好了,居 ...

  10. ES6-数字操作,判断是否是整数,判断最大值最小值

    S中只有一种类型数,即64位(1bit 的符号位,11bits 的指数部分 ,以及52bits 的小数部分)双精度浮点数,当整数数值过大时,就会发生精度丢失. 所谓安全整数即能够唯一确定的数字,即能够 ...