消息队列在互联网公司肯定是必不可少的基础服务之一,最近我对各种消息队列进行了一番调研。我首先选择了在业界非常有名的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。
分享到:
相关推荐
对于那些有一定RabbitMQ使用经验的读者来说,本书不仅可以巩固消息通信基本原理,同时也可加深对RabbitMQ高级特性的理解,譬如如何编写RabbitMQ插件。相信处于RabbitMQ探索之旅不 同阶段的读者都能从本书获益。 本书...
内容为自己总结的RabbitMQ的经验,内容大致有:安装顺序、关键文件路径、常用命令、集群注意事项等,有用的请收入
RabbitMQ可靠性投递与实践经验
包含从Rabbit官方网址下载好的安装包,和自己安装rabbitMq经验总结,步骤,使用于mq初学者,windowns 系统安装
RabbitMQ可靠性传递和实践经验总结
环境中的使用经验,轻松应对各种复杂的业务场景 4. 掌握顶级开源消息中间件核心源码,理解其背后的架构设计思想以及在高性能存储系统、网络 编程等方面的技巧(会涉及网络通信、操作系统等底层知识) 5. 理解主流...
消息中间件的一点经验 rabbitmq、activemq、rocketmq、kafka-mq-research
1、MQ 的本质,MQ 的作用 2、RabbitMQ 的特性,工作模型,交换机详解 4、进阶知识:TTL、死信队列、延迟队列,服务端流控和消费端限流 5、Spr
主要介绍了springboot + rabbitmq 如何实现消息确认机制,本文给大家分享小编实际开发中的一点踩坑经验,内容简单易懂,需要的朋友可以参考下
搜罗了网上各种资料,经过自己实践安装,并进行总结,得出的经验。已成功在阿里云ECS服务器CentOS7.7 64bit 上进行过安装,华为云弹性云服务器CentOS7.4 64bit进行过安装。已稳定运行在公司生产服务器
” 淡褐色,“水船降落”[exaptic/fiver " 0.1.0 " ] Fiver创建了core.async通道,用于通过来使用RabbitMQ队列。 关于显式消息确认,它还使您可以控制一次有多少个消息正在运行。 内置了优美的生命周期管理和错误...
使错误处理和恢复更加容易我们从超过6年的 , 和RabbitMQ Java客户端开发经验中学到了很多,并尝试将这种经验应用于Langohr设计。项目反目标这是Langohr不想做的: RabbitMQ Java客户端的替代品用于任务队列的涂糖...
它致力于将Java客户端的强大功能与4年以上使用和开发和的经验相结合。 为什么选择三月野兔 JVM上的并发支持非常出色,它提供了许多工具和方法。 让我们利用它。 RabbitMQ Java客户端坚如磐石,并支持所有RabbitMQ...
Python使用技巧,实战应用开发小系统参考资料,源码参考。经测试可运行。 详细介绍了一些Python框架的各种功能和模块,以及如何使用...适用于初学者和有经验的开发者,能够帮助你快速上手JPython并掌握其高级特性。
本人十余年JAVA架构设计经验,擅长JAVA高可用、分布式、高并发系统架构设计。有志于做JAVA系统性的技术提升的同学可与我联系,交个朋友哦~ 本人十余年JAVA架构设计经验,擅长JAVA高可用、分布式、高并发系统架构...
在redis、rabbitmq、zookeeper、dubbo、springcloud、netty等方面,文档分别涵盖了这些技术的基本概念、原理、使用场景和实际代码实现。这些技术在Java开发中都有着重要的作用,比如redis作为高性能的缓存和消息队列...
包含从Rabbit官方网址下载好的安装包,和自己安装rabbitMq经验总结,步骤,使用于mq初学者,windowns 系统安装
无论您是初级开发者还是经验丰富的专家,这些问题将帮助您展示您的技能和知识。 redis各种应⽤用场景? 持久化机制 有没了了解Docker,Docker和虚拟机有什什么区别? rabbitmq队列列与消费者的关系? kafka,kafka...
我以前的所有项目都是整体的,我想获得容器化和微服务方面的经验。 这只是一个示例网站,请不要输入您不想在公共场合看到的信息。 给自己和感兴趣的新手开发人员的说明: Docker与全栈应用程序的过程相同,只是在...
Yannick PEREIRA-REIS博客 码头工人 使用构建 make build以构建Docker映像 make install以构建项目并在上提供服务 make jkbuild来构建make jkbuild