rabbitmq使用经验

消息队列在互联网公司肯定是必不可少的基础服务之一,最近我对各种消息队列进行了一番调研。我首先选择了在业界非常有名的rabbitmq进行尝试,rabbitmq的介绍我就不用再在此处费笔墨了。选择它主要是看重它出众的出队入队性能和稳定性,当然消息队列的高可用和消息的安全rabbitmq也做的相当好。
下面就是我在尝试配置集群环境时的一些步骤和想法:
1.安装erlang,很简单
#wget  http://www.erlang.org/download/otp_src_R15B01.tar.gz
#tar zxvf otp_src_R15B01.tar.gz && cd otp_src_R15B01
#./configure && make install

2.安装rabbitmq
#wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.0.1/rabbitmq-server_3.0.1.orig.tar.gz
#tar zxvf rabbitmq-server_3.0.1.orig.tar.gz && cd rabbitmq-server-3.0.1

修改Makeifle ,添加以下参数,指定安装目录
SBIN_DIR = /usr/sbin
MAN_DIR = /usr/share/man
TARGET_DIR= /usr/lib/rabbitmq

最后
#make && make install

当然这个过程中可能缺少一些别的依赖库比如libxslt.x86_64、xmlto,请大家安装对应的依赖库。

ok,当上面的一切都做完了,下面开始集群方面配置。在集群开始之前,我们必须要对erlang有点了解才行。rabbitmq的集群是建立在erlang上的,erlang在网络和通信方面的能力造就了erlang在集群方面的天然优势。

对于两个互相通信的Erlang节点来说,它们必须使用相同的magic cookie。我们可以用3种方法来设置cookie。

方法1:把相同的cookie存放于$HOME/.erlang.cookie文件中。这个文件包含了一个随机字符串,这个字符串是你第一次在该机器上运行Erlang时自动生成的。
如果你想把一台机器加入到当前的分布式Erlang网络中,就需要把这个文件复制到这台机器上。或者,也可以显式地设置这个值。例如,在Linux系统上,可以使用下面的命令行。
$ cd ~
$ cat > .erlang.cookie
HVLPTGBNIDUWLDSKIEID
$ chmod 400 .erlang.cookie

chmod命令保证.erlang.cookie文件只能被文件的拥有者访问到。

方法2:启动Erlang时,我们可以使用命令行参数-setcookie yangguo把magic cookie的值设为yangguo。
$ erl -setcookie AFRTY12ESS3412735ASDF12378 ...

方法3:使用BIF erlang:set_cookie(node(),C)把本地节点的cookie设置为原子C。
说明    如果你处于不安全的计算环境之中,那么第1种或第3种方法要比第2种更好一些,因为在这种情况下,任何人只要能使用ps命令来访问这个Unix系统就能获得你的cookie。

现在你应该知道为啥不存在/var/lib/rabbitmq/.erlang.cookie,不像RabbitMQ 文档里说的 那样。这点rabbitmq做的不是很好,因为如果不对erlang有点了解,可能配置起来有点摸不着头脑。当然erlang的这种安全机制,all or no在可能很多人觉得很弱,但是换个角度看,erlang生了就不是为这个而来的,你就安心了。
我选择了$HOME/.erlang.cookie下设置cookie的方式,原因上面已经说了,这个看个人。这个可以先通过./rabbitmq-server启动一个节点,这样在$HOME目录下就会产生这样一个.erlang.cookie文件了,通过scp拷贝到别的节点上就ok了,当然别忘了chmod。

你可能感兴趣的:(c,linux,erlang,互联网,unix)