安装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_R14B
# ./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
[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 *********************************************
安装rabbitmq以及集群配置的更多相关文章
- Centos6 安装 Redis 和集群配置
Redis安装 先确认gcc和tcl已经安装 sudo yum install gcc-c++ sudo yum install tcl 解压, 编译和安装 .tar.gz /usr/src/ cd ...
- Centos6安装SGE以及集群配置
最近给实验室的服务器集群安装SGE,摸索了一天多,踩了好些坑,现在将其安装和配置过程记录下来,以免以后需要使用时又忘记了. 一.准备工作 1.关闭集群中所有节点的防火墙 #service iptabl ...
- redis linux安装与简单集群配置
由于项目原因最近在使用redis,把redis的安装以及配置记录下来方便查看. 1.下载 地址http://download.redis.io/releases/ 需要哪个版本就使用那个版本 2.解 ...
- 使用kubeoperator安装的k8s集群配置Ingress规则有关说明
单独创建一个nginx 在 Deployment 里创建一个nginx工作负载,镜像用:nginx:alpine,并配置service为ClusterIP,然后添加Ingress规则 本地主机host ...
- rabbitmq安装与高可用集群配置
rabbitmq版本:3.6.12 rabbitmq安装 1.安装openssl wget http://www.openssl.org/source/openssl-1.0.0a.tar.gz &a ...
- RabbitMq 集群配置
1. RabbitMQ 所需的附属安装包 1.1 openGL安装 执行命令: [root@localhost local]# yum install mesa-libGL-devel mesa-l ...
- rabibtMQ安装及集群配置-linux
安装RabbitMQ RabbitMQ是流行的开源消息队列系统,用erlang语言开发,故首先需要安装erlang依赖及erlang. 安装erlang依赖的基本环境,通过yum方式进行安装: yum ...
- RabbitMQ(三) 集群配置
RabbitMQ--集群配置 之前不管是搞Redis.SQL.Mongo还是其他的东西,一律都没说过集群要怎么搞,电脑实在是带不动.说透彻点就是懒,懒得搭也懒得写,今日深刻意识到错误,做学问是不能懒的 ...
- Redis+PHP扩展的安装和Redis集群的配置 与 PHP负载均衡开发方案
以前有想过用 Memcache 实现M/S架构的负载均衡方案,直到听说了 Redis 后才发现它做得更好.发了几天时间研究了一下 Redis ,感觉真的很不错,特整理一下! 以下操作都是在 SUSE ...
随机推荐
- SQL2008实现数据库自动定时备份——维护计划
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员 每天守到晚上1点去备份数据库.要实现数据库的 ...
- Swiper.js使用遇到的问题总结onSlideChangeEnd回调偶尔触发,偶尔不触发等;
Swiper 是一个开源免费的移动触摸插件. 在使用中遇到这样一个问题,记录一下. page 间切换效果 使用 fade 的时候,如果每个页面的大小不一样, 比如第一个页面全屏, 第二个页面比第一个小 ...
- 在 Windows Forms 和 WPF 应用中使用 FontAwesome 图标
前言 FontAwesome 大家都不陌生,精美的图标,出现在各式各样的网页中. 最近在做 Windows Forms 应用程序,要求美观,就想能不能把 FontAwesome 图标用上,于是就有了本 ...
- ubuntu linux 设置环境变量
添加环境变量 1.添加临时变量 终端中输入: PATH="$PATH:yourpath" :yourpath是要添加的环境变量(即要添加目录的绝对路径,例:/home/myprog ...
- 在C++中反射调用.NET(二)
反射调用返回复杂对象的.NET方法 定义数据接口 上一篇在C++中反射调用.NET(一)中,我们简单的介绍了如何使用C++/CLI并且初步使用了反射调用.NET程序集的简单方法,今天我们看看如何在C+ ...
- ubuntu-16.04(linux)使用Reaver爆破wifi密码(路由器的WPS功能漏洞)
路由器的WPS功能 很多路由器都有WPS功能, 这边的WPS不是office工具软件, 而是路由器的一个功能: 路由器中WPS是由Wi-Fi联盟所推出的全新Wi-Fi安全防护设定(Wi-Fi Prot ...
- InfluxDB安装及配置
这是我之前整理的InfluxDB安装及配置的笔记,这里记录下,也方便我以后查阅. 环境: CentOS6.5_x64 InfluxDB版本:1.1.0 一.安装 1.二进制安装 这里以centos6. ...
- git 打卡的第一天
因为某种原因,所以不得不重新巩固下前端的基础知识,从最基本的学习还得额外的学习新知识,倍感压力之大. 昨天初略学习下git,算是自己学习的一个新知识.简单记录下,希望四海八荒的大神看过来,有错的请指导 ...
- iOS之网络数据下载和JSON解析
iOS之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍IOS中如何利用NSURLconnection从网络上下载数据以及如何解析下载下来的JSON数据格式,以及如何显示数据和托图片的异步 ...
- SpringMVC简版教程、部分功能
注:本文只用注解来实现 前言 SpringMVC各种流程图流程图(其他的各种流程图) jsp.xml.action彼此之间的关系,都如何使用 spring-mvc.xml如何配置,放在哪里? acti ...