Rabbitmq的安装及集群环境的搭建

简介:

1.Erlang 安装

 
 
  1. wget http://www.erlang.org/download/otp_src_R14B.tar.gz    
  2. tar -zxf otp_src_R14B01.tar.gz    
  3. cd otp_src_R14B01    
  4. ./configure    
  5. make    
  6.  make install  注意在make install 时使用root权限   
 
2. xmlto ( rabbitmq 编译安装时需要使用)
 
 
  1. wget  https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.23.tar.gz    
  2. yum install -y docbook-style-xsl  
  3. tar -zxf xmlto-0.0.23.tar.gz  
  4. cd xmlto-0.0.23  
 
如果 机器上 python 版本为2.6以下版本 会提示You don't appear to have simplejson.py installed 安装SimpleJson
3. SimpleJson安装(python 2.6以下安装)
 
 
  1. wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.1.3.tar.gz#md5=58d9b1d8fa17ea4ce205cea088607e02    
  2. tar -zxf simplejson-2.1.3.tar.gz  
  3. cd simplejson-2.1.3  
  4. cp simplejson 到 python安装目录下 如: /usr/local/lib/python2.5   
  5. cp -r ../simplejson /usr/lib64/python2.4/  
 
4. RabbitMQ安装
 
 
  1. wget http://www.rabbitmq.com/releases/rabbitmq-server/v2.3.1/rabbitmq-server-2.3.1.tar.gz    
  2. tar -zxf rabbitmq-server-2.3.1.tar.gz    
  3. cd rabbitmq-server-2.3.1   
  4. make  
  5. make TARGET_DIR=/u/longcheer/rabbitmq SBIN_DIR=/u/longcheer/rabbitmq/sbin MAN_DIR=/u/longcheer/rabbitmq/man install    注意在make install 时使用root权限   
 
5. 配置  rabbitmq
cd rabbitmq/sbin
rabbitmq-server文件中有三个参数修改为本用户可见目录
#Eralng控制文件
CONFIG_FILE= /etc/rabbitmq/rabbitmq
#日志文件
LOG_BASE= /u/rabbitmq/logs
#数据库文件
MNESIA_BASE= /u/rabbitmq/db
 
 
 
  1. groupadd -g 10001 rabbitmq  
  2. useradd -u 10001 -g 10001 rabbitmq  
  3. chown -R long:long rabbitmq  
  4. mkdir -pv /u/rabbitmq/logs  
  5. mkdir -pv /u/rabbitmq/db  
  6. chown rabbitmq:rabbitmq /u/rabbitmq/logs  
  7. chown rabbitmq:rabbitmq /u/rabbitmq/db  
 
6.启动 RabbitMQ
 
 
  1. cd rabbitmq/sbin  
  2. ./rabbitmq-server start  
或设置后台运行  nohup ./rabbitmq-server start > nohup.out&
成功启动后会有日下提示 :
 
 
  1. Activating RabbitMQ plugins ...  
  2. 0 plugins activated:  
  3. +---+   +---+  
  4. |   |   |   |  
  5. |   |   |   |  
  6. |   |   |   |  
  7. |   +---+   +-------+  
  8. |                   |  
  9. | RabbitMQ +---+   |  
  10. |           |   |   |  
  11. |   v2.3.1 +---+   |  
  12. |                   |  
  13. +-------------------+  
  14. AMQP 0-9-1 / 0-9 / 0-8  
  15. Copyright (C) 2007-2011 VMware, Inc.  
  16. Licensed under the MPL. See http://www.rabbitmq.com/  
  17. broker running  
 
 
Rabbitmq集群环境的搭建
一个 rabbitmq集 群中可以共享 user,vhost,queue,exchange等,所有的数据和状态都是必须在所有节点上复制的,一个例外是,那些当前只属于创建它的节点的消息队列,尽管它们可见且可被所有节点读取。rabbitmq节点可以动态的加入到集群中,一个节点它可以加入到集群中,也可以从集群环集群会进行一个基本的负载均衡。
集群中有两种节点:
1 内存节点:只保存状态到内存(一个例外的情况是:持久的queue的持久内容将被保存到disk)
2 磁盘节点:保存状态到内存和磁盘。
内存节点虽然不写入磁盘,但是它执行比磁盘节点要好。集群中,只需要一个磁盘节点来保存状态 就足够了
如果集群中只有内存节点,那么不能停止它们,否则所有的状态,消息等都会丢失。
 
Rabbitmq的集群是依赖于 erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在$HOME/.Erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信。
-r-------- 1 long long     21 Aug 1 08:08 .erlang.cookie
1 将其中一台节点上的 .erlang.cookie值复制下来保存到其他节点上。或者使用scp的方法也可,但是要注意文件的权限和属主属组。
 
 
  1. $ cat .erlang.cookie  
  2. IYZNFNJIUWABJUELIUFE  
将值保存到其他节点上 :
先更改文件权限,给予其可写权限:
 
 
  1. $chmod 700 .erlang.cookie  
  2. $ echo -n " IYZNFNJIUWABJUELIUFE" >$HOME/.erlang.cookie  
  3. $chmod 400 .erlang.cookie  
PS:此步骤建议在 rabbitmq启动之前完成。
2 确保节点之间主机名称可以相互解析。
182.71.**   LCT-IND-DB1
182.71.**         LCT-IND-DB2
182.71.**         LCT-IND-APP1
182.71.**         LCT-IND-APP2
前期准备工作已经完成,下面就来开始 rabbitmq集群的配置,有了erliang的集群环境,rabbitmq集群环境构建起来很简单,只需要把其他节点添加到一台节点中即可,这里采用将LCT-IND-APP2,LCT-IND-APP1添加到LCT-IND-DB2上的方法。 只需简单的几步即可。如无特殊说明,以下步骤在APP2和APP1上都要做。
 
 
  1. $cd /u/rabbitmq/sbin  
  2. $./rabbitmq-server –detached //三个节点都启动  
  3. $./rabbitmqctl status   //查看状态  
  4. $./rabbitmqctl stop_app  
  5. $./rabbitmqctl reset  
LCT-IND-APP2上:
 
 
  1. $./rabbitmqctl cluster rabbit@LCT-IND-DB2 rabbit@LCT-IND-APP2 //添加APP2到DB2中为disk node  
LCT-IND-APP1上:
 
 
  1. $./rabbitmqctl cluster rabbit@LCT-IND-DB2 rabbit@LCT-IND-APP1 //添加APP1到DB2中为disk node  
  2. $./rabbitmqctl start_app  
APP2上查看集群状态:
 
 
  1. $/u/rabbitmq/sbin/rabbitmqctl status  
  2. Status of node 'rabbit@LCT-IND-APP2' ...  
  3. [{running_applications,[{rabbit,"RabbitMQ","2.3.1"},  
  4.                         {mnesia,"MNESIA CXC 138 12","4.4.15"},  
  5.                         {os_mon,"CPO CXC 138 46","2.2.5"},  
  6.                         {sasl,"SASL CXC 138 11","2.1.9.2"},  
  7.                         {stdlib,"ERTS CXC 138 10","1.17.1"},  
  8.                         {kernel,"ERTS CXC 138 10","2.14.1"}]},  
  9.  {nodes,[{disc,['rabbit@LCT-IND-DB2','rabbit@LCT-IND-APP2',  
  10.                 'rabbit@LCT-IND-APP1']}]},  
  11.  {running_nodes,['rabbit@LCT-IND-APP1','rabbit@LCT-IND-DB2',  
  12.                  'rabbit@LCT-IND-APP2']}]  
 
改变节点类型,以 APP2为例:
 
 
  1. $./rabbitmqctl stop_app  
  2. $./rabbitmqctl cluster rabbit@LCT-IND-DB2 //将APP2改为ram node  
  3. $./rabbitmqctl start_app  
  4.    
重启集群节点:
$./rabbitmqctl stop    //关闭某一个节点
$./rabbitmqctl status //查看集群节点状态
$./rabbitmq-server –detached
PS:在任何时候必须有一个 disk node在运行。
 
节点退出集群,以 APP1为例:
$./rabbitmqctl stop_app
Stopping node rabbit@ LCT-IND-APP1 ...done.
$./rabbitmqctl reset //如果只剩最后一个节点,退出集群时使用force_reset 
Resetting node rabbit@ LCT-IND-APP1 ...done.
$./rabbitmqctl start_app
Starting node rabbit@ LCT-IND-APP1 ...done.
 
如果在 rabbitmq单机版服务开启的过程中,改动erlang.cookie,就会在服务重启后出现各种各样的问题,所以建议在rabbitmq的服务开启之前要把erlang.cookie配置好。如果出现问题,解决方法就是将服务停掉后执行以下命令:
rm –f /var/lib/rabbitmq/mnesia/rabbit/*
如果在 rabbitmq-server的配置文件中更改了数据库存放目录,则执行以下命令:
rm –f /path/to/rabbitmq/db/rabbit/*
重启服务即可!









本文转自 490999122 51CTO博客,原文链接:http://blog.51cto.com/lyp0909/640550,如需转载请自行联系原作者
相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
3月前
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
3月前
|
传感器 网络协议 物联网
手把手教你在 Windows 环境中搭建 MQTT 服务器
手把手教你在 Windows 环境中搭建 MQTT 服务器
251 0
|
1月前
|
消息中间件 数据安全/隐私保护 Docker
Docker安装rabbitmq
如何使用Docker安装和配置RabbitMQ服务,包括拉取RabbitMQ镜像、创建容器、配置持久化和访问管理界面的步骤。
77 0
Docker安装rabbitmq
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
消息中间件 Linux
centos7安装rabbitmq
centos7安装rabbitmq
|
3月前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
3月前
|
消息中间件 存储 负载均衡
|
2月前
|
消息中间件 Linux
linux之centos安装rabbitmq
linux之centos安装rabbitmq
|
3月前
|
消息中间件 存储 负载均衡
"RabbitMQ集群大揭秘!让你的消息传递系统秒变超级英雄,轻松应对亿级并发挑战!"
【8月更文挑战第24天】RabbitMQ是一款基于AMQP的开源消息中间件,以其高可靠性、扩展性和易用性闻名。面对高并发和大数据挑战时,可通过构建集群提升性能。本文深入探讨RabbitMQ集群配置、工作原理,并提供示例代码。集群由多个通过网络连接的节点组成,共享消息队列,确保高可用性和负载均衡。搭建集群需准备多台服务器,安装Erlang和RabbitMQ,并确保节点间通信顺畅。核心步骤包括配置.erlang.cookie文件、使用rabbitmqctl命令加入集群。消息发布至任一节点时,通过集群机制同步至其他节点;消费者可从任一节点获取消息。
43 2
|
3月前
|
存储 Ubuntu 安全
在Ubuntu 16.04上安装和保护Mosquitto MQTT消息代理的方法
在Ubuntu 16.04上安装和保护Mosquitto MQTT消息代理的方法
95 1

热门文章

最新文章