创建实例

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

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

版本建议

在选择版本时,请尽可能使用最新的受支持版本。新部署推荐使用 4.2

  1. 4.2 包含较新的社区修复和持续演进的功能。
  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 Documentation

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

$ 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 实例的连接方式,请参阅 选择连接地址并配置连接方式