创建实例

RabbitMQ 是一个流行的消息队列中间件,具有高效且可靠的消息异步传递机制。它主要用于不同系统之间的数据交换与传输,广泛应用于企业解决方案、金融支付、电信、电子商务、社交网络、即时消息、视频、物联网及车联网等多个领域。

在当前版本中,支持以下版本的 RabbitMQ: 3.8.163.12。在创建实例时,只能选择这两个版本。实例创建过程将以 3.12 为例。

版本建议

在选择版本时,建议选择最新支持的版本。3.12 具有以下优势:

  1. 3.12 支持生产就绪的集群队列;此外,社区修复了许多错误,性能在 3.12 中得到了大幅提升。
  2. 3.8.x 将逐步被淘汰。如果您当前正在使用 3.8.x 系列,后续需要版本升级,可能会影响业务操作。

创建 RabbitMQ 实例

前提条件

  • 请确保当前集群中有可用的存储类,并且有足够的可用空间。

步骤

命令行
Web 控制台

通过命令行创建 RabbitMQ 实例:

$ cat << EOF | kubectl -n default create -f -
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
  name: rrrr
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchLabels:
              app.kubernetes.io/name: cluster-in
          topologyKey: kubernetes.io/hostname
  persistence:
    storage: 1Gi
    storageClassName: sc-topolvm
  rabbitmq:
    additionalConfig: |-
      channel_max=1000
      cluster_keepalive_interval=10000
      collect_statistics=none
      collect_statistics_interval=5000
      default_vhost=/
      delegate_count=16
      disk_free_limit.absolute=50MB
      handshake_timeout=10000
      heartbeat=60
      max_message_size=134217728
      mirroring_sync_batch_size=4096
      mnesia_table_loading_retry_limit=10
      mnesia_table_loading_retry_timeout=30000
      num_acceptors.tcp=10
      queue_index_embed_msgs_below=4096
      raft.wal_max_size_bytes=64000000
      vm_memory_calculation_strategy=allocated
      vm_memory_high_watermark.relative=0.4
      vm_memory_high_watermark_paging_ratio=0.5
  replicas: 3
  resources:
    limits:
      cpu: 1
      memory: 2Gi
    requests:
      cpu: 1
      memory: 2Gi
  service:
    type: ClusterIP
  upgradeOption:
    autoUpgrade: false
  version: "3.12"
EOF

有关详细字段信息,请参阅 RabbitMQ API 文档

实例创建后,您可以使用以下命令查看实例:

$ kubectl -n default get rabbitmqclusters
NAME   AGE
rrrr   74s

您可以使用以下自定义命令批量查看实例状态:

$ kubectl -n default get rabbitmqclusters rrrr -o custom-columns='NAME:.metadata.name,PHASE:.status.phase,USER SECRET:.status.defaultUser.secretReference.name'
NAME   PHASE    USER SECRET
rrrr   Active   rrrr-default-user

输出表格字段的含义如下:

字段描述
NAME实例名称
PHASE实例状态,可能处于以下几种状态:
  • Creating: 实例正在创建资源并初始化集群
  • Updating: 实例配置正在更新中
  • Active: 实例处于服务状态
  • Failed: 实例在初始化或更新过程中遇到错误
  • Unknown: 实例处于未知状态
  • Paused: 实例已暂停,相关 Pods 已被关闭
USER SECRET存储默认用户帐户信息的密钥
提示

有关业务应用程序访问 RabbitMQ 实例的连接方式,请参阅 选择连接地址并配置连接方式