#1.首先不建议用openjdk,建议采用oracle官网JDK
#2.首先卸载系统自带的低版本或者自带openjdk
#首先用命令java -version 查看系统中原有的java版本
#然后用用 rpm -qa | java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64 命令查看具体的信息,
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
#3.安装jdk-7u79-linux-x64.gz
#下载jdk-7u79-linux-x64.gz放置于/opt/java/jdk-7u79-linux-x64.gz并解压
cd /opt/java/
#这里是从oracle官网下载JDK7,现在oracle官网找个JDK7真心不容易,不知是不是为了推JDK8,JDK7的下载链接那个难找啊!!!
wget http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
tar -zxvf jdk-7u79-linux-x64.gz
#4.配置环境变量
#配置linux系统环境变量
vi /etc/profile
#在文件末尾追加如下内容
export JAVA_HOME=/opt/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#使配置生效
source /etc/profile
#5.检查JDK环境是否配置成功
java -version
1.3 ERLANG安装
安装rabbitmq首先必须安装Erlang,因为rabbitmq是用erlang开发的,这好比很多JAVA开发的程序首先要安装JDK一样。
目前Erlang(http://www.erlang.org)官网版本已经到了19.2,这里我下载的是Erlang版本17.0。
#1.下载、编译和安装erlang
cd /opt/software
#下载erlang源码包
wget http://erlang.org/download/otp_src_17.0.tar.gz
#解压erlang源码包
tar -zxvf otp_src_17.0.tar.gz
cd /opt/software/otp_src_17.0
#创建安装目录
mkdir -p /opt/erlang
#设置erlang安装目录,设置需不需要使用javac
#如果不需要就这么设置./configure --prefix=/opt/erlang --without-javac
./configure --prefix=/opt/erlang
#编译并安装
make
make install
#2.ERLANG环境变量配置
vi /etc/profile
#在文件末尾追加如下内容
export ERLANG_HOME=/opt/erlang
export PATH=$PATH:$ERLANG_HOME/bin
#修改完后使配置文件生效
source /etc/profile
#3.ERLANG安装成功检测
erl -version
#Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 6.0
在centos5.11上安装时候报错和解决办法如下:
*********************************************************************
********************** APPLICATIONS INFORMATION *******************
*********************************************************************
wx : wxWidgets not found, wx will NOT be usable
*********************************************************************
*********************************************************************
********************** DOCUMENTATION INFORMATION ******************
*********************************************************************
documentation :
fop is missing.
Using fakefop to generate placeholder PDF files.
*********************************************************************
解决办法如下:
wget https://github.com/wxWidgets/wxWidgets/releases/download/v2.8.12/wxWidgets-2.8.12.zip
unzip wxWidgets-2.8.12.zip
cd wxWidgets-2.8.12
./configure --with-gtk --enable-unicode --disable-shared
make
make install
ldconfig
1.4 后期管理rabbitmq集群的linux服务器账号创建
#创建nmscmq用户和组
groupadd nmscmq
useradd -g nmscmq nmscmq
passwd nmscmq
2.rabbitmq3.4.2安装(linux账户nmscmq执行如下所有命令)
通过http://www.rabbitmq.com/releases/rabbitmq-server/可以找到目前所有版本的下载链接,截图如下:
这里我选择的是3.4.2版本做讲解,选择此版本没啥特别的理由,之所以不选择3.4.1是因为版本3.4.0和版本3.4.1存在脑裂问题(参见http://blog.csdn.net/u013256816/article/details/53291907),关于3.4.2官网http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.2/提供的安装安装包如下:
安装方式有RPM和基于tar.gz包的编译安装,个人倾向于基于tar.gz包的编译安装,原因是这种方式可以自己灵活控制安装位置,控制所有配置放置位置,RPM包方式是简介,RPM方式默认相关配置如下:
# 继承rabbitmq-env已有配置的子配置文件,会自动加后缀.config去查找这个文件,注意不是目录
CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/conf/rabbitmq
# 日志文件目录,注意不是文件
LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq
# 数据库目录,注意不是文件
MNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesia
# 记录启用的插件的文件,注意不是目录
ENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_plugins
# 插件所在目录
PLUGINS_DIR="${RABBITMQ_HOME}/plugins"
# rabbitmq相关环境配置文件
CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf
2.1 RPM方式安装和卸载
如果你选择的是rpm包,那么安装方式如下:
cd /opt
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.2/rabbitmq-server-3.4.2-1.noarch.rpm
rpm --nodeps -Uvh rabbitmq-server-3.4.2-1.noarch.rpm
#--nodeps是为了规避如下问题(会报没有找到erlang依赖,但是其实我们已经安装了Erlang)
warning: rabbitmq-server-3.4.2-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 056e8e56: NOKEY
error: Failed dependencies:
erlang >= R13B-03 is needed by rabbitmq-server-3.4.2-1.noarch
如果想卸载RPM安装的包,操作如下:
1)首先通过 rpm -q rabbitmq-server 可以查询到rpm包的名字
2)然后 调用 rpm -e rabbitmq-server-3.4.2-1.noarch 删除特定rpm包
3)如果遇到依赖,无法删除,使用 rpm -e --nodeps rabbitmq-server-3.4.2-1.noarch 不检查依赖,直接删除rpm包
4)如果恰好有多个包叫同样的名字,使用 rpm -e --allmatches --nodeps rabbitmq-server 删除所有相同名字的包,并忽略依赖
2.2 基于tar.gz的编译安装
而我选择的是源码编译安装(关于源码编译安装参见http://www.rabbitmq.com/build-server.html),主要是方便规划管理rabbitmq的安装目录,所以我的安装方式如下:
#切换到账户nmscmq
su - nmscmq
#下载
cd /home/nmscmq
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.2/rabbitmq-server-3.4.2.zip
#解压
cd /home/nmscmq
unzip rabbitmq-server-3.4.2.zip
#重命名源码目录
mv /home/nmscmq/rabbitmq-server-3.4.2 /home/nmscmq/rabbitmq-server-3.4.2-source
#创建安装目录
mkdir -p /home/nmscmq/rabbitmq-server-3.4.2
cd /home/nmscmq/rabbitmq-server-3.4.2-source
#编译安装
#安装到根目录TARGET_DIR=/home/nmscmq/rabbitmq-server-3.4.2
#安装后的基本放置位置SBIN_DIR=/home/nmscmq/rabbitmq-server-3.4.2/sbin
#安装后的MAN放置位置MAN_DIR=/home/nmscmq/rabbitmq-server-3.4.2/man
#安装后的DOC放置位置DOC_INSTALL_DIR=/home/nmscmq/rabbitmq-server-3.4.2/doc
make
make install TARGET_DIR=/home/nmscmq/rabbitmq-server-3.4.2 SBIN_DIR=/home/nmscmq/rabbitmq-server-3.4.2/sbin MAN_DIR=/home/nmscmq/rabbitmq-server-3.4.2/man DOC_INSTALL_DIR=/home/nmscmq/rabbitmq-server-3.4.2/doc
2.3 rabbitmq环境变量设置
rabbitmq安装在linux的用户nmscmq下,这里只将rabbitmq的脚本配置到用户nmscmq的环境变量中,是防止其他linux账户能随意操作rabbitmq,造成不必要的问题
cd /home/nmscmq
vi .bashrc
#add by wuzhongwen
RABBITMQ_HOME=/home/nmscmq/rabbitmq-server-3.4.2
export PATH=$PATH:$RABBITMQ_HOME/sbin
#使得配置生效
source /home/nmscmq/.bashrc
至此,rabbitmq已经安装完毕。
3.单机rabbitmq服务管理
3.1 配置文件存放目录和配置文件创建
接下来要启动单机rabbitmq了,在这之前我们要创建自己的相关目录存放位置和配置文件名称,方便后续配置使用,创建如下:
rm -rf /home/nmscmq/rabbitmq/*
#日志文件目录
mkdir -p /home/nmscmq/rabbitmq/log
#数据库目录
mkdir -p /home/nmscmq/rabbitmq/data
#配置文件目录
mkdir -p /home/nmscmq/rabbitmq/conf
echo "">>/home/nmscmq/rabbitmq/conf/rabbitmq.config
echo "">>/home/nmscmq/rabbitmq/conf/rabbitmq-env.conf
#记录启用的插件的文件
echo "">>/home/nmscmq/rabbitmq/enabled_plugins
3.2 修改rabbitmq-defaults
修改文件/home/nmscmq/rabbitmq-3.4.2/sbin/rabbitmq-defaults,修改内容如下:
#modify by nmscmq
#CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq
#LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq
#MNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesia
#ENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_plugins
CONFIG_FILE=${SYS_PREFIX}/home/nmscmq/rabbitmq/conf/rabbitmq
LOG_BASE=${SYS_PREFIX}/home/nmscmq/rabbitmq/log
MNESIA_BASE=${SYS_PREFIX}/home/nmscmq/rabbitmq/data
ENABLED_PLUGINS_FILE=${SYS_PREFIX}/home/nmscmq/rabbitmq/enabled_plugins
#modify by nmscmq
#CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf
CONF_ENV_FILE=${SYS_PREFIX}/home/nmscmq/rabbitmq/conf/rabbitmq-env.conf
CONFIG_FILE配置的是/home/nmscmq/rabbitmq/conf/rabbitmq,但实际会加上后缀“.config”,实际加载的是/home/nmscmq/rabbitmq/conf/rabbitmq.config
如果对rabbitmq配置和脚本有所疑惑,详见我的另一博客介绍rabbitmq3.4.2 shell脚本分析
3.3 修改rabbitmq-env.conf
修改文件/home/nmscmq/rabbitmq/conf/rabbitmq-env.conf,配置内容如下:
NODENAME=rabbit@nmscmq1
3.4 修改rabbitmq.config
修改文件/home/nmscmq/rabbitmq/conf/rabbitmq.config,配置内容如下:
[
{rabbit, [{vm_memory_high_watermark, 0.8}]}
].
关于/home/nmscmq/rabbitmq/conf/rabbitmq.config的配置样例参见文件/home/nmscmq/rabbitmq-3.4.2/doc/rabbitmq-example文件,这里配置的vm_memory_high_watermark=0.8意思是rabbitmq优先使用内存,在内存超过阈值80%*机器内存时候,开始使用磁盘存储消息数据
3.5 启动和关闭rabbitmq服务
#后台启动rabbitmq服务
rabbitmq-server –detached
#关闭rabbitmq服务
rabbitmqctl stop
3.6 激活rabbitmq插件
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt
激活完毕后在文件/home/nmscmq/rabbitmq/enabled_plugins中生成如下内容:
3.7 创建rabbitmq WEB管理端链接账户
#创建rabbitmq WEB管理账户rabbitmq-test,其密码为rabbitmq-test
rabbitmqctl add_user rabbitmq-test rabbitmq-test
#将账户rabbitmq-test设置为administrator账户
rabbitmqctl set_user_tags rabbitmq-test administrator
创建完毕账户后在浏览器中打开http://localhost:15672/后输入账户rabbitmq-test/rabbitmq-test后登陆截图如下:
4.rabbitmq集群服务管理
在3台机器nmscmq1,nmscmq2,nmscmq3上分别按照之前1、2和3步骤搭建单机版rabbitmq服务,之后操作如下:
4.0 修改/etc/hosts,添加如下内容:
192.168.62.32 nmscmq1
192.168.62.33 nmscmq2
192.168.62.34 nmscmq3
4.1 修改rabbitmq-env.conf
#机器nmscmq1上/home/nmscmq/rabbitmq/conf/rabbitmq-env.conf配置如下:
NODENAME=rabbit@nmscmq1
#机器nmscmq2上/home/nmscmq/rabbitmq/conf/rabbitmq-env.conf配置如下:
NODENAME=rabbit@nmscmq2
#机器nmscmq3上/home/nmscmq/rabbitmq/conf/rabbitmq-env.conf配置如下:
NODENAME=rabbit@nmscmq3
4.2 同步erlang的cookie
Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /home/nmscmq/.erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信。
#先修改hostname=nmscmq3机器上/home/nmscmq/.erlang.cookie权限
chmod 777 /home/nmscmq/.erlang.cookie
#从hostname= nmscmq3上执行如下命令复制到另外两台机器
scp /home/nmscmq/.erlang.cookie nmscmq@192.168.62.32:/home/nmscmq/.erlang.cookie
scp /home/nmscmq/.erlang.cookie nmscmq@192.168.62.33:/home/nmscmq/.erlang.cookie
#复制完后回复3台机器/home/nmscmq/.erlang.cookie权限为400
chmod 400 /home/nmscmq/.erlang.cookie
4.3 集群启动和加入
#nmscmq3机器上执行如下:
rabbitmqctl stop
rabbitmq-server -detached
#nmscmq1机器上执行如下:
#停止所有节点RabbitMq服务,然后使用detached参数独立运行,这步很关键,尤其增加节点停止节点后再次启动遇到无法启动都可以参照这个顺序
rabbitmqctl stop
rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbitmq@nmscmq3
rabbitmqctl start_app
#nmscmq2机器上执行如下:
#停止所有节点RabbitMq服务,然后使用detached参数独立运行,这步很关键,尤其增加节点停止节点后再次启动遇到无法启动都可以参照这个顺序
rabbitmqctl stop
rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbitmq@nmscmq3
rabbitmqctl start_app
上述命令先停掉rabbitmq应用,然后调用cluster命令,将nmscmq1和nmscmq2以内存节点加入到rabbt@nmscmq3,使三者成为一个集群,最后重启rabbitmq应用。在这个cluster命令下,nmscmq1、nmscmq2是内存节点,nmscmq3是磁盘节点(RabbitMQ启动后,默认是磁盘节点)。
如果要使nmscmq1或nmscmq2在集群里也是磁盘节点,join_cluster 命令去掉--ram参数即可。
只要在节点列表里包含了自己,它就成为一个磁盘节点。在RabbitMQ集群里,必须至少有一个磁盘节点存在。
在浏览器中打开http://localhost:15672/登录查看集群如下:
4.4 rabbitmq集群创建vitual host
4.5 rabbitmq集群服务镜像配置
上面配置RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列。
镜像队列保证数据写到某个节点后,能够同步到其他节点,在主副本节点宕机后,其他节点的副本仍然存在,不会导致消息队列数据的丢失,就算所有节点宕机,但主要能保证最后宕机的是一个磁盘节点,当集群再次启动后,磁盘节点最后时刻保留的所有消息数据都可以恢复出来并同步到其他内存节点。
镜像队列的配置通过添加policy完成,policy添加的命令为:
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
[-p Vhost] |
可选参数,针对指定vhost下的queue进行设置 |
Name |
policy的名称 |
Pattern |
queue的匹配模式(正则表达式) |
Definition |
镜像定义,包括三个部分 ha-mode,ha-params,ha-sync-mode
ha-mode: 指明镜像队列的模式,有效值为 all/exactly/nodes
all表示在集群所有的节点上进行镜像
exactly表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes表示在指定的节点上进行镜像,节点名称通过ha-params指定
ha-params: ha-mode模式需要用到的参数
ha-sync-mode: 镜像队列中消息的同步方式,有效值为automatic,manually
|
[Priority] |
可选参数, policy的优先级 |
例如,对队列名称以q_ismp_开头的所有队列进行镜像,并在集群的两个节点上完成镜像,policy的设置命令为:
rabbitmqctl set_policy ismp ismp_mirror "^q_ismp_" '{"ha-mode":"all","ha-sync-mode":"automatic"}' 0
相关推荐
docker安装rabbitmq3.8集群-3台-详细笔记文档-带安装包
一键部署工具实现功能如下: 1、支持单节点部署 2、支持伪集群部署 3、支持分布式集群部署 ...5、支持创建、启动、停止、重启、检测...说明:工具使用非常简单,只需要修改变量文件,一分钟就可以快速帮你部署rabbitmq集群
安装过程中可能遇到的问题包括版本兼容性、依赖库缺失、编译错误等,解决这些问题的关键在于正确配置编译选项和安装适当的依赖。在所有组件都成功安装并配置好之后,RabbitMQ就可以作为消息中间件在Linux环境中使用...
资源包含rabbitmq镜像集群的搭建文档和springboot连接rabbitmq集群的配置方式,供参考
本文档将详细介绍如何安装 RabbitMQ 集群主从服务,包括安装依赖软件、语言环境 Erlang、安装 RabbitMQ、配置默认数据存储和日志路径、安装 web 界面访问插件等步骤。 安装依赖软件 在安装 RabbitMQ 之前,需要...
### RabbitMQ 单机与集群搭建详解 #### 一、单机环境搭建步骤 ##### 1. 安装基础依赖 在安装RabbitMQ之前,首先需要安装一系列的基础依赖库,确保系统支持后续的安装过程。 ```bash yum install -y gcc glibc-...
在进行RabbitMQ集群部署前,需要确保服务器上已安装必要的依赖包。这些依赖包括但不限于`gcc`、`glibc-devel`等开发工具以及`openssl-devel`等库文件。 ```bash yum install gcc glibc-devel make ncurses-devel ...
常见的Erlang OTP安装包通常命名为类似`otp-23.3.1.tar.gz`这样的文件,解压后按照官方文档的指示进行编译和安装。 在安装Erlang OTP的过程中,可能会遇到依赖库的问题。例如,Erlang需要ncurses库来支持其控制台...
本文包含elang安装,RabbitMQ安装配置,RabbitMQ两台服务器集群
首先,安装RabbitMQ需要从其官方网站下载对应的安装包,按照提供的步骤进行编译和安装。文中提到使用wget命令下载tar.gz压缩包,然后使用tar命令解压。之后,通过cd命令进入解压后的文件夹并执行make命令进行编译。...
从RabbitMQ存储库安装RabbitMQ的角色。 在上可用 Ansible Galaxy: Travis版本: 兼容性 兔子MQ 3.6.x 好的 3.7.x 好的 > 3.7 未测试 埃尔朗 20倍 好的 21倍 好的 22倍 KO [1] 分配 CentOS的7 好的 CentOS>...
RabbitMQ是一个强大的开源...通过详细的安装教程,你可以逐步掌握RabbitMQ的安装和配置,从而更好地利用它的功能来优化你的应用程序。记得在使用过程中遵循最佳实践,保持良好的日志记录和监控,以确保系统的稳定运行。
RabbitMQ安装及集群的pdf档,网页版下载后整理的,可以用作记录或者操作手册使用。跟网页版原文一模一样
- **节点(Node)**:RabbitMQ服务器的实例称为节点,可以是单机部署或集群部署。 - **队列(Queue)**:消息的存储区域,多个消费者可以从同一个队列中消费消息,但每个消息只被消费一次。 - **交换器(Exchange)*...
《ActiveMQ集群》和《ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试》可能涉及: 1. 集群配置:ActiveMQ集群可以通过网络连接多台服务器,共享队列和主题,提供高可用性和负载均衡。 2. 高可用性:通过...
在本节中,我们介绍了如何在 CentOS7 上安装 RabbitMQ 集群,包括安装 Erlang 运行环境、安装 RabbitMQ Server 和启动管控台插件。RabbitMQ 是一个流行的开源消息队列服务器,可以用于分布式系统中的消息传递和队列...
2. 配置、编译和安装Erlang: ``` ./configure make sudo make install ``` 确保系统中已安装必要的编译工具,如`gcc`、`make`等。安装完成后,可以通过`erl`命令测试Erlang是否安装成功。 接下来,我们安装...
7. **服务启动与监控**:安装完成后,需要启动RabbitMQ服务,并使用`rabbitmqctl`工具进行监控和管理。例如,启动服务的命令可能是: ``` systemctl start rabbitmq-server ``` 检查服务状态的命令: ``` ...
总的来说,这个压缩包提供了一个完整的流程,从安装Erlang、RabbitMQ,到构建镜像集群,再到配置HAProxy和Keepalived,最后到管理RabbitMQ的服务,覆盖了搭建高可用RabbitMQ集群的全过程。每个步骤都需要仔细理解和...