RabbitMQ简介
在搭建RabbitMQ之前实现要介绍一下MQ,MQ是什么?
MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递
RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言的
RabbitMQ有成千上万的用户,是最受欢迎的开源消息代理之一。从T-Mobile到Runtastic,RabbitMQ在全球范围内的小型初创企业和大型企业中都得到使用
RabbitMQ轻巧,易于在内部和云中部署。它支持多种消息传递协议。RabbitMQ可以部署在分布式和联合配置中,以满足大规模,高可用性的要求
RabbitMQ可在许多操作系统和云环境上运行,并为大多数流行语言提供了广泛的开发人员工具
RabbitMQ环境版本
jdk | erlang | rabbitmq |
1.8 | 23.1 | 3.8.9 |
下载JDK1.8并且安装
[root@Mike-Node1 ~]# wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz [root@Mike-Node1 ~]# tar zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/ && rm -rf jdk-8u202-linux-x64.tar.gz [root@Mike-Node1 ~]# mv /usr/local/jdk1.8.0_202/ /usr/local/jdk/ [root@Mike-Node1 ~]# vim /etc/profile #set java environment JAVA_HOME=/usr/local/jdk CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH [root@Mike-Node1 ~]# source /etc/profile [root@Mike-Node1 ~]# [root@Mike-Node1 ~]# java -version java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode) [root@Mike-Node1 ~]#
jdk1.8到此安装完成,只要 java -version 出来版本号就可以
安装依赖包
[root@Mike-Node1 ~]# yum install -y gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf
安装Erlang
下表提供了当前支持的RabbitMQ版本系列的Erlang兼容性列表。对于已到期的RabbitMQ版本,请参阅
最低要求的Erlang / OTP | 最大支持的Erlang / OTP | 笔记 | |
---|---|---|---|
3.8.9 | 22.3 | 23.x |
[root@Mike-Node1 ~]# mkdir /data && cd /data [root@Mike-Node1 /data]# [root@Mike-Node1 /data]# wget http://erlang.org/download/otp_src_23.1.tar.gz [root@Mike-Node1 /data]# tar zxvf otp_src_23.1.tar.gz [root@Mike-Node1 /data]# cd otp_src_23.1 [root@Mike-Node1 /data/otp_src_23.1]# [root@Mike-Node1 /data/otp_src_23.1]# ./otp_build autoconf [root@Mike-Node1 /data/otp_src_23.1]# ./configure && make && make install [root@Mike-Node1 /data/otp_src_23.1]# cd [root@Mike-Node1 ~]# [root@Mike-Node1 ~]# erl Erlang/OTP 23 [erts-11.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe] Eshell V11.1 (abort with ^G) 1> [root@Mike-Node1 ~]#
进入erlang命令行表示安装成功
安装Socat
[root@Mike-Node1 ~]# yum install -y socat
安装RabbitMQ
[root@Mike-Node1 ~]# rpm -Uvh https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.9/rabbitmq-server-3.8.9-1.el7.noarch.rpm --nodeps Retrieving https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.9/rabbitmq-server-3.8.9-1.el7.noarch.rpm warning: /var/tmp/rpm-tmp.WZYQYx: Header V4 RSA/SHA256 Signature, key ID 6026dfca: NOKEY Preparing... ################################# [100%] Updating / installing... 1:rabbitmq-server-3.8.9-1.el7 ################################# [100%] [root@Mike-Node1 ~]#
如果遇到erlang已安装且版本正确,但是RabbitMQ检测失败的情况
可以追加参数 —nodeps (不验证软件包依赖)
启动RabbitMQ
[root@Mike-Node1 ~]# systemctl enable rabbitmq-server Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service. [root@Mike-Node1 ~]# [root@Mike-Node1 ~]# systemctl start rabbitmq-server [root@Mike-Node1 ~]# systemctl status rabbitmq-server
Web插件安装
[root@Mike-Node1 ~]# rabbitmq-plugins enable rabbitmq_management Enabling plugins on node rabbit@Mike-Node1: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbit@Mike-Node1... The following plugins have been enabled: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch started 3 plugins. [root@Mike-Node1 ~]#
配置用户远程
[root@Mike-Node1 ~]# vi /etc/rabbitmq/rabbitmq.config [ {loopback_users, []} ]. [root@Mike-Node1 ~]#
修改默认配置文件路径
rabbitmq默认数据目录和日志路径
默认数据目录 /var/lib/rabbitmq/mnesia
日志路径 /var/log/rabbitmq/
配置文件路径 /etc/rabbitmq/
创建新的数据文件和日志文件目录并给权限
[root@Mike-Node1 ~]# mkdir -p /data/rabbitmq/log [root@Mike-Node1 ~]# mkdir -p /data/rabbitmq/mnesia [root@Mike-Node1 ~]# chmod -R 755 /data/rabbitmq [root@Mike-Node1 ~]# chown -R rabbitmq:rabbitmq /data/rabbitmq
创建或者新增环境参数配置文件
[root@Mike-Node1 ~]# vim /etc/rabbitmq/rabbitmq-env.conf RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia RABBITMQ_LOG_BASE=/data/rabbitmq/log [root@Mike-Node1 ~]#
重启RabbitMQ
[root@Mike-Node1 ~]# systemctl restart rabbitmq-server
开放防火墙端口
####firewalld防火墙 [root@Mike-Node1 ~]# firewall-cmd --zone=public --add-port=5672/tcp --permanent [root@Mike-Node1 ~]# firewall-cmd --zone=public --add-port=15672/tcp --permanent [root@Mike-Node1 ~]# firewall-cmd --reload ####iptables防火墙 [root@Mike-Node1 ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT [root@Mike-Node1 ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT [root@Mike-Node1 ~]# systemctl restart iptables
访问管理页面
http://IP:15672
账号和密码默认都是guest
创建管理用户
#添加用户(用户admin,密码admin) [root@Mike-Node1 ~]# rabbitmqctl add_user admin admin Adding user "admin" ... #设置用户角色(admin为管理员) [root@Mike-Node1 ~]# rabbitmqctl set_user_tags admin administrator Setting tags for user "admin" to [administrator] ... #设置用户权限(接受来自所有Host的所有操作) [root@Mike-Node1 ~]# rabbitmqctl set_permissions -p "/" admin '.*' '.*' '.*' Setting permissions for user "admin" in vhost "/" ... #查看用户权限 [root@Mike-Node1 ~]# rabbitmqctl list_user_permissions admin Listing permissions for user "admin" ... vhost configure write read / .* .* .* [root@Mike-Node1 ~]#
然后使用 admin 管理员用户登录web管理页面
用户和密码是上面添加设置的 admin admin
RabbitMQ常用命令
# 添加用户 rabbitmqctl add_user <username> <password> # 删除用户 rabbitmqctl delete_user <username> # 修改用户密码 rabbitmqctl change_password <username> <newpassword> # 清除用户密码(该用户将不能使用密码登陆,但是可以通过SASL登陆如果配置了SASL认证) rabbitmqctl clear_password <username> # 设置用户tags(相当于角色,包含administrator,monitoring,policymaker,management) rabbitmqctl set_user_tags <username> <tag> # 列出所有用户 rabbitmqctl list_users # 创建一个vhosts rabbitmqctl add_vhost <vhostpath> # 删除一个vhosts rabbitmqctl delete_vhost <vhostpath> # 列出vhosts rabbitmqctl list_vhosts [<vhostinfoitem> ...] # 针对一个vhosts给用户赋予相关权限; rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read> # 清除一个用户对vhosts的权限; rabbitmqctl clear_permissions [-p <vhostpath>] <username> # 列出哪些用户可以访问该vhosts; rabbitmqctl list_permissions [-p <vhostpath>] # 列出用户访问权限; rabbitmqctl list_user_permissions <username>
本文分享完毕,感谢支持点赞~~