第 3 章 RHOSO RabbitMQ 集群
Red Hat OpenStack Services on OpenShift (RHOSO)部署以下两个 RabbitMQ 集群:
-
用于OpenStack 服务间消息传递的 RabbitMQ。 -
RabbitMQ-cell1用于cell1的计算服务(nova)。
RabbitMQ 自定义资源配置两个集群。
- 要检索有关 RabbitMQ 集群的更多信息,请使用以下命令:
$ oc get rabbitmq --show-labels
NAME ALLREPLICASREADY RECONCILESUCCESS AGE LABELS
rabbitmq True True 25h <none>
rabbitmq-cell1 True True 25h <none>
RabbitMQ 服务 Operator rabbitmq-cluster-operator 执行以下任务:
- 创建运行 rabbitmq 服务器的 pod。
- 监控运行 rabbitmq 服务器的 pod。
- 在健康检查失败时,重启运行 rabbitmq 服务器的 pod。
3.1. 监控 RabbitMQ 的状态和服务可用性 复制链接链接已复制到粘贴板!
您可以使用以下命令检索有关 RabbitMQ 集群及其 pod 的状态和服务可用性的信息:
每个 RabbitMQ 副本都在专用 pod 中运行。
您可以使用以下命令来确定 RabbitMQ pod 的状态:
$ oc get pods -l app.kubernetes.io/name=rabbitmq
NAME READY STATUS RESTARTS AGE
rabbitmq-server-0 1/1 Running 0 46h
rabbitmq-server-1 1/1 Running 0 46h
rabbitmq-server-2 1/1 Running 0 46h
RabbitMQ 服务 Operator rabbitmq-cluster-operator 为 RabbitMQ 集群创建以下两个 OpenStack 服务对象:
-
rabbitmq-nodes服务,它为 rabbitmq 服务器提供 DNS 名称解析,以进行内部 RabbitMQ 通信。 -
使用由名为
rabbitmq的 MetalLB 管理的 Red Hat OpenShift Container Platform (RHOCP)服务公开的 RabbitMQ 消息传递服务。
您可以使用以下命令来确定这些服务的类型及其端口:
$ oc get service -l app.kubernetes.io/name=rabbitmq
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rabbitmq LoadBalancer 172.30.170.63 172.17.0.85 5671:31331/TCP,15671:31404/TCP,15691:31453/TCP 47h
rabbitmq-nodes ClusterIP None <none> 4369/TCP,25672/TCP 47h
MetalLB 托管服务称为 rabbitmq,是 RabbitMQ pod 之间的 LoadBalancer。它有一个侦听内部 API 网络的 IP 地址,因此可以从 OpenShift (RHOSO)数据平面和控制平面上的 Red Hat OpenStack Services 访问。
您可以使用以下命令来确定 rabbitmq 服务的配置:
$ oc describe service rabbitmq
Name: rabbitmq
Namespace: openstack
Labels: app.kubernetes.io/component=rabbitmq
app.kubernetes.io/name=rabbitmq
app.kubernetes.io/part-of=rabbitmq
Annotations: dnsmasq.network.openstack.org/hostname: rabbitmq.openstack.svc
metallb.universe.tf/address-pool: internalapi
metallb.universe.tf/ip-allocated-from-pool: internalapi
metallb.universe.tf/loadBalancerIPs: 172.17.0.85
Selector: app.kubernetes.io/name=rabbitmq
Type: LoadBalancer
IP Family Policy: SingleStack
IP Families: IPv4
IP: 172.30.170.63
IPs: 172.30.170.63
LoadBalancer Ingress: 172.17.0.85
Port: amqps 5671/TCP
TargetPort: 5671/TCP
NodePort: amqps 31331/TCP
Endpoints: 192.168.16.69:5671,192.168.20.54:5671,192.168.24.45:5671
在本例中,此 MetalLB 管理的服务名为 rabbitmq,从 172.17.0.85 上的内部 API (称为 LoadBalancer Ingress )接收传入流量,并将其转发到 172.30.170.63 的 IP 地址,从而平衡到 RabbitMQ pod 的流量。