Rabbitmq的安装及集群环境的搭建 推荐
2011-08-16 14:25
681 查看
1.Erlang 安装
[align=left] [/align]
[align=left]2. xmlto (rabbitmq 编译安装时需要使用)[/align]
如果 机器上python 版本为2.6以下版本 会提示You don't appear to have simplejson.py installed 安装SimpleJson
3.SimpleJson安装(python 2.6以下安装)
[align=left] [/align]
4.RabbitMQ安装
5. 配置 rabbitmq
[align=left]cd rabbitmq/sbin[/align]
[align=left]rabbitmq-server文件中有三个参数修改为本用户可见目录[/align]
[align=left]#Eralng控制文件[/align]
[align=left]CONFIG_FILE= /etc/rabbitmq/rabbitmq[/align]
[align=left]#日志文件[/align]
[align=left]LOG_BASE= /u/rabbitmq/logs[/align]
[align=left]#数据库文件[/align]
[align=left]MNESIA_BASE= /u/rabbitmq/db[/align]
[align=left] [/align]
6.启动RabbitMQ
[align=left]或设置后台运行 nohup ./rabbitmq-server start > nohup.out&[/align]
成功启动后会有日下提示:
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的方法也可,但是要注意文件的权限和属主属组。
将值保存到其他节点上:
先更改文件权限,给予其可写权限:
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上都要做。
在LCT-IND-APP2上:
在LCT-IND-APP1上:
在APP2上查看集群状态:
改变节点类型,以APP2为例:
重启集群节点:
$./rabbitmqctl stop //关闭某一个节点
$./rabbitmqctl status //查看集群节点状态
$./rabbitmq-server –detached
PS:在任何时候必须有一个disk node在运行。
节点退出集群,以APP1为例:
如果在rabbitmq单机版服务开启的过程中,改动erlang.cookie,就会在服务重启后出现各种各样的问题,所以建议在rabbitmq的服务开启之前要把erlang.cookie配置好。如果出现问题,解决方法就是将服务停掉后执行以下命令:
[align=left]rm –f /var/lib/rabbitmq/mnesia/rabbit/*[/align]
如果在rabbitmq-server的配置文件中更改了数据库存放目录,则执行以下命令:
rm –f /path/to/rabbitmq/db/rabbit/*
重启服务即可!
参考文章:
http://www.rabbitmq.com/clustering.html
http://www.godlikemouse.com/2010/12/14/how-to-cluster-rabbit-mq/
wget http://www.erlang.org/download/otp_src_R14B.tar.gz tar -zxf otp_src_R14B01.tar.gz cd otp_src_R14B01 ./configure make make install 注意在make install 时使用root权限
[align=left] [/align]
[align=left]2. xmlto (rabbitmq 编译安装时需要使用)[/align]
wget https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.23.tar.gz yum install -y docbook-style-xsl tar -zxf xmlto-0.0.23.tar.gz cd xmlto-0.0.23
如果 机器上python 版本为2.6以下版本 会提示You don't appear to have simplejson.py installed 安装SimpleJson
3.SimpleJson安装(python 2.6以下安装)
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.1.3.tar.gz#md5=58d9b1d8fa17ea4ce205cea088607e02 tar -zxf simplejson-2.1.3.tar.gz cd simplejson-2.1.3 cp simplejson 到 python安装目录下 如: /usr/local/lib/python2.5 cp -r ../simplejson /usr/lib64/python2.4/
[align=left] [/align]
4.RabbitMQ安装
wget http://www.rabbitmq.com/releases/rabbitmq-server/v2.3.1/rabbitmq-server-2.3.1.tar.gz tar -zxf rabbitmq-server-2.3.1.tar.gz cd rabbitmq-server-2.3.1 make make TARGET_DIR=/u/longcheer/rabbitmq SBIN_DIR=/u/longcheer/rabbitmq/sbin MAN_DIR=/u/longcheer/rabbitmq/man install 注意在make install 时使用root权限
5. 配置 rabbitmq
[align=left]cd rabbitmq/sbin[/align]
[align=left]rabbitmq-server文件中有三个参数修改为本用户可见目录[/align]
[align=left]#Eralng控制文件[/align]
[align=left]CONFIG_FILE= /etc/rabbitmq/rabbitmq[/align]
[align=left]#日志文件[/align]
[align=left]LOG_BASE= /u/rabbitmq/logs[/align]
[align=left]#数据库文件[/align]
[align=left]MNESIA_BASE= /u/rabbitmq/db[/align]
[align=left] [/align]
groupadd -g 10001 rabbitmq useradd -u 10001 -g 10001 rabbitmq chown -R long:long rabbitmq mkdir -pv /u/rabbitmq/logs mkdir -pv /u/rabbitmq/db chown rabbitmq:rabbitmq /u/rabbitmq/logs chown rabbitmq:rabbitmq /u/rabbitmq/db
6.启动RabbitMQ
cd rabbitmq/sbin ./rabbitmq-server start
[align=left]或设置后台运行 nohup ./rabbitmq-server start > nohup.out&[/align]
成功启动后会有日下提示:
Activating RabbitMQ plugins ... 0 plugins activated: +---+ +---+ | | | | | | | | | | | | | +---+ +-------+ | | | RabbitMQ +---+ | | | | | | v2.3.1 +---+ | | | +-------------------+ AMQP 0-9-1 / 0-9 / 0-8 Copyright (C) 2007-2011 VMware, Inc. Licensed under the MPL. See http://www.rabbitmq.com/ 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的方法也可,但是要注意文件的权限和属主属组。
$ cat .erlang.cookie IYZNFNJIUWABJUELIUFE
将值保存到其他节点上:
先更改文件权限,给予其可写权限:
$chmod 700 .erlang.cookie $ echo -n " IYZNFNJIUWABJUELIUFE" >$HOME/.erlang.cookie $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上都要做。
$cd /u/rabbitmq/sbin $./rabbitmq-server –detached //三个节点都启动 $./rabbitmqctl status //查看状态 $./rabbitmqctl stop_app $./rabbitmqctl reset
在LCT-IND-APP2上:
$./rabbitmqctl cluster rabbit@LCT-IND-DB2 rabbit@LCT-IND-APP2 //添加APP2到DB2中为disk node
在LCT-IND-APP1上:
$./rabbitmqctl cluster rabbit@LCT-IND-DB2 rabbit@LCT-IND-APP1 //添加APP1到DB2中为disk node $./rabbitmqctl start_app
在APP2上查看集群状态:
$/u/rabbitmq/sbin/rabbitmqctl status Status of node 'rabbit@LCT-IND-APP2' ... [{running_applications,[{rabbit,"RabbitMQ","2.3.1"}, {mnesia,"MNESIA CXC 138 12","4.4.15"}, {os_mon,"CPO CXC 138 46","2.2.5"}, {sasl,"SASL CXC 138 11","2.1.9.2"}, {stdlib,"ERTS CXC 138 10","1.17.1"}, {kernel,"ERTS CXC 138 10","2.14.1"}]}, {nodes,[{disc,['rabbit@LCT-IND-DB2','rabbit@LCT-IND-APP2', 'rabbit@LCT-IND-APP1']}]}, {running_nodes,['rabbit@LCT-IND-APP1','rabbit@LCT-IND-DB2', 'rabbit@LCT-IND-APP2']}]
改变节点类型,以APP2为例:
$./rabbitmqctl stop_app $./rabbitmqctl cluster rabbit@LCT-IND-DB2 //将APP2改为ram node $./rabbitmqctl start_app
重启集群节点:
$./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配置好。如果出现问题,解决方法就是将服务停掉后执行以下命令:
[align=left]rm –f /var/lib/rabbitmq/mnesia/rabbit/*[/align]
如果在rabbitmq-server的配置文件中更改了数据库存放目录,则执行以下命令:
rm –f /path/to/rabbitmq/db/rabbit/*
重启服务即可!
参考文章:
http://www.rabbitmq.com/clustering.html
http://www.godlikemouse.com/2010/12/14/how-to-cluster-rabbit-mq/
相关文章推荐
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.6.集群管理命令
- Centos 7.2 安装 Ambari 2.2.2 + HDP 2.4.2 搭建Hadoop集群的环境配置
- [置顶] ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决
- Hadoop化繁为简-从安装Linux到搭建集群环境
- 在ubuntu环境下MPI分布式集群搭建-安装MPICH2(2)
- RabbitMQ 集群环境安装
- rabbitmq环境搭建--安装
- RabbitMQ概念及环境搭建(一)单节点安装与配置
- 13,数据挖掘环境搭建-kafka集群安装
- Hadoop 2.6 集群搭建从零开始之3 Hadoop的安装与配置(伪分布式环境)
- 【rabbitmq】rabbitmq集群环境搭建
- RabbitMQ集群环境搭建-4
- RabbitMQ:Docker环境下搭建rabbitmq集群
- Hadoop从安装Linux到搭建集群环境
- J2EE环境的搭建之一—weblogic安装与配置详解 推荐
- openstack controller ha测试环境搭建记录(五)——配置rabbitmq集群
- hadoop集群搭建之一(Hadoop环境安装)
- docker搭建rabbitmq集群环境的方法
- CentOS6.5安装mysql cluster7.3.7 搭建mysql数据库集群环境
- elasticsearch 6.0.0(多节点安装) + kibana 6.0.0集群环境搭建