rabbitmq的安装:

CentOS上面部署:

首先修改hosts文件

修改hosts文件
vi /etc/hosts
1.1.1.1 hostname

2.2.2.2 hostname

3.3.3.3 hostname

erlang的安装环境:
rpm -i http://mirror.bjtu.edu.cn/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install erlang
安装rabbitMQ(RPM链接可以从http://www.rabbitmq.com/install-rpm.html来获取)

rpm -ivh http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.5/rabbitmq-server-3.3.5-1.noarch.rpm

启用管理插件,可通过web查看rabbitmq状态

# rabbitmq-plugins enable rabbitmq_management

启动服务:

/etc/init.d/rabbitmq-server start

rabbitmq集群的部署:

集群模式介绍:

1 单一模式:最简单的情况,非集群模式

2 普通模式:默认的集群模式

rabbitMQ中的exchange和queue都包含meta、contents、state等信息,exchange在集群中的每个节点都保存一份数据,
但是queue不一样,queue在集群中对于contents只存储一份,其他节点只存储meta信息

3 镜像模式:把需要的队列做成镜像队列,均在与多个节点,属于rabbitmq的HA方案

mirror queue是为rabbitMQ高可用的一种方案,相对于普通的集群方案来讲,queue中的消息每个节点都会存在一份copy

开始搭建建集群,采用镜像模式

1.修改配置文件/etc/rabbitmq/rabbitmq.config(如果没有则新建 ),所有节点配置文件一样,本次用3个节点

% Template Path: rabbitmq/templates/rabbitmq.config

[

{kernel, [

{inet_dist_listen_min, 41055},

{inet_dist_listen_max, 41055},

{inet_default_connect_options, [{nodelay,true}]}

]},

{rabbit, [

{log_levels, [connection,debug,info,error]},

{default_vhost, <<"/">>},

{default_user, <<"nova">>},

{default_pass, <<"oBtZFKLF">>}, #修改为nova用户实际的mq密码

{default_permissions, [<<".*">>, <<".*">>, <<".*">>]},

{cluster_partition_handling, autoheal},

{tcp_listen_options, [

binary,

{packet, raw},

{reuseaddr, true},

{backlog, 128},

{nodelay, true},

{exit_on_close, false},

{keepalive, true}

]}

]}

].

% EOF

cat /etc/rabbitmq/rabbitmq-env.conf

RABBITMQ_NODE_IP_ADDRESS=0.0.0.0

RABBITMQ_NODE_PORT=5672

#RABBITMQ_LOG_BASE=/data/rabbitmq/log 日志目录

#RABBITMQ_PLUGINS_DIR=/data/rabbitmq/plugins 插件目录

#RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia 后端存储目录

2 集群配置:

(1)、 启动第一个节点 上的rabbitmq服务,/etc/init.d/rabbitmq-server start

(2)、 复制cookie到其他rabbitmq节点

scp /var/lib/rabbitmq/.erlang.cookie root@NODE:/var/lib/rabbitmq/.erlang.cookie

chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

chmod 400 /var/lib/rabbitmq/.erlang.cookie

erlang cookie的作用:

Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群景象。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在 .erlang.cookie 中文件是400的权限。所以必须包管各节点cookie对峙一致,不然节点之间就无法通信

(3) 启动所有节点的rabbitmq,并验证状态为running

rabbitmqctl cluster_status可查看rabbitmq状态

Cluster status of node rabbit@NODE...

[{nodes,[{disc,[rabbit@NODE]}]},

{running_nodes,[rabbit@NODE]},

{partitions,[]}]

...done.

(4) 关闭除第一个节点外的其他节点的app ,并加入到集群中

节点2 节点3上执行:

(1)rabbitmqctl stop_app

(2) rabbitmqctl join_cluster rabbit@节点1的hostname

(3)rabbitmqctl start_app

(5)  验证集群状态,每个节点都应该有如下输出

[{nodes,[{disc,['rabbit@节点1','rabbit@节点2','rabbit@节点3']}]},
{running_nodes,['rabbit@节点1,'rabbit@节点2','rabbit@节点3']},
{cluster_name,<<"rabbit@节点1">>},
{partitions,[]}]
...done.

(6) 添加策略ha-policy

bbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'

凡是ha. 开始的queue的数据,会同步到集群的所有node

(7)添加用户及权限            

rabbitmqctl add_user  nova 密码

rabbitmqctl  set_permissions -p / nova '.*' '.*' '.*'

到此就结束了,可以通看web(ip:15672)查看rabbitmq状态

常用命令介绍:

rabbitmqctl cluster_status
检查集群有几个节点,检查是否出现了分区现象

rabbitmqctl list_queues | grep -v '\<0$'

检查是否有队列积压了消息

rabbitmqctl list_queues name slave_pids synchronised_slave_pids
输出信息每行都关于其中一个队列的slave状态,看一下对于每个队列,slave_pids一列,是不是都有两个slave,且 synchronised_slave_pids一列也有两个slave。每个队列的slave可以是不一样的,但是应该都是两个

rabbitmq安装、集群搭建的更多相关文章

  1. RabbitMQ入门教程(十四):RabbitMQ单机集群搭建

    原文:RabbitMQ入门教程(十四):RabbitMQ单机集群搭建 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://b ...

  2. RabbitMQ之集群搭建

    1.RabbitMQ集群模式RabbitMQ集群中节点包括内存节点(RAM).磁盘节点(Disk,消息持久化),集群中至少有一个Disk节点. 2.普通模式(默认)        对于普通模式,集群中 ...

  3. rabbitmq普通集群搭建详细步骤

    由于工作需求,需要安装rabbitmq,学习之余,记录一下安装过程 准备基础编译环境yum install gcc glibc-devel make ncurses-devel openssl-dev ...

  4. Consul安装集群搭建

    1 consul的安装和配置 1.1 consul agent 命令介绍 下载consul_1.0.0_linux_amd64.zip解压,里面只有一个consul可执行文件,其中,consul最常用 ...

  5. RabbitMQ镜像集群搭建

    RabbitMQ 官网 https://www.rabbitmq.com/ 小编使用的系统环境是CentOS7.4 系统 IP hostname CentOS7.4 1.1.1.1 hostname0 ...

  6. RabbitMQ单机集群搭建出现Error: unable to perform an operation on node 'rabbit1@ClusterNode1'

    参考链接:https://www.cnblogs.com/daryl/archive/2017/10/13/7645749.html 全部步骤和参考链接相同. 前八部都正常,在第九步会报错Error: ...

  7. rabbitmq安装集群

    centos 7.3 64 172.18.39.241 k8s-mini-241172.18.39.242 k8s-mini-242172.18.39.243 k8s-master-243 vim / ...

  8. rabbitMQ 安装,集群搭建, 编码

    RabbitMQ 一.背景 命令行工具: http://www.rabbitmq.com/man/rabbitmqctl.1.man.html 介绍入门文章: http://blog.csdn.net ...

  9. RabbitMQ的安装及集群搭建方法

    RabbitMQ安装 1 安装erlang 下载地址:http://www.erlang.org/downloads 博主这里采用的是otp_src_19.1.tar.gz (200MB+) [roo ...

随机推荐

  1. 昂贵的聘礼(Dijkstra)

    http://poj.org/problem?id=1062 每个物品看成一个节点,酋长的允诺也看作一个物品, 如果一个物品加上金币可以交换另一个物品,则这两个节点之间有边,权值为金币数,求第一个节点 ...

  2. php文件,文件夹

    例子代码:<?php$f='/www/htdocs/index.html';$path_parts = pathinfo($f);echo $path_parts['dirname'], &qu ...

  3. flume+flume+kafka消息传递+storm消费

    通过flume收集其他机器上flume的监测数据,发送到本机的kafka进行消费. 环境:slave中安装flume,master中安装flume+kafka(这里用两台虚拟机,也可以用三台以上) m ...

  4. 跳出双重for循环的案例__________跳出当前循环(continue out)

    package com.etc.operator; public class demo { public static void main(String[] args) { // break out; ...

  5. 2.Dubbo开源分布式服务框架(JAVA RPC)

    1. Dubbo介绍 Dubbox是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能RPC(即远程调用)实现服务的输出和输入功能, 可以和Spring框架无集成.Dubbo是一款高性能 ...

  6. Android 使用SQLite存储以及读取Drawable对象

    在进行Android开发过程中,我们经常会接触到Drawable对象,那么,若要使用数据库来进行存储及读取,该如何实现? 一.存储 //第一步,将Drawable对象转化为Bitmap对象 Bitma ...

  7. AI:IPPR的数学表示-CNN基本结构分析( Conv层、Pooling层、FCN层/softmax层)

    类似于SVM,CNN为代表的DNN方法的边缘参数随着多类和高精度的要求必然增长.比如向量机方法,使用可以映射到无穷维的高斯核,即使进行两类分类,在大数据集上得到高精度,即保持准确率和高精度的双指标,支 ...

  8. Dispatch Queues and Thread Safety

    Dispatch Queues and Thread Safety It might seem odd to talk about thread safety in the context of di ...

  9. 学习网址Collect

    Laravel 学院    https://laravelacademy.org/wx小程序 https://developers.weixin.qq.com/miniprogram/dev/quic ...

  10. 团体程序设计天梯赛-练习集-L1-037. A除以B

    L1-037. A除以B 真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果. 输入格式: 输入在第一行给出两个整数A和B(-100 <= A, ...