原文:https://www.sunjianhua.cn/archives/centos-rabbitmq.html

一、RabbitMQ 单节点

1.1、Windows 版安装配置

1.1.1 安装Erlang环境

下载地址: http://www.erlang.org/downloads
文件: http://erlang.org/download/otp_win64_20.3.exe

安装: 一直下一步安装结束!
1.1.2 安装RabbitMQ
默认安装:https://www.rabbitmq.com/install-windows.html
文件:https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.5/rabbitmq-server-3.7.5.exe

安装:一直下一步安装结束!

1.1.3 配置管理插件

A.开始菜单出搜索rabbitmq,打开RabbitMQ Command Prompt命令行

B.启动管理插件
https://www.rabbitmq.com/rabbitmq-plugins.8.html

C.访问RabbitMQ管理地址:http://127.0.0.1:15672,默认密码:guest/guest

1.1.4 开启关闭服务

1.2、Linux CE 版 (centos7 )

系统:CentOS Linux release 7.4.1708
地址:192.168.2.113

1.2.1 安装Erlang环境
http://www.rabbitmq.com/install-rpm.html
https://www.erlang-solutions.com/resources/download.html

> wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
> rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
> rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
> yum install epel-release -y
> sudo yum install erlang #验证:终端输入 erl ,出现如下图,安装成功!

1.2.2 安装RabbitMQ
https://www.rabbitmq.com/install-rpm.html

#安装:
> wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.5/rabbitmq-server-3.7.5-1.el7.noarch.rpm > rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc > yum install rabbitmq-server-3.7.5-1.el7.noarch.rpm #开机启动:
> systemctl enable rabbitmq-server.service #启动:
> systemctl start rabbitmq-server.service #停止:
> systemctl stop rabbitmq-server.service #查看状态:
> systemctl status rabbitmq-server.service

1.2.3 配置管理插件

#A.开启插件
> rabbitmq-plugins enable rabbitmq_management #B.添加用户 > sudo rabbitmqctl add_user admin 123456
> sudo rabbitmqctl set_user_tags admin administrator
> sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" #C.重启查看 > systemctl restart rabbitmq-server.service #关闭防火墙:
管理地址: http://192.168.2.113:15672/


1.2.4 卸载

> yum erase rabbitmq-server -y
> rm -rf /var/lib/rabbitmq/
> rm -rf /etc/rabbitmq

二、RabbitMQ 集群

https://www.rabbitmq.com/clustering.html

系统:CentOS Linux release 7.4.1708
192.168.2.113 hostname host01 存储方式是Disk 硬盘
192.168.2.114 hostname host02 存储方式是RAM 内存
192.168.2.115 hostname host03 存储方式是Disk 硬盘

2.1、安装

三台服务器同时安装Linux CE版,同单机方式

2.2、配置

2.2.1 设置hosts

> vi /etc/hosts

192.168.2.113 host01
192.168.2.114 host02
192.168.2.115 host03

如下图:

2.2.2 统一使用erlang.cookie

> scp -r /var/lib/rabbitmq/.erlang.cookie  rabbitmq02:/var/lib/rabbitmq/.erlang.cookie
> scp -r /var/lib/rabbitmq/.erlang.cookie rabbitmq03:/var/lib/rabbitmq/.erlang.cookie

2.2.3 重启三个rabbitmq-server

> systemctl restart rabbitmq-server

查看日志:

2.2.4 创建集群

将rabbit@host02和rabbit@host03节点加入rabbit@host01

#在host02执行:
> rabbitmqctl stop_app
> rabbitmqctl join_cluster --ram rabbit@host01
> rabbitmqctl start app

#在host03执行:
> rabbitmqctl stop_app
> rabbitmqctl join_cluster --ram rabbit@host01
> rabbitmqctl start app

#然后在host01上查看集群:
> rabbitmqctl cluster_status

#设置镜像策略:
> rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

2.2.4 设置管理员

# 在host01上面设置管理员:
> sudo rabbitmqctl add_user root 123456
> sudo rabbitmqctl set_user_tags root administrator
> sudo rabbitmqctl set_permissions -p / root ".*" ".*" ".*"

打开一下任意地址:
http://192.168.2.113:15672
http://192.168.2.114:15672
http://192.168.2.115:15672

都可以登录

2.3、常见命令

2.3.1 服务启动关闭
启动:systemctl start rabbitmq-server
重启:systemctl restart rabbitmq-server
关闭:systemctl stop rabbitmq-server
2.3.2 集群配置相关命令
停止节点:rabbitmqctl stop_app 
重置节点:rabbitmqctl reset 
将当前节点加入集群:rabbitmqctl join_cluster {rabbit_node_name}
集群状态:rabbitmqctl cluster_status 
从当前节点剔除节点:rabbitmqctl forget_cluster_node {rabbit_node_name} 2.3.3 插件管理
查看插件列表: rabbitmq-plugins list
开启某个插件: rabbitmq-plugins enable {插件名} 
关闭某个插件: rabbitmq-plugins disable {插件名} 2.3.4 用户管理 添加用户:rabbitmqctl add_user {username} {password} 
删除用户:rabbitmqctl delete_user {username} 
修改密码:rabbitmqctl change_password {username} {newpassword} 
设置用户角色:rabbitmqctl set_user_tags {username} {tag} 
tag可以为administrator, monitoring, management 
举例: 
rabbitmqctl add_user root 123456
rabbitmqctl set_user_tags root administrator 
rabbitmqctl list_users 2.3.5 权限管理 权限设置:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read} 
    conf:一个正则表达式match哪些配置资源能够被该用户访问。 
    write:一个正则表达式match哪些配置资源能够被该用户读。 
    read:一个正则表达式match哪些配置资源能够被该用户访问。
查看(指定vhost)所有用户的权限信息:rabbitmqctl list_permissions [-p vhostPath] 
查看指定用户的权限信息:rabbitmqctl list_user_permissions {username} 
清除用户的权限信息: rabbitmqctl clear_permissions [-p vhostPath] {username}
举例: 
rabbitmqctl set_permissions -p / root “.*” “.*” “.*” 2.3.6 获取服务器状态信息 服务器状态:rabbitmqctl status 
队列信息: rabbitmqctl list_queues [-p vhostpath] [queueinfoitem …] 
queueinfoitem可以为: name, durable, auto_delete, arguments, messages_ready, messages_unacknowled, messages, consumers, memory.
Exchange信息: rabbitmqctl list_exchanges [-p vhostpath] [exchangeinfoitem …] 
exchangeinfoitem有:name, type, durable, auto_delete, internal, arguments.
Binding信息:rabbitmqctl list_bindings [-p vhostpath] [bindinginfoitem …] 
bindinginfoitem有:source_name, source_kind, destination_name, destination_kind, routing_key, arguments.等
connection信息:rabbitmqctl list_connections [connectioninfoitem …] 
connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。
channel信息:rabbitmqctl list_channels [channelinfoitem …] 
channelinfoitem有:consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked
举例: 
rabbitmqctl list_queues name messages_ready pid slave_pids 2.3.7 更改节点类型 rabbitmqctl stop_app 
rabbitmqctl change_cluster_node_type disc 
或 
rabbitmqctl change_cluster_node_type ram 
rabbitmqctl start_app 2.3.8 vhost管理 添加vhost: rabbitmqctl add vhost {name} 
删除vhost: rabbitmqctl delete vhost {name}
2.3.9 镜像队列的设置 镜像队列的配置通过添加policy完成,policy添加的命令为: 
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority] 
-p Vhost: 可选参数,针对指定vhost下的queue进行设置 
Name: policy的名称 
Pattern: queue的匹配模式(正则表达式) 
Definition: 镜像定义,包括三个部分 ha-mode,ha-params,ha-sync-mode 
    ha-mode: 指明镜像队列的模式,有效值为 all/exactly/nodes 
        all表示在集群所有的节点上进行镜像 
        exactly表示在指定个数的节点上进行镜像,节点的个数由ha-params指定 
        nodes表示在指定的节点上进行镜像,节点名称通过ha-params指定 
    ha-params: ha-mode模式需要用到的参数 
    ha-sync-mode: 镜像队列中消息的同步方式,有效值为automatic,manually 
Priority: 可选参数, policy的优先级
例如,对队列名称以hello开头的所有队列进行镜像,并在集群的两个节点上完成镜像,policy的设置命令为: 
rabbitmqctl set_policy hello-ha “^hello” ‘{“ha-mode”:”exactly”,”ha-params”:2,”ha-sync-mode”:”automatic”}’

三、RabbitMQ 附录

3.1 参考文档
http://www.rabbitmq.com/getstarted.html
https://github.com/rabbitmq/rabbitmq-server
http://www.rabbitmq.com/install-rpm.html
https://www.rabbitmq.com/clustering.html
https://blog.csdn.net/jackliu16/article/details/79972121
https://blog.csdn.net/jinyidong/article/details/80003362
http://www.cnblogs.com/lylife/p/5584019.html
https://github.com/rabbitmq/erlang-rpm
https://www.erlang-solutions.com/resources/download.html
http://www.rabbitmq.com/which-erlang.html
http://www.dahouduan.com/2017/11/22/centos6-yum-install-rabbitmq/
https://blog.csdn.net/happyzwh/article/details/53008803

CentOS RabbitMQ 高可用(Mirrored)的更多相关文章

  1. RabbitMQ学习系列(六): RabbitMQ 高可用集群

    前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...

  2. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  3. Linux源码安装RabbitMQ高可用集群

    1.环境说明 linux版本:CentOS Linux release 7.9.2009 erlang版本:erlang-24.0 rabbitmq版本:rabbitmq_server-3.9.13 ...

  4. centos HA高可用集群 heartbeat搭建 heartbeat测试 主上停止heartbeat服务 测试脑裂 两边都禁用ping仲裁 第三十二节课

    centos   HA高可用集群  heartbeat搭建 heartbeat测试  主上停止heartbeat服务  测试脑裂  两边都禁用ping仲裁  第三十二节课 heartbeat是Linu ...

  5. RabbitMQ高可用镜像队列

    ## RabbitMQ高可用镜像队列 在分布式系统中,通常使用多个术语来标识主要副本和辅助副本.本指南通常使用"主"来引用队列的主要副本,而对于辅助副本则使用"镜像&qu ...

  6. RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群

    本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...

  7. RabbitMQ高可用方案总结

    RabbitMQ的集群方案有以下几种: 1.普通的集群 exchange,buindling再所有的节点上都会保存一份,但是queue只会存储在其中的一个节点上,但是所有的节点都会存储一份queue的 ...

  8. CentOS7实现RabbitMQ高可用集群

    CentOS安装RabbitMQ集群 1.有3台已安装RabbitMQ的机器 192.168.38.133 rabbitmq1 192.168.38.137 rabbitmq2 192.168.38. ...

  9. rabbitMQ高可用

    镜像模式 镜像模式和普通模式的区别就是,队列的数据都镜像了一份到所有的节点上.这样任何一个节点失效,不会影响整个集群的使用. 在实现上,mirror queue内部有一套选举算法,会选出一个maste ...

随机推荐

  1. centos6.5环境DNS-本地DNS主从服务器bind的搭建

    centos6.5环境DNS-本地DNS主从服务器bind的搭建 在上一篇博客中我已经搭建好了一个本地DNS服务器,能够实现正向反向解析,那么我们只需要加入一台从DNS服务器即可完成,我们来开始配置主 ...

  2. 使用crontab命令添加计划任务

    Ubuntu 16.04, 计划任务 就是 有(时间)计划地执行(做)任务,有计划 包括 定时执行(在哪些时间点执行任务).按照周期执行(每隔多少时间执行任务). 那么,什么是任务呢?就是 自己想要干 ...

  3. keyspace notification(键空间通知)-待验证

    一.需求分析: 设置了生存时间的Key,在过期时能不能有所提示? 如果能对过期Key有个监听,如何对过期Key进行一个回调处理? 如何使用 Redis 来实现定时任务? 二.序言: 本文所说的定时任务 ...

  4. JAVA随笔(一)

    数组变量是数组的管理者,而不是拥有者.数组变量的比较,是判断它们是否管理同一个数组.将一个数组变量赋值给 另一个数组变量并不产生新的数组.想产生新的数组只能通过new来完成. 同样,String类型的 ...

  5. Java编程的逻辑 (16) - 继承的细节

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  6. ResultCode 自定义错误状态码

    public class ResultCode { // 成功状态码 public static final int SUCCESS = 1; // -------------------失败状态码- ...

  7. mysql 主键与外键

    一.主键详解,引用自:https://blog.csdn.net/haiross/article/details/50456154 1.要设置主键自增的话字段必须是整形数字. 二.外键详解:引用自ht ...

  8. Python PyCharm编译器

    PyCharm编译器有很强大的代码提示功能,业界都说很好用,所以我尝试着安装并使用,以下是过程. 下载地址:http://www.jetbrains.com/pycharm/download/#sec ...

  9. P3402 最长公共子序列

    P3402 最长公共子序列经典问题LCS-->LIS把第一数列转化成1~n,然后将第二个数列映射成1~n中的一些数,然后求第二个数列的LIS即可,然后用Bit求LIS,O(nlogN) //数据 ...

  10. MIT-6.828-JOS-lab6:Network Driver

    MIT-6.828 Lab 6: Network Driver (default final project) tags: mit-6.828 os 概述 本lab是6.828默认的最后一个实验,围绕 ...