Linux下RabbitMQ的下载、安装、集群

一、版本对应关系

RabbitMQ是erlang开发的,RabbitMQ和erlang的版本对应关系如下链接:

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

这里安装RabbitMQ3.8.29,erlang23.3.版本对应关系如下:

 二、安装包下载

RabbitMQ:

下载地址:https://github.com/rabbitmq/rabbitmq-server/releases

 erlang:

下载地址:https://github.com/rabbitmq/erlang-rpm/releases

 socat:

下载地址:http://www.rpmfind.net/linux/rpm2html/search.php?query=socat(x86-64)

 三、将这三个安装包上传至Linux

 四、erlang安装

进入到安装包目录下,执行如下命令:

rpm -ivh erlang-23.3.4.8-1.el7.x86_64.rpm

然后输入erl -v能看到版本信息就说明安装成功了

五、socat安装

执行如下命令:

rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm

 六、RabbitMQ安装

执行如下命令:

rpm -ivh rabbitmq-server-3.8.29-1.el7.noarch.rpm

 验证是否安装成功

rpm -qa |grep rabbitmq

 七、开启管理界面

rabbitmq-plugins enable rabbitmq_management

 然后就会在/etc/rabbitmq下看到有个enabled_plugins文件

------2022.8.12补充------

前端在做消息通知时使用到了rabbitma的插件rabbitmq_stomp,安装步骤如下:

##开启管理界面即上一步
rabbitmq-plugins enable rabbitmq_management

##启动js连接插件
rabbitmq-plugins enable rabbitmq_stomp  
rabbitmq-plugins enable rabbitmq_web_stomp_examples

#rabbit启动/重启后可查看对应的15674端口号是否启用,命令: netstat -tunlp

netstat -tunlp|grep 15674

--------补充end-------

八、在/etc/rabbitmq下添加配置文件rabbitmq.config,解决只能localhost访问的问题

vi /etc/rabbitmq/rabbitmq.config

复制下面到配置文件中后保存退出

[{rabbit,[{loopback_users,[]}]}].

九、RabbitMQ启动、查看启动状态、停止

# 启动rabbitmq命令:
systemctl start rabbitmq-server

# 查看启动状态命令:
systemctl status rabbitmq-server

#停止rabbitmq命令:
systemctl stop rabbitmq-server

#开机自启动:
systemctl enable rabbitmq-server

十、登录管理界面

URL地址:http://192.168.80.10:15672

默认端口:15672
默认账号:guest
默认密码:guest

十一、集群

以上是单机部署,一个挂了整个服务都没法用,在实际工作中一般是集群化部署,一台挂了还有其他顶着,一般建议最少三台做集群。

集群方式有普通集群和镜像集群两种方式,普通集群方式只同步元数据,不同步队列中的消息,没做持久化挂了后会丢失数据,这里采用镜像集群,来保证高可用。

架构如下:

1.首先停止mq服务。

2.然后修改每台服务器的host,因为在添加节点的时候节点host不能包含点,有点就报错,所以这里必须修改此文件,通过host-name来添加节点

这里的名字我这里取mq01,mq02,mq03,设置用户名后下次进入服务器会自动跳转到这个名字,默认是localhost,可以设置一个具有大范围且具有代表性的名字,比如server01、server02啥的

vi /etc/hosts

#添加以下
192.168.114.1 mq01
192.168.114.1 mq02
192.168.114.1 mq03

3.在每台服务器设置自己的host-name,默认是localhost

#设置与自己对应的名字
hostnamectl set-hostname mq01

#切换到此名下
bash

区别:

默认localhost:

 mq0xxx:

4.修改.erlang.cookie保证三台机器的cookie内容一致

找到erlang cookie文件的位置,源码包安装一般会存在~/.erlang.cookie;rpm包安装一般是在/var/lib/rabbitmq/.erlang.cookie。

这个文件是隐藏文件且只读,因此没法直接修改其内容,这里将 mq01 的该文件使用rsync或者是scp复制到 mq02、mq03,其中过程中需要输入密码。

scp -r /var/lib/rabbitmq/.erlang.cookie mq2:/var/lib/rabbitmq/.erlang.cookie
scp -r /var/lib/rabbitmq/.erlang.cookie mq3:/var/lib/rabbitmq/.erlang.cookie

5.然后在每台机器启动自己的mq服务,在localhost下启动和在mq0xxx下启动的mq服务是完全不同的东西,所以要保证在mq0xxx下启动。

systemctl start rabbitmq-server

至此集群准备工作已完成,下面开始集群

6.这里我们将mq01作为主节点,只需将mq02,mq03加入到mq01即可,mq01不用做任何操作

在mq02,mq03机器上分别运行如下:

#停止RabbitMQ应用
rabbitmqctl stop_app
#加入到mq01节点
#参数--ram表示内存节点,默认是disk磁盘节点,即mq01已经是disk节点,在集群中至少得有一个磁盘节点,三台集群中一般1个磁盘节点和2个内存节点 rabbitmqctl join_cluster --ram rabbit@mq01
#启动RabbitMQ应用 rabbitmqctl start_app

7.常用命令:rabbitmqctl help可以查看所有命令

#查看集群状态
rabbitmqctl cluster_status

#查看插件安装情况
rabbitmq-plugins list

8.在任意节点服务器上创建策略

首先登录到管理界面,默认账号密码 guest  guest 然后点击admin,添加策略

 添加完后会自动同步到其他节点。

参数含义:

Name:policy 的名称。

Pattern:queue 的匹配模式(正则表达式)^表示匹配所有队列。

priority 为可选参数,表示 policy 的优先级。

Definition:镜像定义,主要由三个参数:ha-mode,ha-params,ha-sync-mode。

ha-mode:镜像队列的模式,有效值为 all、exactly、nodes。

  all 表示在集群中所有的节点上进行镜像(默认这个)。

  exactly 表示在指定个数的节点上进行镜像,节点的个数由 ha-params 指定。

  nodes 表示在指定的节点上进行镜像,节点名称通过 ha-params 指定。

ha-params:ha-mode 模式需要用到的参数。

ha-sync-mode:进行队列中消息的同步方式,有效值为 automatic 和 manual。

9.测试结果

创建测试队列

 点进去队列发布消息:

 然后去别的节点可以看到同步的消息记录了,然后还可以获取到消息内容

十二、卸载

1、卸载rabbitmq相关文件

#停止rabbitmq服务
systemctl stop rabbitmq-server

#查看rabbitmq安装的相关列表
yum list | grep rabbitmq

#卸载rabbitmq-server.noarch
yum -y remove rabbitmq-server.noarch

2、卸载erlang

#查看erlang安装的相关列表
yum list | grep erlang

#卸载erlang已安装的相关内容
yum -y remove erlang-*

#删除相关的文件
rm -rf /usr/lib64/erlang 
rm -rf /var/lib/rabbitmq
rm -rf /usr/local/erlang
rm -rf /usr/local/rabbitmq

十三、修改guest的密码

rabbitmqctl change_password guest  aabbcc112233

十四、新增一个管理员账号

在服务器上运行以下命令即可:

#查看用户列表
rabbitmqctl list_users

#添加用户 设置密码
rabbitmqctl add_user admin password
#给用户打标签 rabbitmqctl set_user_tags admin administrator
#设置权限 rabbitmqctl set_permissions
-p / admin"." "." ".*"

#admin为新管理员账号,自行命名,password为密码
,自行命名

十五、其他命令:

注意以下所有命令前面需要加一个rabbitmqctl空格
#添加用户; add_user <username> <password> #删除一个用户: delete_user <username> #改变用户密码(也是改变web管理登陆密码) ; change_password <usemame> <newpassword> #清除用户的密码,该用户将不能使用密码登陆,但是可以通过SASL登陆如果配置了SASL clear_password <usemame> #设置用户tags; set_user_tags <username> <tag>#列出用户: list_users #创建一个vhosts; add_vhost <vhostpath> #删除一个vhosts; delete_vhost <vhostpath> #列出vhosts: list_vhosts [<vhostinfoitem>] #针对一个vhosts给用户赋予相关权限; set_permissions [p <vhostpath>] <User> <conf> <write> <read> #清除一个用户对vhosts的权限; clear_permissions [P <vhostpath>] <username> #列出哪些用户可以访问该vhosts; list_permissions [p <vhostpath>] #列出该用户的访问权限; list_user_permissions <username> set parameter [-P <vhostpath>] <component name> <name> <value> clear_parameter [p <vhostpath>] <component name> <key> list parameters [p <vhostpath>]
posted @ 2022-06-17 10:07  蒂雪凌星  阅读(1076)  评论(0)    收藏  举报
Live2D