创建实例

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

在当前版本中,支持以下 RabbitMQ 版本:3.124.2。RabbitMQ 3.8.16 在 v4.2.x 中已不再受支持。本文以 4.2 的实例创建过程为例。

版本建议

在选择版本时,请尽可能使用最新的受支持版本。新部署场景建议使用 4.2

  1. 4.2 包含更新的 Community 修复和持续演进的功能。
  2. 如果您当前运行的是 3.12,请根据业务窗口规划并验证迁移到 4.2

创建 RabbitMQ 实例

前提条件

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

操作步骤

CLI
Web Console

通过 CLI 创建 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: "4.2"
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存储默认用户帐户信息的 Secret
提示

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