Skip to content

Commit cf8bbfa

Browse files
committed
Add ha proxy
1 parent 8f007fc commit cf8bbfa

File tree

4 files changed

+57
-9
lines changed

4 files changed

+57
-9
lines changed

services/rabbit/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
docker-compose.yml
22
!erlang.cookie.secret.template
33
rabbitmq.conf
4+
haproxy.cfg

services/rabbit/Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,9 @@ rabbitmq.conf: rabbitmq.conf.j2 .env venv
3030
# generate $@
3131
@$(call jinja, $<, .env, $@)
3232

33-
docker-compose.yml: docker-compose.yml.j2 .env rabbitmq.conf erlang.cookie.secret venv $(VENV_BIN)/j2
33+
haproxy.cfg: haproxy.cfg.j2 .env venv
34+
# generate $@
35+
@$(call jinja, $<, .env, $@)
36+
37+
docker-compose.yml: docker-compose.yml.j2 .env rabbitmq.conf erlang.cookie.secret haproxy.cfg venv $(VENV_BIN)/j2
3438
@$(call jinja, $<, .env, $@)

services/rabbit/docker-compose.yml.j2

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
{% set NODE_IXS = range(1, (RABBIT_CLUSTER_NODE_COUNT | int) + 1) -%}
22

33
services:
4+
loadbalancer:
5+
image: haproxy:3.2
6+
ports:
7+
- "5672:5672"
8+
- "15672:15672"
9+
networks:
10+
- rabbit
11+
configs:
12+
- source: haproxy.cfg
13+
target: /usr/local/etc/haproxy/haproxy.cfg
414
{% for ix in NODE_IXS %}
515
rabbit0{{ ix }}:
616
image: itisfoundation/rabbitmq:4.1.2-management
@@ -17,11 +27,6 @@ services:
1727
RABBITMQ_NODENAME: {% raw %}"rabbit@{{.Service.Name}}"{% endraw %}
1828
# https://docs.docker.com/reference/compose-file/services/#long-syntax-5
1929
# https://hub.docker.com/_/rabbitmq#erlang-cookie
20-
{% if ix == 1 %}
21-
# TODO: remove
22-
ports:
23-
- "15672:15672" # management UI
24-
{% endif %}
2530
secrets:
2631
# https://github.com/docker-library/rabbitmq/issues/279
2732
- source: rabbit_erlang_cookie
@@ -60,7 +65,7 @@ services:
6065
image: python:3.11
6166
command: sh -c "pip install pika && python /app/sub.py"
6267
environment:
63-
- RABBIT_HOSTS=rabbit_rabbit01,rabbit_rabbit02,rabbit_rabbit03
68+
- RABBIT_HOSTS=rabbit_loadbalancer
6469
- RABBIT_USER=${RABBIT_USER}
6570
- RABBIT_PASS=${RABBIT_PASSWORD}
6671
networks:
@@ -72,7 +77,7 @@ services:
7277
image: python:3.11
7378
command: sh -c "pip install pika && python /app/pub.py"
7479
environment:
75-
- RABBIT_HOSTS=rabbit_rabbit01,rabbit_rabbit02,rabbit_rabbit03
80+
- RABBIT_HOSTS=rabbit_loadbalancer
7681
- RABBIT_USER=${RABBIT_USER}
7782
- RABBIT_PASS=${RABBIT_PASSWORD}
7883
networks:
@@ -96,7 +101,9 @@ networks:
96101
configs:
97102
rabbitmq.conf:
98103
file: ./rabbitmq.conf
99-
name: ${STACK_NAME}_rabbitmq_conf_{{ "./rabbitmq.conf" | sha256file | substring(0,10) }}
104+
haproxy.cfg:
105+
file: ./haproxy.cfg
106+
name: ${STACK_NAME}_haproxy_conf_{{ "./haproxy.cfg" | sha256file | substring(0,10) }}
100107

101108
secrets:
102109
rabbit_erlang_cookie:

services/rabbit/haproxy.cfg.j2

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
global
2+
log stdout format raw local0
3+
maxconn 4096
4+
pidfile /tmp/haproxy.pid
5+
6+
defaults
7+
log global
8+
mode tcp
9+
option tcplog
10+
timeout connect 5s
11+
timeout client 30s
12+
timeout server 30s
13+
14+
frontend rabbit
15+
bind *:5672
16+
default_backend rabbit_backends
17+
18+
frontend rabbit_dashboard
19+
bind *:15672
20+
default_backend rabbit_dashboard_backends
21+
22+
backend rabbit_backends
23+
balance roundrobin
24+
server rabbit01 rabbit_rabbit01:5672 check inter 5s rise 2 fall 3
25+
server rabbit02 rabbit_rabbit02:5672 check inter 5s rise 2 fall 3
26+
server rabbit03 rabbit_rabbit03:5672 check inter 5s rise 2 fall 3
27+
28+
backend rabbit_dashboard_backends
29+
mode http
30+
balance roundrobin
31+
option forwardfor
32+
http-request set-header X-Forwarded-Port %[dst_port]
33+
http-request add-header X-Forwarded-Proto https if { ssl_fc }
34+
server rabbit01 rabbit_rabbit01:15672 check inter 5s rise 2 fall 3
35+
server rabbit02 rabbit_rabbit02:15672 check inter 5s rise 2 fall 3
36+
server rabbit03 rabbit_rabbit03:15672 check inter 5s rise 2 fall 3

0 commit comments

Comments
 (0)