突然发现自己的英语能力很差, 文档 看的云里雾里,在安装 RabbitMQ 集群的时候遇到了很大的麻烦。 安装 RabbitMQ 的集群环境,首先得来讲如何安装非集群环境 Step1 :安装 Erlang 啥是 Erlang? Look –> http://en./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 的方法 首先:我非常欣赏 官方文档 的详细和无厘头。 官方文档非常详细的介绍了手动配置和自动配置两种手段,手动配置是利用了 sbin 目录里提供的 rabbitmqctl 脚本,非常强大而 YD ,具体就不阐述了,里面有非常靠谱的介绍。但是,不靠谱的是,文档忘记说明三个问题,虽然可能在 RabbitMQ Erlang 开发人员的眼里,简直是小儿科。
这里首先非常感谢 Erlang-China 上的文档说明: http:///study/erlang-distribute-security.html , 让我明白了几个问题: a. 为什么我的 .erlang.cookie 不在 RabbitMQ 文档里说的
既然你完全依赖 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 脚本 经管有文档中已经有非常傻瓜的配置方法了,并且也提到了:
但是因为信任度的关系,我还是相信了 Erlang-China 。修改的 rabbit-server 日下:
其中,要注意的地方是: 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 ,运行
童鞋们,集群了,咱也是文化狼了 ··· |
|
来自: icecity1306 > 《可能用到系统》