突然发现自己的英语能力很差,
文档
看的云里雾里,在安装
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
开发人员的眼里,简直是小儿科。
-
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.
|
童鞋们,集群了,咱也是文化狼了
···
分享到:
相关推荐
#### 一、RabbitMQ集群环境搭建概述 在分布式系统中,为了提高消息处理能力与系统的可靠性,通常会采用RabbitMQ集群架构。RabbitMQ集群允许消息发布者将消息发送到任意一个集群节点上,而消费者可以从任意一个节点...
本文将深入探讨如何在生产环境中部署RabbitMQ集群,以满足大规模应用的需求。 首先,我们需要理解RabbitMQ集群的基本概念。集群是将多个RabbitMQ节点联合在一起,形成一个单一的逻辑服务。在集群中,消息可以在任何...
本文档将详细介绍如何安装 RabbitMQ 集群主从服务,包括安装依赖软件、语言环境 Erlang、安装 RabbitMQ、配置默认数据存储和日志路径、安装 web 界面访问插件等步骤。 安装依赖软件 在安装 RabbitMQ 之前,需要...
《RabbitMQ集群环境生产实例部署》可能会涵盖以下内容: 1. 集群组建:通过在多台服务器上部署RabbitMQ,并配置节点间的通信,形成一个集群。集群中的节点可以是磁盘节点或内存节点,前者用于持久化消息,后者则更...
在本节中,我们介绍了如何在 CentOS7 上安装 RabbitMQ 集群,包括安装 Erlang 运行环境、安装 RabbitMQ Server 和启动管控台插件。RabbitMQ 是一个流行的开源消息队列服务器,可以用于分布式系统中的消息传递和队列...
为了搭建一个可靠的RabbitMQ集群,首先需要确保所有的服务器节点都处于相同的网络环境中,并且具有稳定的网络连接。根据提供的信息,本实验环境如下: - **操作系统**:CentOS 7.2 - **节点列表**: - IP地址:192...
RabbitMQ的安装过程在Linux环境下需要依赖于Erlang,而Erlang自身又依赖于某些库,如wxWidgets。以下是详细的安装步骤: 1. **wxWidgets**: - wxWidgets是一个C++库,用于开发图形用户界面,它是Erlang的依赖之一...
安装的软件有RocketMQ集群和rabbitmq集群 有两套rabbitmq集群 1.192.168.1.61~62是一个rabbitmq集群,这集群,有2台组成集群 2.192.168.1.63~65是一个rabbitmq集群,这集群,有3台组成集群 redis,redis哨兵,redis集群,...
本篇文章主要介绍了docker搭建rabbitmq集群环境的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
下面我们将详细介绍离线安装RabbitMQ的全过程,包括Python环境和Erlang环境的搭建,以及处理安装过程中可能遇到的问题,如ncurses库的缺失。 首先,我们需要了解RabbitMQ依赖于Erlang环境,因为RabbitMQ是用Erlang...
综上所述,“rabbitmq集群测试资源”可能包含了创建、配置、监控和故障恢复RabbitMQ集群所需的各种工具和信息,这对于理解和优化RabbitMQ集群的性能和可靠性至关重要。在实际操作中,应根据具体需求和环境调整集群...
2. **安装 RabbitMQ**:在每个服务器上安装 RabbitMQ,配置环境变量,并启动服务。 3. **配置集群**: - 初始化节点:在第一个节点上运行 `rabbitmqctl join_cluster rabbit@node2`,其中 `node2` 是第二个节点的...
RabbitMQ集群的建立得益于Erlang的分布式特性,通过同步各个节点间的“magic cookie”来实现节点间的通信和认证。集群的主要目标是提供高可用性,当一个节点故障时,其他节点可以接管服务,确保业务连续性。此外,...
标题中的“HA+keepalived+rabbitMq镜像集群安装手册软件”指的是构建高可用(High Availability, HA)的rabbitMQ集群,并通过keepalived实现负载均衡的一种方案。在这个配置中,HAProxy将作为前端负载均衡器,而...
标题提到的"RabbitMQ集群 所需的erlang和rabbitmq的rpm包",指的是在构建RabbitMQ集群时,需要先安装Erlang环境,因为RabbitMQ是用Erlang编程语言编写的。Erlang是一种为并发、容错和实时系统设计的编程语言,其强大...
更多:生产环境Rabbitmq集群安装 创建用户 创建用户名 sudo adduser rabbitmq 添加到sudo组里面 sudo usermod -a -G sudo rabbitmq 切换用户 sudo su – rabbtimq cd /data sudo mkdir rabbitmq sudo chown -R ...
RabbitMQ是一个强大的开源...通过详细的安装教程,你可以逐步掌握RabbitMQ的安装和配置,从而更好地利用它的功能来优化你的应用程序。记得在使用过程中遵循最佳实践,保持良好的日志记录和监控,以确保系统的稳定运行。
1. **环境准备**:确保所有参与集群的服务器都已安装了 RabbitMQ。每个服务器上的实例应能正常启动。RabbitMQ 的配置文件 `.erlang.cookie` 必须在所有节点上保持一致,以便它们之间能够进行通信。这个文件通常位于 ...
RabbitMQ安装及集群的pdf档,网页版下载后整理的,可以用作记录或者操作手册使用。跟网页版原文一模一样