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
|
刷新配置
测试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
|