====== Setup a RabbitMQ-Cluster ====== ====== Environment Information ====== * 3 Nodes (mb1, mb2, mb3) * Domain: int.example.org * Cluster name: mb.int.example.org * Based on Rocky Linux 8 ====== Prepare Repository ====== Execute on all nodes. Setup the yum repository according to [[https://www.rabbitmq.com/install-rpm.html#package-cloud]]. vim /etc/yum.repos.d/rabbitmq.repo ## ## Zero dependency Erlang ## [rabbitmq_erlang] name=rabbitmq_erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/$basearch repo_gpgcheck=1 gpgcheck=1 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_erlang-source] name=rabbitmq_erlang-source baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 ## ## RabbitMQ server ## [rabbitmq_server] name=rabbitmq_server baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/8/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_server-source] name=rabbitmq_server-source baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/8/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 Update the cache. Accept the required keys from packetcloud.io and github.com. dnf makecache ====== Install rabbitmq-server ====== Execute on all nodes. Install the RabbitMQ-Server with all dependencies. dnf install rabbitmq-server Start the RabbitMQ-Server on system startup. systemctl enable rabbitmq-server.service ====== Set the Erlang Cookie ====== Execute on mb1. All nodes in the cluster must have the same erlang cookie. We copy it fro mb1 to the other nodes. scp /var/lib/rabbitmq/.erlang.cookie mb2:/var/lib/rabbitmq/.erlang.cookie scp /var/lib/rabbitmq/.erlang.cookie mb3:/var/lib/rabbitmq/.erlang.cookie ====== Create Config File ====== [[https://github.com/rabbitmq/rabbitmq-server/blob/v3.8.x/deps/rabbit/docs/rabbitmq.conf.example]] vim /etc/rabbitmq/rabbitmq.conf Example configuration file with transport security. # Defaults num_acceptors.tcp = 10 handshake_timeout = 10000 channel_max = 2048 # AMQP listeners.tcp.default = 5672 # AMQP with TLS listeners.ssl.default = 5671 ssl_options.cacertfile = /etc/rabbitmq/chain.crt ssl_options.certfile = /etc/rabbitmq/mb1.int.example.org.crt ssl_options.keyfile = /etc/rabbitmq/mb1.int.example.org.key ssl_options.verify = verify_none ssl_options.fail_if_no_peer_cert = false ssl_options.versions.1 = tlsv1.3 ssl_options.versions.2 = tlsv1.2 # Management management.ssl.port = 15672 management.ssl.cacertfile = /etc/rabbitmq/chain.crt management.ssl.certfile = /etc/rabbitmq/mb1.int.example.org.crt management.ssl.keyfile = /etc/rabbitmq/mb1.int.example.org.key management.ssl.versions.1 = tlsv1.3 management.ssl.versions.2 = tlsv1.2 # Cluster cluster_name = mb.int.example.org cluster_partition_handling = autoheal cluster_formation.peer_discovery_backend = classic_config cluster_formation.classic_config.nodes.1 = rabbit@mb1 cluster_formation.classic_config.nodes.2 = rabbit@mb2 cluster_formation.classic_config.nodes.3 = rabbit@mb3 # Promometheus #prometheus.tcp.port = 15692 #prometheus.ssl.port = 15691 #prometheus.return_per_object_metrics = false #prometheus.path = /metrics scp /etc/rabbitmq/rabbitmq.conf mb2:/etc/rabbitmq/ scp /etc/rabbitmq/rabbitmq.conf mb3:/etc/rabbitmq/