热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安装rabbitmq以及集群配置

前言:(一些有用没用的唠叨,反正看了也不少肉,跳过也没啥)情况是这样的:虚拟机、CentOS6.5、免编译包安装rabbitmq集群,可不用连外网。我原计划是安装在虚

前言:

(一些有用没用的唠叨,反正看了也不少肉,跳过也没啥)

情况是这样的:虚拟机、CentOS 6.5、免编译包安装rabbitmq集群,可不用连外网。

我原计划是安装在虚拟机上wyt1/wyt2/wyt3/wyt4,后来实际用了两个节点,其实多增加节点的方法是一样的,就先不弄那么多啦。

  截图下面

     不同的OS或者安装方式自己琢磨看,然后注意下箭头的两个part

这两个part也要看,因为我就是没看erlang的版本导致一开始失败的,官网写着运行rabbitmq需要erlang的最小版
本是R16B03,如果非要用旧版本的erlang,那么用rabbitmq3.5版本的,这个可以用R13B03,并且如果是集群的
模式,要保证节点用的erlang的版本一致。

(0)安装依赖包:

每个节点都要装,反正各个节点命令敲一次,虽然包有点多,要是嫌烦我就不知道怎么办了,可能需要先去治治懒

tk、tcl、unixODBC、ncurses*、gcc* make ncurses-devel libxslt xsltproc unzip xmlto zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel      我没有找到libpcap-devel,只装了libpcap

# yum -y install libxslt-1.1.26-2.el6_3.1.x86_64.rpm

# yum -y install xmlto-0.0.23-3.el6.x86_64.rpm

上面这两个是单独装的,因为直接

# yum install -y libxslt* xmlto*    报错

 

 

xmlto是rabbitmq编译安装时用

ODBC是erlang用的

  

(1)安装ERLANG

1.1)下载erlang安装包

首先,因为RabbitMQ由ERLANG实现,下载ERLANG 源代码。

官网下载地址:  http://erlang.org/download/     去下载箭头指的这个玩意

 

 或者: [root@wyt1 ~]# wget http://www.erlang.org/download/otp_src_19.2.tar.gz

1.2)将安装包scp到别的节点

[root@wyt1 ~]# scp otp_src_19.2.tar.gz root@wyt2:/root

[root@wyt1 ~]# scp otp_src_19.2.tar.gz root@wyt3:/root

[root@wyt1 ~]# scp otp_src_19.2.tar.gz root@wyt4:/root

1.3)安装erlang

每个节点:

# mkdir -p /usr/local/erlang

# tar -zxvf  otp_src_19.2.tar.gz

# cd otp_src_19.2

# ./configure --prefix=/usr/local/erlang

# make

# make install

在 ./configure之后可能

报下面的东西(以wyt1为例)

[root@wyt1 otp_src_19.2]# ./configure --prefix=/usr/local/erlang

*********************************************************************

**********************  APPLICATIONS INFORMATION  *******************

*********************************************************************

 

wx             : wxWidgets not found, wx will NOT be usable

 

*********************************************************************

*********************************************************************

**********************  DOCUMENTATION INFORMATION  ******************

*********************************************************************

 

documentation  :

                 fop is missing.

                 Using fakefop to generate placeholder PDF files.

 

*********************************************************************

 之后发现这个没有影响,就是一些document巴拉巴拉的,详见下面这篇blog,感谢博主!

http://blog.csdn.net/clodfront/article/details/7930175

 反正没装那个wxWidgets库也能装好erlang,如果你是强迫症处女座,非要安装,就看这个链接:http://www.tuicool.com/articles/iIruqyA   (感谢网络爬虫,更感谢博主)

  1.4)添加erlang环境变量(4台都做,下面以wyt1为例)

[root@wyt1 bin]# vim /etc/profile

ERLANG=/usr/local/erlang

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$GOROOT/bin:$ZOOKEEPER_HOME/bin:$GOPATH/bin:$GIT/bin:$MYSQL/bin:$MYSQL/lib:$ERLANG/bin

export GOROOT GOPATH JAVA_HOME JRE_HOME CLASSPATH PATH ZOOKEEPER_HOME GIT MYSQL MYCAT_HOME ERLANG

[root@wyt1 bin]# source /etc/profile

[root@wyt1 bin]# which erl

/usr/local/erlang/bin/erl

 

1.5)测试erlang(下面以wyt1为例)

[root@wyt1 ~]# erl

Erlang/OTP 19 [erts-8.2] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

 

Eshell V8.2  (abort with ^G)

1> io:format("hello world ~n").

hello world --------安装成功

ok

2> ---------------注意,这个地方是按快捷键Ctrl+C,然后选a就退出来了

BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded

       (v)ersion (k)ill (D)b-tables (d)istribution

a

[root@wyt1 ~]#

 

(2)安装 python

CentOS 6.5的自带python是2.6.6,

查看python版本

# python -V

Python 2.6.6

用2.6以上的版本就不用安装SampleJson,否则要安装,

 

安装samplejson方法(我之所以安装是因为一开始不知道可以不用安装,,,抛出安装方法拯救低版本的python,以wyt1为例)

[root@wyt1 ~]# cd simplejson-3.10.0

[root@wyt1 simplejson-3.10.0]# python setup.py install

 

 

(3)安装 rabbitmq-server(无特殊指定步骤,下面的步骤每个节点都要进行)

3.1)下载二进制免编译的包

下载地址:http://www.rabbitmq.com/install-generic-unix.html

 

3.2)安装

上传安装包到每台虚拟机

# tar -vxJf rabbitmq-server-generic-unix-3.6.6.tar.xz -C /usr/local/

# cd /usr/local/

# mv rabbitmq_server-3.6.6 rabbitmq

 

3.3)基本配置

 

上面内容大致的意思是可以自定义rabbitmq环境的环境变量,

位置和文件是$RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf,

服务的组件也要配置,位置在$RABBITMQ_HOME/etc/rabbitmq/rabbitmq.config

并且这两个文件在安装都不存在,需要自己创建。

 

3.3.1) 首先在profile中加入$RABBITMQ_HOME

# vim /etc/profile

# source /etc/profile

#  tail /etc/profile

JRE_HOME=/usr/local/java/jdk/jre

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

ZOOKEEPER_HOME=/usr/local/zookeeper

GIT=/usr/local/git

MYSQL=/usr/local/mysql

ERLANG=/usr/local/erlang

RABBITMQ_HOME=/usr/local/rabbitmq

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$GOROOT/bin:$ZOOKEEPER_HOME/bin:$GOPATH/bin:$GIT/bin:$MYSQL/bin:$MYSQL/lib:$ERLANG/bin:$PYTHON/bin:$RABBITMQ_HOME/sbin

export GOROOT GOPATH JAVA_HOME JRE_HOME CLASSPATH PATH ZOOKEEPER_HOME GIT MYSQL MYCAT_HOME ERLANG RABBITMQ_HOME

 

3.3.2)创建两个相应的文件

# cd /usr/local/rabbitmq/etc/rabbitmq

# touch rabbitmq-env.conf

# touch rabbitmq.config

3.3.3)修改config文件,加入下面的键值对,为了用web页面管理rabbitmq时可以用guest通过非localhost登录

 

# vim rabbitmq.config

# cat rabbitmq.config

[{rabbit, [{loopback_users, []}]}].

详见官网: http://www.rabbitmq.com/access-control.html

 

 

3.4)修改用户资源限制(启动之前)

 

# ulimit -S -n

1024

# ulimit -S -n 4096

# ulimit -S -n

4096

3.5)检查端口占用,保证下述端口没有被用

 

(4)使用rabbitmq

4.1)启动wyt1节点 ,先测试一下是否安装成功,也是为了在$HOME下生成之后集群用的 .erlang.COOKIE 文件

[root@wyt1 ~]# cd /usr/local/rabbitmq/sbin

[root@wyt1 sbin]# ./rabbitmq-server start

 

              RabbitMQ 3.6.6. Copyright (C) 2007-2016 Pivotal Software, Inc.

  ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/

  ##  ##

  ##########  Logs: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@wyt1.log

  ######  ##        /usr/local/rabbitmq/var/log/rabbitmq/rabbit@wyt1-sasl.log

  ##########

              Starting broker...

 completed with 0 plugins.

[root@wyt1 ~]#

可以看到成功启动后会生成log文件和路径 /usr/local/rabbitmq/var/log/rabbitmq/rabbit@wyt1.log

 

 服务的端口也相应起来

 

4.2)启用web管理插件

[why@wyt1 sbin]$  ./rabbitmq-plugins list-----查看一下启动前的

[why@wyt1 sbin]$  ./rabbitmq-plugins enable rabbitmq_management

The following plugins have been enabled:

  mochiweb

  webmachine

  rabbitmq_web_dispatch

  amqp_client

  rabbitmq_management_agent

  rabbitmq_management

 

Applying plugin configuration to rabbit@wyt1... started 6 plugins.

[why@wyt1 sbin]$  ./rabbitmq-plugins list-----启动后再看一下

4.3)登录web管理界面

浏览器:http://192.168.6.11:15672

用户:guest 密码:guest

 

 

4.4)停止

[why@wyt1 sbin]$ ./rabbitmqctl stop

Stopping and halting node rabbit@wyt1 ...

Gracefully halting Erlang VM

[why@wyt1 sbin]$

 

官网: http://www.rabbitmq.com/install-generic-unix.html

 

(5)rabbitmq集群设置(我这里只用wyt1和wyt2两个节点,加上其余的节点方法是一样的)

官网集群配置地址: http://www.rabbitmq.com/clustering.html

5.1)确认一下hosts解析是否配好

(截屏wyt2为例),因为集群的通讯是靠hostname的

 

 

官网解释:

 

5.2)配置集群前要保证参与集群的node是能够单点启动的,所以先验证一下wyt2节点是不是能够启动

[root@wyt2 sbin]# ./rabbitmq-server start

[root@wyt2 sbin]# ./rabbitmq-plugins enable rabbitmq_management

http://192.168.6.10:15672

[root@wyt2 sbin]# ./rabbitmqctl stop

 5.3)保证每个节点的.erlang.COOKIE文件一致。

 

刚才wyt1节点启动后会在root家目录生成.erlang.COOKIE文件,将这个文件scp到别的节点root的家目录下

5.3.1)删掉wyt2节点的COOKIE文件

[root@wyt2 ~]# rm -rf .erlang.COOKIE

5.3.2)将节点一的拷贝过去,也可以在wyt2节点启动之前就将wyt1节点的COOKIE文件放过去

[root@wyt1 ~]# scp .erlang.COOKIE root@wyt2:/root

注意:这个文件的权限是400,我直接将wyt2节点启动后的.erlang.COOKIE文件删了,如果想要修改,需要chmod 600 .erlang.COOKIE,修改之后还要再改回400权限chmod 400 .erlang.COOKIE

 

5.4)将节点1和2放到后台启动:

[root@wyt1 sbin]#   ./rabbitmq-server  -detached

[root@wyt2 sbin]# ./rabbitmq-server –detached

 详见官网是以三个节点为例:

启动时可以实时看到log文件的记录(我是习惯性的看看,万一 有ERROR什么的):

下面简要取wyt2的日志的内容

=INFO REPORT==== 8-Feb-2017::18:55:56 ===

Starting RabbitMQ 3.6.6 on Erlang 19.2

Copyright (C) 2007-2016 Pivotal Software, Inc.

Licensed under the MPL.  See http://www.rabbitmq.com/

 

=INFO REPORT==== 8-Feb-2017::18:55:56 ===

node           : rabbit@wyt2

home dir       : /root

config file(s) : /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config

COOKIE hash    : iBUGZ1/RD/8OxjPAPuyi2Q==

log            : /usr/local/rabbitmq/var/log/rabbitmq/rabbit@wyt2.log

sasl log       : /usr/local/rabbitmq/var/log/rabbitmq/rabbit@wyt2-sasl.log

database dir   : /usr/local/rabbitmq/var/lib/rabbitmq/mnesia/rabbit@wyt2

可以看一下状态

 

5.5)集群配置

5.5.1)加入集群前查看一下每个节点的集群状态,这个时候只有自己节点

[root@wyt1 sbin]# ./rabbitmqctl cluster_status

Cluster status of node rabbit@wyt1 ...

[{nodes,[{disc,[rabbit@wyt1]}]},

 {running_nodes,[rabbit@wyt1]},

 {cluster_name,<<"rabbit@localhost">>},

 {partitions,[]},

 {alarms,[{rabbit@wyt1,[]}]}]

 

[root@wyt2 sbin]# ./rabbitmqctl cluster_status

Cluster status of node rabbit@wyt2 ...

[{nodes,[{disc,[rabbit@wyt2]}]},

 {running_nodes,[rabbit@wyt2]},

 {cluster_name,<<"rabbit@localhost">>},

 {partitions,[]},

 {alarms,[{rabbit@wyt2,[]}]}]

 

5.5.2)将节点wyt2加入集群

[root@wyt2 sbin]# ./rabbitmqctl stop_app  (这里是stop_app而不是直接关闭节点的stop)

Stopping node rabbit@wyt2 ...

[root@wyt2 sbin]#

log日志截图

 

 

[root@wyt2 sbin]# ./rabbitmqctl join_cluster rabbit@wyt1

Clustering node rabbit@wyt2 with rabbit@wyt1 ...

[root@wyt2 sbin]#

log日志截图:

 

 

[root@wyt2 sbin]# ./rabbitmqctl start_app

Starting node rabbit@wyt2 ...

 

              RabbitMQ 3.6.6. Copyright (C) 2007-2016 Pivotal Software, Inc.

  ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/

  ##  ##

  ##########  Logs: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@wyt2.log

  ######  ##        /usr/local/rabbitmq/var/log/rabbitmq/rabbit@wyt2-sasl.log

  ##########

              Starting broker...

 completed with 6 plugins.

[root@wyt2 sbin]#

5.5.3)查看节点的集群状态

[root@wyt2 sbin]# ./rabbitmqctl cluster_status

Cluster status of node rabbit@wyt2 ...

[{nodes,[{disc,[rabbit@wyt1,rabbit@wyt2]}]},

 {running_nodes,[rabbit@wyt1,rabbit@wyt2]},

 {cluster_name,<<"rabbit@localhost">>},

 {partitions,[]},

 {alarms,[{rabbit@wyt1,[]},{rabbit@wyt2,[]}]}]

 

[root@wyt1 sbin]# ./rabbitmqctl cluster_status

Cluster status of node rabbit@wyt1 ...

[{nodes,[{disc,[rabbit@wyt1,rabbit@wyt2]}]},

 {running_nodes,[rabbit@wyt2,rabbit@wyt1]},

 {cluster_name,<<"rabbit@localhost">>},

 {partitions,[]},

 {alarms,[{rabbit@wyt2,[]},{rabbit@wyt1,[]}]}]

 

可以看到管理界面是两个节点了

 

详见官网:

 

 

注:非root用户的安装唯一区别就是erlang和rabbitmq_home环境变量的位置改写,文档要不要整理看我心情和时间。

[why@wyt3 ~]$ cat .bash_profile

# .bash_profile

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

 

# User specific environment and startup programs

ERLANG=/home/why/erlang

RABBITMQ_HOME=/home/why/rabbitmq

PATH=/home/why/mysql/bin:$PATH:$HOME/bin:$ERLANG/bin:$RABBITMQ_HOME/sbin

export PATH ERLANG RABBITMQ_HOME

 

 

 

 

***************************************** OVER *********************************************



推荐阅读
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文详细介绍了批处理技术的基本概念及其在实际应用中的重要性。首先,对简单的批处理内部命令进行了概述,重点讲解了Echo命令的功能,包括如何打开或关闭回显功能以及显示消息。如果没有指定任何参数,Echo命令会显示当前的回显设置。此外,文章还探讨了批处理技术在自动化任务执行、系统管理等领域的广泛应用,为读者提供了丰富的实践案例和技术指导。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 在CentOS系统中部署与配置ZooKeeper详解 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 【Linux】CentOS 7 远程连接指南:高效安全的远程管理方法
    在 CentOS 7 中实现高效且安全的远程管理,本文详细介绍了如何检查和安装配置 OpenSSH。首先,通过 `yum list installed` 命令检查系统是否已安装 OpenSSH,若未安装,则使用 `yum install openssh-server` 进行安装。随后,配置 SSH 服务以确保其安全性和稳定性,包括修改默认端口、禁用 root 登录等关键步骤。此外,还提供了常见问题的解决方案,帮助用户顺利进行远程连接。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 开发笔记:深入解析Android自定义控件——Button的72种变形技巧
    开发笔记:深入解析Android自定义控件——Button的72种变形技巧 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
author-avatar
好kc好先生之家
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有