消息中间件之RabbitMQ安装

简介

RabbitMQ是一个开源的遵循AMQP协议实现的基于Erlang语言编写,支持多种客户端语言,用于在分布式系统中存储消息,转发消息,具有高可用,高扩展性,易用性等特征。

安装RabbitMQ

在虚拟机上二进制安装

  1. 下载地址:https://www.rabbitmq.com/download.html.
  2. 环境准备:Centos7.x+Erlang

RabiitMQ是采用Erlang语言开发的,所以系统环境必须依赖Erlang环境,第一步就是安装Erlang。
查看eralng和RabbitMQ版本对比:https://www.rabbitmq.com/which-erlang.html.

  1. 安装Erlang环境可参考https://www.cnblogs.com/jimlau/p/12029985.html.
    1.安装类库(按照顺序)
    yum -y install gcc-c++
    yum -y install ncurses-devel
    yum -y install openssl-devel
    yum -y install unixODBC-devel
    #有可以不用执行安装
    yum install xz
    
    2.安装Erlang环境
    tar xvfz otp_src_18.2.1.tar.gz 
    ./configure 
    make install
    
    3.测试
    erl -v
    
  2. 安装RabbitMQ
    1.通过官网下载RabbitMQ最新rpm包,使用以下命令进行安装
    rpm -Uvh rabbitmq-server-3.8.14-1.el7.noarch.rpm
    
    2.若安装报错信息如下:
    警告:rabbitmq-server-3.8.14-1.el7.noarch.rpm: 头V4    RSA/SHA256 Signature, 密钥 ID 6026dfca: NOKEY
    错误:依赖检测失败:
    erlang >= 21.3 被 rabbitmq-server-3.8.14-1.el7.noarch 需要
    
    3.若安装出现2的问题使用以下命令安装
    rpm -ivh --nodeps rabbitmq-server-3.8.14-1.el7.noarch.rpm 
    
    4.安装WEB管理界面插件及执行添加用户授权操作即可。
    	#添加web管理界面插件
    	rabbitmq-plugins enable rabbitmq_management
    	# 重启RbbitMQ
    	systemctl restart rabbitmq-server
    	# 添加用户名、密码
    	rabbitmqctl add_user admin admin
    	# 给用户添加权限
    	rabbitmqctl set_user_tags admin administrator
    
  3. 启动rabbitMq服务命令
    	#启动服务
    	systemctl start rabbitmq-server
    	#停止服务
    	systemctl stop rabbitmq-server
    	#重启服务
    	systemctl restart  rabbitmq-server
    	#开机自启动服务
    	systemctl enable rabbitmq-server
    

至此手动安装RbbitMQ完成。

docker镜像安装

安装命令

docker run -di --name myrabbit -v /home/rabbitmq/data:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

http://192.168.204.110:15672/#/ 访问即可
在这里插入图片描述

RabbitMQ新增授权账号和密码

RabbitMQ默认只有一个来宾用户guest/guest,这个账号密码只适合本机访问,对于虚拟机及远程使用只能新增。

  1. 新增用户

rabbitmqctl add_user admin admin

  1. 设置用户分配操作权限

rabbitmqctl set_user_tags admin administrator

用户级别:
1、administrator 可以登陆控制台,查看所有信息,可以对Rabbitmq进行管理。
2、monitoring 监控者 登陆控制台,查看所有信息
3、policymaker 策略制定者 登陆控制台,指定策略
4、managment 普通管理员 登陆控制台
5、none 不能访问management plugin
6、management 查看自己相关节点信息
  1. 为用户添加资源权限

rabbitmqctl set_permissions -p /admin “." ".” “.*”

  1. 小结
rabbitmqctl add_user 账号 密码
rabbitmqctl set_user_tags 账号 权限角色
rabbitmqctl change_password 用户名 新密码   ---修改密码
rabbitmqctl delete_user username ---删除用户
rabbitmqctl list_users 查看用户清单
rabbitmqctl.bat set_permissions -p / 用户名".*" ".*" ".*" ----为用户设置administrator角色。
rabbitmqctl.bat set_permissions -p / root  ".*" ".*" ".*" 

RabbitMQWeb管理界面操作及授权

  1. 默认情况下,rabbitmq是没有安装web端的客户端插件,需要重新安装才可以生效

rabbitmq-plugins enable rabbitmq_management

  1. 安装完毕之后,重启服务即可

systemctl restart rabbitmq-server
一定要记住,在对应服务器(阿里云,腾讯云等)安全组件中开放15672的端口。

  1. 访问地址:http://ip:15672/

RabbitMQ集群安装(单机伪集群)

第一步:停止单机服务

[root@localhost ~]# clear
[root@localhost ~]# ps -aux|grep rabbitmq
[root@localhost ~]# systemctl stop rabbitmq
[root@localhost ~]# systemctl stop rabbitmq-server
[root@localhost ~]# systemctl status rabbitmq-server

第二步:启动第一个节点主节点

# 启动第一个节点
[root@localhost ~]# sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-node1 rabbitmq-server start &
[1] 1735
[root@localhost ~]# Configuring logger redirection

  ##  ##      RabbitMQ 3.8.14
  ##  ##
  ##########  Copyright (c) 2007-2021 VMware, Inc. or its affiliates.
  ######  ##
  ##########  Licensed under the MPL 2.0. Website: https://rabbitmq.com

  Doc guides: https://rabbitmq.com/documentation.html
  Support:    https://rabbitmq.com/contact.html
  Tutorials:  https://rabbitmq.com/getstarted.html
  Monitoring: https://rabbitmq.com/monitoring.html

  Logs: /var/log/rabbitmq/rabbit-node1@localhost.log
        /var/log/rabbitmq/rabbit-node1@localhost_upgrade.log

  Config file(s): (none)

  Starting broker... completed with 3 plugins.

至此代表第一个节点启动成功
第三步:启动从节点

# 启动第二个节点
[root@localhost ~]# sudo RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]"  RABBITMQ_NODENAME=rabbit-node2 rabbitmq-server start &
[2] 1982
[root@localhost ~]# sudo: listener:找不到命令
#sudo 找不到这个命令的解决方式:请参考后面备注

第四步:验证俩个节点是否启动成功

[root@localhost ~]# ps -ef|grep rabbitmq
root       1735   1415  0 16:56 pts/0    00:00:00 /usr/bin/sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-node1 env LD_LIBRARY_PATH=/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:/opt/rh/devtoolset-9/root/usr/lib64/dyninst:/opt/rh/devtoolset-9/root/usr/lib/dyninst:/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib PATH=/opt/rh/devtoolset-9/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/src/java/jdk-11.0.5/bin:/usr/local/src/java/jdk-11.0.5/bin:/usr/local/mongodb/mongodb/bin:/root/bin scl enable devtoolset-9  'rabbitmq-server' 'start'
root       1737   1735  0 16:56 pts/0    00:00:00 scl enable devtoolset-9  'rabbitmq-server' 'start'
root       1743   1738  0 16:56 pts/0    00:00:00 /sbin/runuser -u rabbitmq -- /usr/lib/rabbitmq/bin/rabbitmq-server start
rabbitmq   1751   1743  0 16:56 pts/0    00:00:00 /bin/sh /usr/lib/rabbitmq/bin/rabbitmq-server start
rabbitmq   1758   1751  1 16:56 pts/0    00:00:11 /usr/local/lib/erlang/erts-11.2/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -B i -- -root /usr/local/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa  -noshell -noinput -s rabbit boot -boot start_sasl -lager crash_log false -lager handlers [] start
rabbitmq   1765   1758  0 16:56 ?        00:00:00 erl_child_setup 65536
rabbitmq   1787      1  0 16:56 ?        00:00:00 /usr/local/lib/erlang/erts-11.2/bin/epmd -daemon
rabbitmq   1805   1765  0 16:56 ?        00:00:00 inet_gethost 4
rabbitmq   1806   1805  0 16:56 ?        00:00:00 inet_gethost 4
root       2169   1415  0 17:06 pts/0    00:00:00 /usr/bin/sudo -E env LD_LIBRARY_PATH=/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:/opt/rh/devtoolset-9/root/usr/lib64/dyninst:/opt/rh/devtoolset-9/root/usr/lib/dyninst:/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib PATH=/opt/rh/devtoolset-9/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/src/java/jdk-11.0.5/bin:/usr/local/src/java/jdk-11.0.5/bin:/usr/local/mongodb/mongodb/bin:/root/bin scl enable devtoolset-9  'env' 'PATH=/opt/rh/devtoolset-9/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/src/java/jdk-11.0.5/bin:/usr/local/src/java/jdk-11.0.5/bin:/usr/local/mongodb/mongodb/bin:/root/bin' 'RABBITMQ_NODE_PORT=5673' 'RABBITMQ_SERVER_START_ARGS=-rabbitmq_management listener [{port,15673}]' 'RABBITMQ_NODENAME=rabbit-node2' 'rabbitmq-server' 'start'
root       2173   2169  0 17:06 pts/0    00:00:00 scl enable devtoolset-9  'env' 'PATH=/opt/rh/devtoolset-9/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/src/java/jdk-11.0.5/bin:/usr/local/src/java/jdk-11.0.5/bin:/usr/local/mongodb/mongodb/bin:/root/bin' 'RABBITMQ_NODE_PORT=5673' 'RABBITMQ_SERVER_START_ARGS=-rabbitmq_management listener [{port,15673}]' 'RABBITMQ_NODENAME=rabbit-node2' 'rabbitmq-server' 'start'
root       2179   2174  0 17:06 pts/0    00:00:00 /sbin/runuser -u rabbitmq -- /usr/lib/rabbitmq/bin/rabbitmq-server start
rabbitmq   2187   2179  0 17:06 pts/0    00:00:00 /bin/sh /usr/lib/rabbitmq/bin/rabbitmq-server start
rabbitmq   2194   2187  4 17:06 pts/0    00:00:09 /usr/local/lib/erlang/erts-11.2/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -B i -- -root /usr/local/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa  -noshell -noinput -s rabbit boot -boot start_sasl -rabbitmq_management listener [{port,15673}] -lager crash_log false -lager handlers [] start
rabbitmq   2201   2194  0 17:06 ?        00:00:00 erl_child_setup 65536
rabbitmq   2241   2201  0 17:06 ?        00:00:00 inet_gethost 4
rabbitmq   2242   2241  0 17:06 ?        00:00:00 inet_gethost 4
root       2515   1415  0 17:09 pts/0    00:00:00 grep --color=auto rabbitmq

第五步:将rabbit-node1节点操作为主节点

#停止应用
[root@localhost ~]# sudo rabbitmqctl -n rabbit-node1 stop_app
Stopping rabbit application on node rabbit-node1@localhost ...
#目的是清除节点上面的数据,若不清除,无法将节点加入集群
[root@localhost ~]# sudo rabbitmqctl -n rabbit-node1 reset
Resetting node rabbit-node1@localhost ...
#启动应用
[root@localhost ~]# sudo rabbitmqctl -n rabbit-node1 start_app
Starting node rabbit-node1@localhost ...

第六步:将rabbit-node2节点操作为从节点

[root@localhost ~]# sudo rabbitmqctl -n rabbit-node2 stop_app
Stopping rabbit application on node rabbit-node2@localhost ...
[root@localhost ~]# sudo rabbitmqctl -n rabbit-node2 reset
Resetting node rabbit-node2@localhost ...
#将rabbit-node2节点加入到主节点中,@服务器的主机名
[root@localhost ~]# sudo rabbitmqctl -n rabbit-node2 join_cluster rabbit-node1@localhost
Clustering node rabbit-node2@localhost with rabbit-node1@localhost
[root@localhost ~]# sudo rabbitmqctl -n rabbit-node2 start_app
Starting node rabbit-node2@localhost ...

第七步:验证集群状态

[root@localhost ~]# sudo rabbitmqctl cluster_status -n rabbit-node1
Cluster status of node rabbit-node1@localhost ...
Basics

Cluster name: rabbit-node1@localhost

Disk Nodes

rabbit-node1@localhost
rabbit-node2@localhost

Running Nodes

rabbit-node1@localhost
rabbit-node2@localhost

第八步:Web监控

分别为节点一和节点二添加用户权限

rabbitmqctl -n rabbit-node1 add_user admin admin
rabbitmqctl -n rabbit-node1 set_user_tags admin administrator
rabbitmqctl -n rabbit-node1 set_permissions -p / admin “." ".” “.*”


rabbitmqctl -n rabbit-node2 add_user admin admin
rabbitmqctl -n rabbit-node2 set_user_tags admin administrator
rabbitmqctl -n rabbit-node2 set_permissions -p / admin “." ".” “.*”
在这里插入图片描述

遇到问题:sudo listener命令未找到:
解决方式请参考:https://blog.csdn.net/hawkcici160/article/details/79810676/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值