Run Synapse workers in their own containers

This switches the `docker exec` method of spawning
Synapse workers inside the `matrix-synapse` container with
dedicated containers for each worker.

We also have dedicated systemd services for each worker,
so this are now:
- more consistent with everything else (we don't use systemd
instantiated services anywhere)
- we don't need the "parse systemd instance name into worker name +
port" part
- we don't need to keep track of PIDs manually
- we don't need jq (less depenendencies)
- workers dying would be restarted by systemd correctly, like any other
service
- `docker ps` shows each worker separately and we can observe resource
usage
This commit is contained in:
Slavi Pantaleev
2021-01-25 12:14:46 +02:00
parent da50fb27a0
commit 70796703d3
12 changed files with 160 additions and 190 deletions

View File

@ -14,7 +14,7 @@
ip_hash;
{% for worker in generic_workers %}
server "matrix-synapse:{{ worker.port }}";
server "matrix-synapse-worker-{{ worker.type }}-{{ worker.port }}:{{ worker.port }}";
{% endfor %}
}
{% endif %}
@ -22,7 +22,7 @@
{% if frontend_proxy_workers %}
upstream frontend_proxy_upstream {
{% for worker in frontend_proxy_workers %}
server "matrix-synapse:{{ worker.port }}";
server "matrix-synapse-worker-{{ worker.type }}-{{ worker.port }}:{{ worker.port }}";
{% endfor %}
}
{% endif %}
@ -30,7 +30,7 @@
{% if media_repository_workers %}
upstream media_repository_upstream {
{% for worker in media_repository_workers %}
server "matrix-synapse:{{ worker.port }}";
server "matrix-synapse-worker-{{ worker.type }}-{{ worker.port }}:{{ worker.port }}";
{% endfor %}
}
{% endif %}
@ -38,7 +38,7 @@
{% if user_dir_workers %}
upstream user_dir_upstream {
{% for worker in user_dir_workers %}
server "matrix-synapse:{{ worker.port }}";
server "matrix-synapse-worker-{{ worker.type }}-{{ worker.port }}:{{ worker.port }}";
{% endfor %}
}
{% endif %}