消息队列在互联网公司肯定是必不可少的基础服务之一,最近我对各种消息队列进行了一番调研。我首先选择了在业界非常有名的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服务器,发送和接收消息,以及处理各种AMQP操作。 在工程结构中,通常会包含以下几个...
**正文** RabbitMQ 是一个开源的消息队列系统,基于 AMQP(Advanced Message Queuing Protocol)协议实现,广泛应用于分布式系统中的...记得结合提供的"淘宝RabbitMQ实验资料"进行深入研究,以获得更丰富的实战经验。
《深入理解RabbitMQ 3.7.14:基于rabbitmq-server_3.7.14.exe的安装与应用》 RabbitMQ是全球最流行的...无论是初学者还是经验丰富的开发者,都应该掌握其基本使用和配置,以便在实际项目中发挥出RabbitMQ的最大价值。
总之,《深入RabbitMQ》这本书是学习和掌握RabbitMQ全面知识的优秀指南,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过阅读和实践书中的内容,你将能够熟练地利用RabbitMQ构建高效、可靠的分布式系统...
本笔记主要介绍了中间件的概念、特点、使用场景和RabbitMQ的应用。 一、什么是中间件 中间件是位于操作系统和应用程序之间的软件,提供了标准的程序接口和协议,能够屏蔽底层操作系统的复杂性,使程序开发人员面对...
通过这些配方,开发者可以获得关于如何有效地使用RabbitMQ构建可靠、可扩展和高效的消息驱动应用程序的第一手经验。 这本书由Sigismondo Boschi和Gabriele Santomaggio编写,二人都是有经验的软件开发人员,专注于...
虽然AMQP协议不推荐使用事务,因为它们会影响性能,但RabbitMQ仍提供了事务支持,以保证在某些场景下的消息顺序性。此外,预确认(Pre-acknowledgments)模式允许消费者批量确认消息,提高了性能。 ### 7. Spring...
同时,由于源代码是开放的,用户可以放心地在项目中使用,并且有机会参与到社区的交流,分享经验和解决问题。 综上所述,基于RabbitMQ的消息队列组件是解决分布式系统间通信的有效工具,它提供了一种可靠、灵活的...
总之,这个资源集合为开发者提供了一个全面了解和使用RabbitMQ客户端的起点,无论你是初学者还是经验丰富的开发者,都能从中受益。通过研究源码和实践QT调用,你可以更好地理解和利用RabbitMQ的威力,实现高效、可靠...
RabbitMQ是当前非常流行的一种消息中间件,它使用了先进的消息队列协议(AMQP)实现,广泛用于构建可靠的...在面试中,对RabbitMQ相关知识点的了解程度,常常是判断候选人是否具备高级消息中间件实践经验的重要标准。
这个实战教程将帮助你从理论到实践全面掌握RabbitMQ的使用,无论是初学者还是经验丰富的开发者,都能从中受益。通过视频学习,可以更直观地理解概念和操作步骤,而源代码和文档则提供了深度探索和自我实践的机会。...
总之,《RabbitMQ高效部署分布式消息队列实战篇》是一份全面且实用的指南,它不仅讲解了RabbitMQ的基础知识,还提供了丰富的实战经验,对于想要在分布式环境中运用消息队列的开发者来说,无疑是一份宝贵的参考资料。...
总的来说,《跟我学RabbitMQ》旨在帮助你从基础到高级全面掌握RabbitMQ,无论你是初学者还是经验丰富的开发者,都能从中受益。通过学习,你将具备利用RabbitMQ构建高效、可靠的分布式系统的能力。
3. **API使用**:学习如何使用RabbitMQ提供的API与消息队列进行交互,包括消息的发送与接收。 4. **高级特性**:深入了解RabbitMQ的高级特性,比如事务处理、消息持久化、集群部署等。 5. **最佳实践**:结合实际...
RabbitMQ是一种开放源代码的轻量级、可靠的消息代理(Message Broker)系统,它使用高级消息队列协议(AMQP)进行消息传递。RabbitMQ是用Erlang编程语言开发的,因此在安装RabbitMQ之前必须先安装Erlang运行时环境。...
RabbitMQ是一款基于AMQP(Advanced Message...无论是对初学者还是有经验的开发人员,理解如何配置和利用RabbitMQ都是提升系统架构灵活性和可靠性的关键步骤。通过集成RabbitMQ,你可以构建出更加健壮、高效的应用程序。
通过这个压缩包,你不仅可以获得RabbitMQ的安装包,还能得到作者的经验总结,这对于初学者来说是非常宝贵的资源。在学习过程中,你可以结合实际项目,模拟各种场景,加深对消息中间件的理解和运用。