一个集技术与才华于一身的95后小鲜肉,为你分享rabbitmq集群操作手法

关于作者

在rabbitmq集群操作或者搭建的时候,常常会因为对于集群的不熟练而导致各种异常错误,常见的有绑定了浮动ip没有绑定实体ip导致,页面上操作mq完全没有问题,但是一到程序操作就出现问题,我们一起来学习下,rabbitmq集群的正确操作

  • 一、rabbitmq集群必要条件
    • 1.1. 绑定实体ip,即ifconfig所能查询到的绑定到网卡上的ip,以下是绑定方法
    • 1.2. 配置域名映射到实体ip
  • 二、启动停止
    • 2.1 停止
    • 2.2 启动
  • 三、重建集群
    • 3.1 使用2.1方法停止所有机器
    • 3.2 移除rabbitmq配置记录与存储文件
    • 3.3 按2.2方法启动所有机器
    • 3.4 停止被加入集群节点app
    • 3.5 建立集群
    • 3.6 启动集群
    • 3.7 检查集群状态
    • 3.8 添加集群配置 (见第四)
  • 四 添加集群配置
    • 4.1 创建用户
    • 4.2 打开15672网页管理端,访问mq
    • 4.3 在底部导入.json后缀的配置文件即可

以下操作都以三节点集群为例,机器名标记为机器A、机器B、机器C,如果为双节点忽略机器C,如果为各多节点则与机器C操作相同

一、rabbitmq集群必要条件

1.1. 绑定实体ip,即ifconfig所能查询到的绑定到网卡上的ip,以下是绑定方法

#编辑配置路径 /etc/rabbitmq/rabbitmq-env.confNODE_IP_ADDRESS=172.16.136.133

1.2. 配置域名映射到实体ip

#配置文件1所在路径 /etc/rabbitmq/rabbitmq.config (如果是集群,每台机器都需要修改这个绑定本机实体ip)#其中rabbit@master是创建集群时所配置的参数,@后面的参数为主机名,示例中为master[    {rabbit, [    {cluster_nodes, {['rabbit@master'], disc}},    {cluster_partition_handling, ignore},    {default_user, <<"guest">>},    {default_pass, <<"guest">>},    {tcp_listen_options, [binary,        {packet, raw},        {reuseaddr, true},        {backlog, 128},        {nodelay, true},        {exit_on_close, false},        {keepalive, true}]}    ]},    {kernel, [        {inet_dist_listen_max, 44001},        {inet_dist_listen_min, 44001}    ]}].
#配置文件2 所在路径 /etc/hosts (如果是集群,每台机器都需要修改这个绑定本机实体ip,而且hosts文件的映射不得重复,如果重复linux系统为以最下面一条记录为准)172.16.136.133 master172.16.136.134 venus172.16.136.135 venus2

二、启动停止

2.1 停止

#机器Aservice rabbitmq stopepmd -kill#机器Bservice rabbitmq stopepmd -kill#机器Cservice rabbitmq stopepmd -kill

2.2 启动

#机器Aservice rabbitmq start#机器Bservice rabbitmqstart#机器Cservice rabbitmqstart

三、重建集群

3.1 使用2.1方法停止所有机器

3.2 移除rabbitmq配置记录与存储文件

#位于 /var/lib/rabbitmq/mensiamv /var/lib/rabbitmq/mensia /var/lib/rabbitmq/mensia.bak

3.3 按2.2方法启动所有机器

3.4 停止被加入集群节点app

比如A、B、C三台机器,将B和C加入到A中去,需要执行以下命令

#机器Brabbitmqctl stop_app#机器Crabbitmqctl stop_app

3.5 建立集群

注意此处master为唯一没有执行 rabbitmqctl stop_app的机器

#机器Brabbitmqctl join_cluster rabbit@master#机器Crabbitmqctl join_cluster rabbit@master

3.6 启动集群

#机器Brabbitmqctl start_app#机器Crabbitmqctl start_app

3.7 检查集群状态

在任意一台机器上执行 rabbitmqctl cluster_status命令即可检查,输出包含集群中的节点与运行中的节点,兼以主机名标志

3.8 添加集群配置 (见第四)

四 添加集群配置

4.1 创建用户

例子中创建了两个用户 添加用户 add_user,设置角色 set_user_tags,添加rabbitmq虚拟主机 add_vhost,设置访问权限 set_permissions,以下是详细用法

    # 创建第一个用户    /usr/sbin/rabbitmqctl add_user 用户名 密码    /usr/sbin/rabbitmqctl set_user_tags 用户名 administrator    /usr/sbin/rabbitmqctl set_permissions -p /  用户名 ".*" ".*" ".*"    # 创建第二个用户    /usr/sbin/rabbitmqctl add_user 用户名2 密码    /usr/sbin/rabbitmqctl set_user_tags 用户名2 management     /usr/sbin/rabbitmqctl add_vhost sip_ext     /usr/sbin/rabbitmqctl set_permissions -p sip_ext 用户名2 '.*' '.*' '.*' 
备注:RabbitMQ 虚拟主机,RabbitMQ 通过虚拟主机(vhost)来分发消息。拥有自己独立的权限控制,不同的vhost之间是隔离的,单独的。权限控制的基本单位:vhost。用户只能访问与之绑定的vhost。vhost是AMQP中唯一无法通过协议来创建的基元。只能通过rabbitmqctl工具来创建。 

4.2 打开15672网页管理端,访问mq

/usr/sbin/rabbitmq-plugins enable rabbitmq_management

4.3 在底部导入.json后缀的配置文件即可

如果覆盖了用户需要使用以下命令修改mq用户密码 /usr/sbin/rabbitmqctl change_password用户名密码

更多技术文章,请点击底部阅读原文,或复制链接https://pzqu.github.io/到浏览器,和作者讨论更多技术问题~

悄悄讲个内幕

生活不易   多才多艺

(鞠躬)

原文发布于微信公众号 - 腾讯云TStack(gh_035269c8aa5f)

原文发表时间:2018-08-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zaking's

走近webpack(2)--css打包及压缩js

  前面的文章介绍了webpack的devServer以及多入口多出口文件的配置,咱们继续往下学。   在开始学习接下来的知识之前,我们先回顾一下,前文提到了w...

5168
来自专栏青青天空树

tomcat远程调试javaweb

  当把一个本地项目部署到远程服务器后有可能出现意想不到错误,这个时候通过远程调试能够更清楚的找到bug所在位置。

6521
来自专栏积累沉淀

linux目录结构介绍

linux目录结构介绍 ? "/" :Linux文件系统的入口.也是最高一级的目录. "/bin":基本系统所需要的命令,功能和"/usr/bin...

2179
来自专栏大大的微笑

Java线程池

       概述:         线程池,从字面含义来看是管理同一组同构工作线程的资源池。线程池与工作队列是密切相关的, 工作队列保存了所有等待执行的...

2336
来自专栏腾讯移动品质中心TMQ的专栏

Jest基本使用方法以及mock技巧介绍

Jest是由Facebook开发并维护的一套js的单元测试框架,之前在后台的nodejs项目里面第一次尝试使用,感觉还是非常容易上手的,功能也比较强大。

1.1K5
来自专栏黑白安全

缓冲区溢出说明:基础知识

软件中最常见和最古老的安全漏洞之一是缓冲区溢出漏洞。从操作系统到客户端/服务器应用程序和桌面软件的各种软件都会出现缓冲区溢出漏洞。这通常是由于编程错误以及应用程...

1391
来自专栏IMWeb前端团队

windows 上优雅的安装 node 和 npm

我一直觉得我掌握的这份优雅是被许多人所知道了,直到我发现小伙伴们都下载 .msi 来装 node ,我心中的优雅感终于压制不住。 .msi 安装 windows...

2147
来自专栏xingoo, 一个梦想做发明家的程序员

Oozie分布式工作流——Action节点

前篇讲述了下什么是流控制节点,本篇继续来说一下什么是 Action Nodes操作节点。Action节点有一些比较通用的特性: Action节点是远程的 ...

2316
来自专栏游戏杂谈

解决IE中图片缓存的问题

遇到一件很奇怪的事情:假设有两张图片1.jpg、3.jpg,他们同时放在一个目录下(创建时间一样),后来发现这两张图片的名称命名反了,也就是1.jpg实际应该命...

2863
来自专栏PHP技术大全

Grafana+prometheus+php 自动创建监控图

在grafana+ prometheus+php 监控系统实践文章当中已经实现了我们的第一个监控图表,现在我们有了一个新需求,需要对多个节点实现不同的监控,以及...

3713

扫码关注云+社区

领取腾讯云代金券