Rabbitmq的装置及集群环境的建立51CTO博客 - 乐橙lc8

Rabbitmq的装置及集群环境的建立51CTO博客

2019年04月01日10时25分23秒 | 作者: 运莱 | 标签: 集群,装置,节点 | 浏览: 321

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 dont 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/* 重启效劳即可!   参阅文章: http://www.rabbitmq.com/clustering.html http://www.godlikemouse.com/2010/12/14/how-to-cluster-rabbit-mq/  
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表乐橙lc8立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章