Chapter 3. RHOSO RabbitMQ clusters
Chapter 3. RHOSO RabbitMQ clusters Red Hat OpenStack Services on OpenShift (RHOSO) deploys the following two RabbitMQ clusters: rabbitmq used for messaging between OpenStack services. rabbitmq-cell1 used for the Compute service (nova) for cell1 . RabbitMQ Custom Resources configures both clusters. To retrieve more information about the RabbitMQ clusters, use the following command: The rabbitmq-cluster-operator performs the following tasks: Creates the pods that run the rabbitmq servers. Monitors the pods that run the rabbitmq servers. Restarts the pods that run the rabbitmq servers when health checks fail. 3.1. Monitoring the state and service availability of RabbitMQ You can use the following commands to retrieve information about the state and service availability of the RabbitMQ clusters and their pods: Note Each RabbitMQ replica runs in a dedicated pod. You can use the following command to determine the status of the RabbitMQ pods: The rabbitmq-cluster-operator creates the following two OpenStack service objects for a RabbitMQ cluster: The rabbitmq-nodes service, which provides a DNS name resolution to the rabbitmq servers for internal RabbitMQ communication. The RabbitMQ messaging service that is exposed using an Red Hat OpenShift Container Platform (RHOCP) service managed by MetalLB called rabbitmq . You can use the following command to determine the type of these services and their ports: The MetalLB-managed service, called rabbitmq , is a LoadBalancer across the RabbitMQ pods. It has an IP address that listens to the internal API network so it is accessible from the Red Hat OpenStack Services on OpenShift (RHOSO) data plane and control plane. You can use the following command to determine the configuration of the rabbitmq service: In this example, this MetalLB-managed service called rabbitmq , receives incoming traffic from the internal API on 172.17.0.85, which is known as the LoadBalancer Ingress , and forwards it to its IP address of 172.30.170.63 which balances traffic to the RabbitMQ pods.
oc get rabbitmq --show-labels NAME ALLREPLICASREADY RECONCILESUCCESS AGE LABELS rabbitmq True True 25h <none> rabbitmq-cell1 True True 25h <none> 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 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 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