ict-architecture
Labo 06: RabbitMQ Clusteren
Opzetten van een hoog beschikbare RabbitMQ cluster binnen Docker Swarm met peer discovery.
Handmatig Clusteren
chmod 600 .erlang.cookie && chown 999:999 .erlang.cookieZet de juiste permissies voor de Erlang cookie.
docker exec -it <container_id> rabbitmqctl stop_appStop de RabbitMQ applicatie op een node.
docker exec -it <container_id> rabbitmqctl join_cluster rabbit@<hostname_node_1>Join de cluster via de eerste node.
docker exec -it <container_id> rabbitmqctl cluster_statusControleer of de node succesvol is gejoind.
Declaratieve Setup
echo "MijnGeheimeCookie" | docker secret create erlang_cookie -Maak een secret aan voor de Erlang cookie in Swarm.
Bestanden & Configuraties
rabbitmq.conf
ini
cluster_formation.peer_discovery_backend = classic_configcluster_formation.classic_config.nodes.1 = rabbit@1.rabbitmqcluster_formation.classic_config.nodes.2 = rabbit@2.rabbitmqcluster_formation.classic_config.nodes.3 = rabbit@3.rabbitmqConfiguratie voor automatische peer discovery.
rabbitmq-stack.yaml
yaml
version: '3.8'services: rabbitmq: image: rabbitmq:3-management hostname: "{{.Task.Slot}}.rabbitmq" environment: RABBITMQ_USE_LONGNAME: "true" RABBITMQ_NODENAME: "rabbit@{{.Task.Slot}}.rabbitmq" RABBITMQ_ERLANG_COOKIE_FILE: "/run/secrets/erlang_cookie" secrets: - erlang_cookie configs: - source: rabbit_config target: /etc/rabbitmq/rabbitmq.conf networks: - rabbit-net deploy: replicas: 3 endpoint_mode: dnsrrnetworks: rabbit-net: driver: overlayconfigs: rabbit_config: file: ./rabbitmq.confsecrets: erlang_cookie: external: trueStack configuratie voor RabbitMQ cluster met templates en secrets.