`
hammer_nail
  • 浏览: 22943 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

RabbitMQ 集群环境安装

阅读更多

 

突然发现自己的英语能力很差, 文档 看的云里雾里,在安装 RabbitMQ 集群的时候遇到了很大的麻烦。

安装 RabbitMQ 的集群环境,首先得来讲如何安装非集群环境

Step1 :安装 Erlang

啥是 Erlang? Look –> http://en.wikipedia.org/wiki/Erlang_%28programming_language%29

下载 Erlang SRC - otp_src_R13B04.tar.gz

./configure  --prefix=/usr/local/erlang

make

make install

 

Step2: 安装 Python 2.6 以上版本(大部分 Linux 版本都自带了 Python2.6 以上版本)

 

Step3 :如果没有 simplejson-2.1.1 这个 Python lib ,需要从 此处 下载

 

Step4 :下载 RabbitMQ Server Package rabbitmq-server-generic-unix-1.7.2.tar.gz

 

Step5 :解压后,进入 /home/rabbitmq_server-1.7.2/sbin 目录,运行 ./rabbitmq-server

如果出现:

+---+   +---+

|   |   |   |

|   |   |   |

|   |   |   |

|   +---+   +-------+

|                   |

| RabbitMQ  +---+   |

|           |   |   |

|   v1.7.2  +---+   |

|                   |

+-------------------+

AMQP 8-0

Copyright (C) 2007-2010 LShift Ltd., Cohesive Financial Technologies LLC., and Rabbit Technologies Ltd.

Licensed under the MPL.  See http://www.rabbitmq.com/

 

node          : rabbit@replica1

app descriptor: /home/rabbitmq_server-1.7.2/sbin/../ebin/rabbit.app

home dir      : /root

cookie hash   : pR5H9kY3Wra/XdLELT5hgQ==

log           : /var/log/rabbitmq/rabbit.log

sasl log      : /var/log/rabbitmq/rabbit-sasl.log

database dir  : /var/lib/rabbitmq/mnesia/rabbit

 

starting internal event notification system                           ...done

starting logging server                                               ...done

starting database                                                     ...done

-- kernel ready

starting alarm handler                                                ...done

starting queue supervisor                                             ...done

starting node monitor                                                 ...done

starting cluster router                                               ...done

-- core initialized

starting empty DB check                                               ...done

starting codec correctness check                                      ...done

starting exchange recovery                                            ...done

starting queue recovery                                               ...done

starting persister                                                     ...done

starting guid generator                                               ...done

-- message delivery logic ready

starting error log relay                                              ...done

starting networking                                                    ...done

-- network listeners available

 

broker running

则代表启动成功。

接下来,就来阐述一下我安装 RabbitMQ 的方法

首先:我非常欣赏 官方文档 的详细和无厘头。

官方文档非常详细的介绍了手动配置和自动配置两种手段,手动配置是利用了 sbin 目录里提供的 rabbitmqctl 脚本,非常强大而 YD ,具体就不阐述了,里面有非常靠谱的介绍。但是,不靠谱的是,文档忘记说明三个问题,虽然可能在 RabbitMQ Erlang 开发人员的眼里,简直是小儿科。

  1. RabbitMQ 完全依赖 Erlang Cluster ,所以,要构建起 RabbitMQ 的集群环境,还是需要了解一点 Erlang, 不然就是盲人摸象,摸到哪算哪。

这里首先非常感谢 Erlang-China 上的文档说明:

http://erlang-china.org/study/erlang-distribute-security.html 让我明白了几个问题:

             a.  为什么我的 .erlang.cookie 不在 RabbitMQ 文档里说的 /var/lib/rabbitmq/.erlang.cookie

因为Erlang 产生的 .erlang.cookie是在 $HOME/.erlang.cookie

既然你完全依赖 Erlang 的集群环境,你就没必要特别指出你是在 /var/lib/rabbitmq 里了,何苦呢,如果说你要设置 $HOME, 那也得问问我这个使用者感受,是不。

             b.  节点间的通信,首要条件是互相可见, Erlang 的安全级别只有两种( All or No ),要么啥权限都有,要么啥都没有。我非常欣赏这种设计,比起所谓的 ACL ,在强大的网络和通信能力的光环之下,以及内部网络的基础上,简直是可有可无。

            c.   如何保证节点( server )间互相能通信, Erlang 采用了 Cookie 匹配的做法:如果在命令行里面带上 -setcookie ,则在当前节点使用这个 cookie 值,否则会使用 $HOME/.erlang.cookie 。清晰啊···

            d.  我非常喜欢 -setcookie 的做法,直接··

具体的设置方法,该文章讲的非常清楚,我就不赘述了。从中我学到了 3 样事情:

            f.   如何检查节点间是否可以通讯: net_adm:ping(‘foo@192.168.0.2‘ ).

            g.   如何得知当前的 Erlang 集群中有哪些 server node( ).

            h.  特别注意 foo @192.168.0.2 ,这表明当前的用户, foo1@192.168.0.2 foo2@192.168.0.2 是代表两个不一样的 Erlang 节点。

Note: 由于我好暂时不需要 Security 相关的东西,所以也没花功夫去看。

     2.  建立在 1 的基础上,我们已经知道如何配置 Erlang 的集群了,接下来就是 RabbitMQ

           a.   删除 /var/lib/rabbitmq/mnesia

似乎 Erlang 或者是 MQ 做了一些让人摸不着头脑的事情,一旦启动过了 MQ (单机版)就会随机产生一个 Cookie, 并且,这个 cookie 是会保存在 Mnesia Schema 中的。所以如果你在安装好 MQ 之后,异常兴奋,如我这般启动过了 MQ ,那就会掉入文档的一个陷阱中。

           b.   修改 rabbit-server 脚本

经管有文档中已经有非常傻瓜的配置方法了,并且也提到了:

As an alternative, you can insert the option " -setcookie cookie " in the erl call in the rabbitmq-server and rabbitmqctl scripts.

但是因为信任度的关系,我还是相信了 Erlang-China 。修改的 rabbit-server 日下:

    ${RABBITMQ_EBIN_PATH} \

    ${RABBITMQ_START_RABBIT} \

    -sname ${RABBITMQ_NODENAME} \

    -boot ${RABBITMQ_BOOT_FILE} \

    ${RABBITMQ_CONFIG_ARG} \

    +W w \

    ${RABBITMQ_SERVER_ERL_ARGS} \

    ${RABBITMQ_LISTEN_ARG} \

    -sasl errlog_type error \

    -kernel error_logger '{file,"'${RABBITMQ_LOGS}'"}' \

    -sasl sasl_error_logger '{file,"'${RABBITMQ_SASL_LOGS}'"}' \

    -os_mon start_cpu_sup true \

    -os_mon start_disksup false \

    -os_mon start_memsup false \

    -mnesia dir "\"${RABBITMQ_MNESIA_DIR}\"" \

    ${RABBITMQ_CLUSTER_CONFIG_OPTION} \

    name rabbit@replica2 -setcookie rabbit \

    ${RABBITMQ_SERVER_START_ARGS} \

    "$@"

其中,要注意的地方是:

                         i.    rabbit@replica2 replica2 是指的当前 server hostName etc/hosts )。

                         ii.    设置的 cookie 是叫 rabbit ,也就是说这个名字可以随便定,无所谓。

                         iii.   同样,我试过不用 Host 而用 IP ,结果似乎不能运行(但是在 Erlang 的集群配置中, IP 还是 HostName 并不是一个 big issue

 

        3.      启动 rabbit-server ,直接点,别 rabbitmq-server –detach 了。

        4.     另起一个 console ,运行

CentOS4.4-64:replica:root > ./rabbitmqctl status

Status of node rabbit@replica ...

[{running_applications,[{rabbit,"RabbitMQ","1.7.2"},

                        {mnesia,"MNESIA  CXC 138 12","4.4.13"},

                        {os_mon,"CPO  CXC 138 46","2.2.5"},

                        {sasl,"SASL  CXC 138 11","2.1.9"},

                        {stdlib,"ERTS  CXC 138 10","1.16.5"},

                        {kernel,"ERTS  CXC 138 10","2.13.5"}]},

  {nodes,[rabbit@replica2,rabbit@replica1,rabbit@replica]},

  {running_nodes,[rabbit@replica1,rabbit@replica2,rabbit@replica]}]

...done.

童鞋们,集群了,咱也是文化狼了 ···

 

 

3
0
分享到:
评论

相关推荐

    rabbitmq集群环境搭建

    #### 一、RabbitMQ集群环境搭建概述 在分布式系统中,为了提高消息处理能力与系统的可靠性,通常会采用RabbitMQ集群架构。RabbitMQ集群允许消息发布者将消息发送到任意一个集群节点上,而消费者可以从任意一个节点...

    RabbitMQ集群环境生产实例部署

    本文将深入探讨如何在生产环境中部署RabbitMQ集群,以满足大规模应用的需求。 首先,我们需要理解RabbitMQ集群的基本概念。集群是将多个RabbitMQ节点联合在一起,形成一个单一的逻辑服务。在集群中,消息可以在任何...

    RabbitMQ集群主从安装.docx

    本文档将详细介绍如何安装 RabbitMQ 集群主从服务,包括安装依赖软件、语言环境 Erlang、安装 RabbitMQ、配置默认数据存储和日志路径、安装 web 界面访问插件等步骤。 安装依赖软件 在安装 RabbitMQ 之前,需要...

    RabbitMQ集群-ActiveMQ集群集合

    《RabbitMQ集群环境生产实例部署》可能会涵盖以下内容: 1. 集群组建:通过在多台服务器上部署RabbitMQ,并配置节点间的通信,形成一个集群。集群中的节点可以是磁盘节点或内存节点,前者用于持久化消息,后者则更...

    CentOS7 安装RabbitMQ集群.docx

    在本节中,我们介绍了如何在 CentOS7 上安装 RabbitMQ 集群,包括安装 Erlang 运行环境、安装 RabbitMQ Server 和启动管控台插件。RabbitMQ 是一个流行的开源消息队列服务器,可以用于分布式系统中的消息传递和队列...

    RabbitMq 集群搭建linux

    为了搭建一个可靠的RabbitMQ集群,首先需要确保所有的服务器节点都处于相同的网络环境中,并且具有稳定的网络连接。根据提供的信息,本实验环境如下: - **操作系统**:CentOS 7.2 - **节点列表**: - IP地址:192...

    RabbitMQ Linux安装教程

    RabbitMQ的安装过程在Linux环境下需要依赖于Erlang,而Erlang自身又依赖于某些库,如wxWidgets。以下是详细的安装步骤: 1. **wxWidgets**: - wxWidgets是一个C++库,用于开发图形用户界面,它是Erlang的依赖之一...

    安装了RocketMQ集群,rabbitmq集群, Mware

    安装的软件有RocketMQ集群和rabbitmq集群 有两套rabbitmq集群 1.192.168.1.61~62是一个rabbitmq集群,这集群,有2台组成集群 2.192.168.1.63~65是一个rabbitmq集群,这集群,有3台组成集群 redis,redis哨兵,redis集群,...

    docker搭建rabbitmq集群环境的方法

    本篇文章主要介绍了docker搭建rabbitmq集群环境的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

    离线安装rabbitmq全过程,包含python环境和er环境以及安装包的安装过程

    下面我们将详细介绍离线安装RabbitMQ的全过程,包括Python环境和Erlang环境的搭建,以及处理安装过程中可能遇到的问题,如ncurses库的缺失。 首先,我们需要了解RabbitMQ依赖于Erlang环境,因为RabbitMQ是用Erlang...

    rabbitmq集群测试资源

    综上所述,“rabbitmq集群测试资源”可能包含了创建、配置、监控和故障恢复RabbitMQ集群所需的各种工具和信息,这对于理解和优化RabbitMQ集群的性能和可靠性至关重要。在实际操作中,应根据具体需求和环境调整集群...

    消息中简介Rabbitmq集群搭建

    2. **安装 RabbitMQ**:在每个服务器上安装 RabbitMQ,配置环境变量,并启动服务。 3. **配置集群**: - 初始化节点:在第一个节点上运行 `rabbitmqctl join_cluster rabbit@node2`,其中 `node2` 是第二个节点的...

    RabbitMQ高可用集群部署1

    RabbitMQ集群的建立得益于Erlang的分布式特性,通过同步各个节点间的“magic cookie”来实现节点间的通信和认证。集群的主要目标是提供高可用性,当一个节点故障时,其他节点可以接管服务,确保业务连续性。此外,...

    HA+keepalived+rabbitMq镜像集群安装手册软件

    标题中的“HA+keepalived+rabbitMq镜像集群安装手册软件”指的是构建高可用(High Availability, HA)的rabbitMQ集群,并通过keepalived实现负载均衡的一种方案。在这个配置中,HAProxy将作为前端负载均衡器,而...

    RabbitMQ集群 所需的erlang和rabbitmq的rpm包

    标题提到的"RabbitMQ集群 所需的erlang和rabbitmq的rpm包",指的是在构建RabbitMQ集群时,需要先安装Erlang环境,因为RabbitMQ是用Erlang编程语言编写的。Erlang是一种为并发、容错和实时系统设计的编程语言,其强大...

    生产环境Rabbitmq集群安装部署与配置

    更多:生产环境Rabbitmq集群安装 创建用户 创建用户名 sudo adduser rabbitmq 添加到sudo组里面 sudo usermod -a -G sudo rabbitmq 切换用户 sudo su – rabbtimq cd /data sudo mkdir rabbitmq sudo chown -R ...

    RabbitMq安装包及超详细安装教程

    RabbitMQ是一个强大的开源...通过详细的安装教程,你可以逐步掌握RabbitMQ的安装和配置,从而更好地利用它的功能来优化你的应用程序。记得在使用过程中遵循最佳实践,保持良好的日志记录和监控,以确保系统的稳定运行。

    RabbitMQ集群搭建及使用.docx

    1. **环境准备**:确保所有参与集群的服务器都已安装了 RabbitMQ。每个服务器上的实例应能正常启动。RabbitMQ 的配置文件 `.erlang.cookie` 必须在所有节点上保持一致,以便它们之间能够进行通信。这个文件通常位于 ...

    Centos7 离线安装RabbitMQ,并配置集群.pdf

    RabbitMQ安装及集群的pdf档,网页版下载后整理的,可以用作记录或者操作手册使用。跟网页版原文一模一样

Global site tag (gtag.js) - Google Analytics