1. 前言
Rabbitmq是现阶段比较常用的一个消息队列服务。通过使用Rabbitmq实现了程序间的解耦,通过异步处理提高了程序的抗峰值能力。目前因为项目需要使用Rabbimtq的双机热备方案,故把实操过程整理如下,以备后用。
选择Rabbitmq作为消息中间件的原因:
- 软件开源,免费,高性能,稳定性较高;
- 与SpringAMQP完美整合,具有丰富的API;
- 集群模式丰富,实现高可用。HA模式,镜像队列;
2. 基础环境
操作系统版本:Centos 7.9
操作系统主机名:region01
操作系统IP:192.168.158.11
erlang版本:erlang-24.0
Rabbitmq版本:rabbitmq-3.8.22
操作系统需要可以联网,以下操作均在可连接互联网的情况下操作。
3. 编译安装
Rabbitmq安装需要依赖erlang语言。在开始安装Rabbitmq服务以前,需要先进行erlang语言的安装。
如操作系统不能联网,请先行下载erlang、Rabbitmq的源码包。
3.1 下载erlang及Rabbitmq的源码包
在进行软件的安装以前需要先去下载对应版本的源码包。如果操作系统可以联网,请按照以下步骤操作。
如果操作系统不可以联网,请提前下载好源码包,然后上传至操作系统里。
# 提前安装相关系统依赖
[root@region01 ~]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel ncurses-devel wget xz
# 下载erlang源码包
[root@region01 ~]# cd /data/soft
[root@region01 soft]# wget http://erlang.org/download/otp_src_24.0.tar.gz
# 下载rabbitmq源码包
[root@region01 soft]# https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.22/rabbitmq-server-generic-unix-3.8.22.tar.xz
# 分别解压对应的源码包
# otp_src_24.0.tar.gz可以直接使用tar解压
# rabbitmq-server-generic-unix-3.8.22.tar.xz需要先用xz解压,然后再用tar解压
[root@region01 soft]# tar -zvxf otp_src_24.0.tar.gz
[root@region01 soft]# xz -d rabbitmq-server-generic-unix-3.8.22.tar.xz
[root@region01 soft]# tar -xvf rabbitmq-server-generic-unix-3.8.22.tar
[root@region01 soft]# ll -h
# 上述命令运行完成,/data/soft目录内容如下所示
3.2 编译安装erlang语言
编译安装以前,请确认3.1中,相关系统依赖已安装完成,否则后续操作会报错。
# 进入otp_src_24.0文件夹
[root@region01 soft]# cd otp_src_24.0
# 执行家目录配置命令
[root@region01 otp_src_24.0]# ./configure prefix=/usr/local/erlang
# 编译及安装erlang
[root@region01 otp_src_24.0]# make && make install
# 编译完成后,查看/usr/local/erlang目录结构
[root@region01 otp_src_24.0]# ll /usr/local/erlang
# 将erlang写入环境变量
[root@region01 otp_src_24.0]# vim ~/.bash_profile
# 在文件中写入添加以下内容,注意位置
# 命令让环境变量生效
[root@region01 otp_src_24.0]# source ~/.bash_profile
# 检查erlang安装是否成功
[root@region01 otp_src_24.0]# erl
# 如果返回结果如下图所示,即为erlang安装成功
3.3 安装Rabbitmq服务
Rabbitmq服务的安装强依赖erlang语言,所以在进行以下步骤前,请确保前面的步骤都已运行正常。
Rabbitmq服务无须编译安装,解压后的目录及为Rabbit服务目录。
# 将Rabbitmq服务目录挪到/usr/local/下
[root@region01 ~]# mv /data/soft/rabbitmq_server-3.8.22 /usr/local/
# 将文件目录名更改为rabbitmq
[root@region01 ~]# cd /usr/local/
[root@region01 local]# mv rabbitmq_server-3.8.22 rabbitmq
# 查看/usr/local/rabbitmq目录内容
[root@region01 local]# ls /usr/local/rabbitmq/
# 将Rabbitmq相关命令写入环境变量
[root@region01 local]# vim ~/.bash_profile
# 添加完成后运行命领令,是环境变量生效
[root@region01 local]# source ~/.bash_profile
# 注意添加位置
# 后台启动rabbitmq-server
[root@region01 ~]# rabbitmq-server -detached
# 检查端口25672,如存在证明该服务已启动
[root@region01 ~]# ss -tnlp|grep 5672
注意此时rabbitmq仍为提供消息队列服务,只有等start_app了才会正常提供服务
# 添加rabbitmq浏览器管理插件
[root@region01 ~]# rabbitmq-plugins enable rabbitmq_management
# rabbitmq服务里面会预置账户guest,默认密码guest,guest用户只能在服务器本地登录。
# 所以需要单独添加远程管理的用户,即浏览器登录用户。
# 添加远程管理用户,用户名admin,密码123456
[root@region01 ~]# rabbitmqctl add_user admin 123456
# 为admin用户添加administrator角色
[root@region01 ~]# rabbitmqctl set_user_tags admin administrator
# 设置admin用户权限,允许访问vhost及read/write
[root@region01 ~]# rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
# 检查上述操作是否成功
[root@region01 ~]# rabbitmqctl list_permissions -p /
# 检查用户列表
[root@region01 ~]# rabbitmqctl list_users
# 启动消息队列服务
[root@region01 ~]# rabbitmqctl start_app
# 检查端口5672,如存在证明服务已启动
[root@region01 ~]# ss -tnlp|grep 5672
# 其中15672即为浏览器管理端口
登录Rabbitmq浏览器管理界面查看服务状态
如图所示,列表中服务状态为绿色代表rabbitmq服务状态正常。