RabbtMQ安装教程

RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

RabbitMQ集群规划

IP地址 主机名 端口 用户名 密码 节点类型
10.10.10.1 SZ001 5672 admin admin 主节点
10.10.10.2 SZ002 5672 admin admin 从节点

安装环境

Suse: SUSE Linux Enterprise Server 11 ( x86_64 )

RabbitMQ: 3.7.14

Erlang: 21.3

Openssl: 1.1.1

安装前准备

登录suse系统,创建临时文件夹/home/tmp,上传安装包

openssl-1.1.1.tar.gz

otp_src_21.3.tar.gz

rabbitmq-server-generic-unix-3.7.14.tar

安装Erlang

查看RabbitMQ所需要的Erlang版本

https://www.rabbitmq.com/which-erlang.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#进入安装包所在目录
$cd /home/tmp

#解压Erlang安装包
$tar -zxvf otp_src_21.3.tar.gz

#进入解压目录
$cd otp_src_21.3

#安装依赖包
$./otp_build autoconf

#编译Erlang
$./configure

#安装
$make && make install

配置Erlang环境变量/etc/profile

1
export PATH=$PATH:/usr/local/lib/erlang/bin

刷新配置

1
$source /etc/profile

测试Erlang,出现如下情况说明安装成功

1
2
$erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.3

安装OpenSSL

查看当前openssl版本

1
2
$openssl version
OpenSSL 0.9.8j-fips 07 Jan 2009

如果低于1.1.1版本,需要升级,进入包所在目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$cd /home/tmp

# 解压openssl
$tar -zxvf openssl-1.1.1.tar.gz

#进入openssl所在目录
$cd openssl-1.1.1/

#编译
$./config

#安装
$make && make install

#链接升级后的动态库到库目录/usr/lib64/
$ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
$ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

查看结果

1
2
3
4
5
6
$ls -la /usr/lib64/ | grep -P '(libssl|libcrypto)'
-r-xr-xr-x 1 root root 1685176 Mar 25 2013 libcrypto.so.0.9.8
lrwxrwxrwx 1 root root 33 Sep 18 2018 libcrypto.so.1.1 -> /usr/local/lib64/libcrypto.so.1.1
-r-xr-xr-x 1 root root 351360 Mar 25 2013 libssl.so.0.9.8
lrwxrwxrwx 1 root root 30 Sep 18 2018 libssl.so.1.1 -> /usr/local/lib64/libssl.so.1.1
-rwxr-xr-x 1 root root 283640 May 11 2013 libssl3.so

退出suse,然后再次登录,查看openssl版本

1
2
$openssl version
OpenSSL 1.1.1 11 Sep 2018

安装RabbitMQ

1
2
3
4
5
6
7
8
9
#进入包安装目录
$cd /home/tmp

#解压RabbitMQ文件
$tar -xvf rabbitmq-server-generic-unix-3.7.14.tar

#拷贝解压文件到安装目录
$mkdir -p /home/rabbitmq
$cp -r rabbitmq_server-3.7.14 /home/rabbitmq

配置环境变量/etc/profile

1
export PATH=$PATH:/usr/local/lib/erlang/bin:/home/rabbitmq/rabbitmq_server-3.7.14/sbin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#刷新配置
$source /etc/profile

#进入rabbitmq安装目录
$cd /home/rabbitmq/rabbitmq_server-3.7.14

#启动RabbitMQ
$rabbitmq-server detached &

#查看RabbitMQ进程
$ps aux | grep rabbitmq

#启动插件管理
$rabbitmq-plugins enable rabbitmq_management

#添加用户
$rabbitmqctl add_user admin admin
$rabbitmqctl set_user_tags admin administrator

访问http://[IP]:15672,可以看到RabbitMQ登录页面,至此RabbitMQ单机安装完成

安装RabbitMQ集群

在另一台主机安装单机RabbitMQ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#停止RabbitMQ主节点
$rabbitmqctl stop

#停止RabbitMQ从节点
$rabbitmqctl stop

#查看两个节点的.erlang.cookie文件
$cat /root/.erlang.cookie

#复制主节点的.erlang.cookie文件给从节点,覆盖从节点的.erlang.cookie文件
$scp -r /root/.erlang.cookie root@10.10.10.2:/root/

#在从节点上执行
$rabbitmqctl stop_app
$rabbitmqctl reset
$rabbitmqctl start_app

#在主节点执行
$rabbitmqctl stop_app
$rabbitmqctl reset

#把从节点加入主节点,SZX002是主机名
$rabbitmqctl join_cluster rabbit@SZ002

如果报错误,Error: unable to perform an operation on node 'rabbit@SZ002',修改主节点与从节点的/etc/hosts文件。

10.10.10.1 SZ001

10.10.10.2 SZ002

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#重启主从节点网络服务
$/etc/init.d/network restart

#再次执行添加从节点命令
$rabbitmqctl join_cluster rabbit@SZ002

#启动RabbitMQ主节点
rabbitmqctl start_app

#查看集群状态,可以看到两个节点均处于运行状态
$rabbitmqctl cluster_status

#设定镜像集群
$rabbitmqctl set_policy ha-all "" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --vhost TestVirtualHost

登录RabbitMQ管理页面,创建一个队列发现Feature是ha-all说明已经是高可用镜像集群。

安装插件

1
2
3
4
5
#复制延迟交换机插件到插件目录
$cp -r rabbitmq_delayed_message_exchange-20171201-3.7.x.ez /home/rabbitmq/rabbitmq_server-3.7.14/plugins/

#启用延迟交换机插件
$rabbitmq-plugins enable rabbitmq_delayed_message_exchange