klaus
klaus
发布于 2022-12-23 / 12 阅读
0
0

RabbitMQ集群测试

rabbitmq 镜像集群模式测试

测试环境

磁盘节点 192.168.1.82 192.168.1.85
内存节点 192.168.1.86
暴露端口 5672 15672
启动顺序 主节点 -> 从节点 (对应的为 先启动82 后启动85 86)

测试步骤

  1. 集群正常工作(集群中所有节点正常)

    1. 为方便测试,首先清空push_send表中的数据。
    2. 发送一条消息,通过观察数据库表push_send 中的send_status状态验证。(此时的状态流转为 0 -> 1 -> 3, 因消费速度很快 所以可能看不到中间状态0和1)
    3. 验证数据库中的数据状态为3,符合预期。
  2. 集群中随机宕掉一台磁盘节点(集群中包含一台磁盘节点,一台内存节点)

    1. 为方便测试,首先清空push_send表中的数据。

    2. 选择一台磁盘节点,使用systemctl stop rabbitmq-server命令宕掉rabbitmq。

    3. 此时,观察控制台会发现对应队列中有一条消息并很快被消费掉,且数据库中push_send表对应的数据send_status字段状态由0 -> 1 -> 3

    4. 验证数据库中的数据状态为3,符合预期。

  3. 集群中随机宕掉内存节点(集群中包含两台磁盘节点)

    1. 为方便测试,首先清空push_send表中的数据。

    2. 选择一台磁盘节点,使用systemctl stop rabbitmq-server命令宕掉rabbitmq。

    3. 此时,观察控制台会发现对应队列中有一条消息并很快被消费掉,且数据库中push_send表对应的数据send_status字段状态由0 -> 1 -> 3

    4. 验证数据库中的数据状态为3,符合预期。

  4. 集群中宕掉所有磁盘节点 (集群中只保留内存节点)

    1. 此时集群仍处于可用状态。消息仍然能被正常消费,但是消息不可以再被rabbitmq持久化。
  5. 集群节点全部宕掉后重启 (所有节点都关闭等待发送消息后再重启)

    1. 关闭所有节点

      1. 控制台显示已经丢失连接
    2. 发送任意条消息

      1. 此时数据库中的push_send表中send_status状态为0
      2. 此时数据库中表现
    3. 重启rabbitmq集群

    4. 观察定时任务执行结果 (定时任务会在每0/5分钟启动一次,目的是把在rabbitmq宕掉期间的所有消息再次入列,保证消息被正常消费)

    5. 观察push_send表中的send_status字段 由0 -> 1 -> 3,符合预期。


评论