当前位置:网站首页 > R语言数据分析 > 正文

enoent解决办法rabbitmq(rabbitmq work queue)



1、Centos7.7-64位
2、Erlang-OTP 23
3、RabbitMQ-3.8.9

1、RabbitMQ软件:

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.9/rabbitmq-server-3.8.9-1.el7.noarch.rpm

rabbitmq镜像集群和集群_重启

2、erlang是RabbitMQ的依賴軟件,在erlang官网下载以下版本:

https://github.com/rabbitmq/erlang-rpm/releases/download/v23.2.1/erlang-23.2.1-1.el7.x86_64.rpm

rabbitmq镜像集群和集群_重启_02

3、把下载的文件分别上传到3台服务器的 /root/soft/rabbitmq 目录下。

  • 安装基础依赖包

1. 配置yum源

2. 导入key

注:安装 rabbitMQ 时需要key。

3. 安装socat

注:安装 rabbitMQ 时需要依赖socat。

  • 安装与配置erlang

1. erlang和rabbitmq的版本对应关系

rabbitmq镜像集群和集群_rabbitmq镜像集群和集群_03

2. 安装erlang

rabbitmq镜像集群和集群_rabbitmq镜像集群和集群_04

3. 使用以下指令进入erlang如出现以下讯息表示成功安装:

rabbitmq镜像集群和集群_重启_05

用ctrl+c退出。

  • 安装RabbitMQ

rabbitmq镜像集群和集群_erlang_06

  • 在rabbit-1、rabbit-2、rabbit-3上分別配置RabbitMQ:

rabbit-1:

rabbit-2:

rabbit-3:

  • 启动RabbitMQ节点

注:该命令会同时启动 Erlang 虚拟机和 RabbitMQ 应用服务。而后文用到的  只会启动 RabbitMQ 应用服务,  只会停止 RabbitMQ 服务。

  • 查看RabbitMQ节点状态

rabbitmq镜像集群和集群_rabbitmq镜像集群和集群_07

rabbitmq镜像集群和集群_重启_08

  • 停止RabbitMQ节点
  • 开启RabbitMQ管理控制台

rabbitmq镜像集群和集群_重启_09

1. 在3台机器上/etc/hosts文件中添加IP和节点名称的对应:

2. 在各个RabbitMQ服务器中停止RabbitMQ服务:

3. 拷贝 cookie

将一台主机上的 文件拷贝到其他两台主机上。该 cookie 文件相当于密钥令牌,集群中的 RabbitMQ 节点需要通过交换密钥令牌以获得相互认证,

因此处于同一集群的所有节点需要具有相同的密钥令牌,否则在搭建过程中会出现 Authentication Fail 错误。

RabbitMQ 服务启动时,erlang VM 会自动创建该 cookie 文件,默认的存储路径为:

rabbit-1:

登陆第一台rabbit-1机器,拷贝cookie至另外2台机器rabbit-2、rabbit-3:

rabbit-2:

登录rabbit-2机器执行:

rabbit-3:

登录rabbit-3机器执行:

rabbitmq镜像集群和集群_rabbitmq镜像集群和集群_10

rabbitmq镜像集群和集群_erlang_11

rabbitmq镜像集群和集群_erlang_12

4. 启动3个节点上的RabbitMQ服务:

5. 在rabbit-2及rabbit-3服务器中使用以下指令把在rabbit-2及rabbit-3服务器中的RabbitMQ服务加入到rabbit-1服务器的rabbitmq集群中:

rabbit-2:

rabbit-3:

命令有一个可选的参数

如果是内存节点,则所有的队列、交换器、绑定关系、用户、访问权限和 vhost 的元数据都将存储在内存中,如果是磁盘节点,则存储在磁盘中。

内存节点可以有更高的性能,但其重启后所有配置信息都会丢失,因此RabbitMQ 要求在集群中至少有一个磁盘节点,其他节点可以是内存节点。

当内存节点离开集群时,它可以将变更通知到至少一个磁盘节点;然后在其重启时,再连接到磁盘节点上获取元数据信息。

除非是将 RabbitMQ 用于 RPC 这种需要超低延迟的场景,否则在大多数情况下,RabbitMQ 的性能都是够用的,可以采用默认的磁盘节点的形式。

另外,如果节点以磁盘节点的形式加入,则需要先使用 命令进行重置,然后才能加入现有群集,重置节点会删除该节点上存在的所有的历史资源和数据。

采用内存节点的形式加入时可以略过 这一步,因为内存上的数据本身就不是持久化的。

6. 在rabbit-1服务器上确认rabbitmq集群的信息:

rabbitmq镜像集群和集群_rabbitmq镜像集群和集群_13

1. 创建用户

2. 创建vhost

3. 分配权限

4. 赋予admin权限

5. 用户zat分配vhost zat的用户许可证

6. 登入RabbitMQ管理控制台

rabbitmq镜像集群和集群_erlang_14

rabbitmq镜像集群和集群_erlang_15

rabbitmq镜像集群和集群_重启_16

  • 設置

在rabbit-1节点上执行:

命令說明:针对指定vhost(zat)下的queue进行设置为镜像队列,即队列会被复制到集群各个节点,各个集群节点交换机、队列、队列内容都保持一致。

  • 複製系統

在上面我们指定了 ha-mode 的值为 all ,代表消息会被同步到所有节点的相同队列中。这里我们之所以这样配置,因为我们本身只有三个节点,因此复制操作的性能开销比较小。

如果你的集群有很多节点,那么此时复制的性能开销就比较大,此时需要选择合适的复制系数。通常可以遵循过半写原则,即对于一个节点数为 n 的集群,只需要同步到 n/2+1 个节点上即可。

此时需要同时修改镜像策略为 exactly,并指定复制系数 ha-params,示例命令如下:

  • 驗證

1、在rabbit-1節點增加一個隊列(在vhost下):mirror_queue_test

rabbitmq镜像集群和集群_重启_17

2、查看mirror_queue_test隊列的列表信息:

rabbitmq镜像集群和集群_重启_18

3、在列表信息點擊mirror_queue_test,查看它的詳細信息:

rabbitmq镜像集群和集群_服务器_19

注:上圖中該隊列使用了策略(ha-allqueue),有2個鏡像節點(rabbit@rabbit63、rabbit@rabbit66)

4、驗證完成後,在詳細信息介面中,刪除mirror_queue_test隊列:

rabbitmq镜像集群和集群_rabbitmq镜像集群和集群_20

以上介绍的集群搭建的过程就是服务扩容的过程,如果想要进行服务缩容,即想要把某个节点剔除集群,有两种可选方式:

第一种:可以先使用 rabbitmqctl stop 停止该节点上的服务,然后在其他任意一个节点上执行

这里以剔除 rabbit-3 上的服务为例,此时可以在 rabbit-1 或 2 上执行下面的命令:

第二种:先使用  停止该节点上的服务,然后再执行

没有一个直接的命令可以关闭整个集群,需要逐一进行关闭。但是需要保证在重启时,最后关闭的节点最先被启动。

如果第一个启动的不是最后关闭的节点,那么这个节点会等待最后关闭的那个节点启动,默认进行 10 次连接尝试,超时时间为 30 秒,如果依然没有等到,则该节点启动失败。

这带来的一个问题是,假设在一个三节点的集群当中,关闭的顺序为 node1,node2,node3,如果 node1 因为故障暂时没法恢复,此时 node2 和 node3 就无法启动。

想要解决这个问题,可以先将 node1 节点进行剔除,命令如下:

此时需要加上  参数,它允许节点在自身没有启动的情况下将其他节点剔除。

停止服务:

停止进程:

查看进程状态kill 掉erlang相关进程:

卸载MQ:

卸载erlang:

删除相关文件:

到此这篇enoent解决办法rabbitmq(rabbitmq work queue)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • git checkout指定版本(git checkout remote branch)2024-12-20 10:54:10
  • airplay是什么意思啊(airplay在哪里打开)2024-12-20 10:54:10
  • rmp怎么读(prgrm怎么读)2024-12-20 10:54:10
  • ar是什么?(ar是什么气体)2024-12-20 10:54:10
  • durid(druid连接池配置)2024-12-20 10:54:10
  • aodnet复现(resnet复现)2024-12-20 10:54:10
  • raising是什么意思(raising是什么意思啊)2024-12-20 10:54:10
  • air play是啥(airplay是干嘛的)2024-12-20 10:54:10
  • cruise软件(cruise软件官方下载)2024-12-20 10:54:10
  • 网格布局gridlayout(网格布局gridlayout指定网格列数的属性名称)2024-12-20 10:54:10
  • 全屏图片