[__matrix_synapse_worker] initial implementation
This commit is contained in:
parent
2bcc815555
commit
37762dd1ca
9 changed files with 203 additions and 0 deletions
|
@ -0,0 +1,25 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Synapse %i
|
||||||
|
AssertPathExists=/etc/matrix-synapse/workers/%i.yaml
|
||||||
|
|
||||||
|
# This service should be restarted when the synapse target is restarted.
|
||||||
|
PartOf=matrix-synapse.target
|
||||||
|
|
||||||
|
# if this is started at the same time as the main, let the main process start
|
||||||
|
# first, to initialise the database schema.
|
||||||
|
After=matrix-synapse.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
NotifyAccess=main
|
||||||
|
User=matrix-synapse
|
||||||
|
WorkingDirectory=/var/lib/matrix-synapse
|
||||||
|
EnvironmentFile=/etc/default/matrix-synapse
|
||||||
|
ExecStart=/opt/venvs/matrix-synapse/bin/python -m synapse.app.generic_worker --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --config-path=/etc/matrix-synapse/workers/%i.yaml
|
||||||
|
ExecReload=/bin/kill -HUP $MAINPID
|
||||||
|
Restart=always
|
||||||
|
RestartSec=3
|
||||||
|
SyslogIdentifier=matrix-synapse-%i
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=matrix-synapse.target
|
25
type/__matrix_synapse_worker/files/worker.yaml.sh
Executable file
25
type/__matrix_synapse_worker/files/worker.yaml.sh
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
worker_app: "${WORKER_APP:?}"
|
||||||
|
worker_name: "${WORKER_NAME:?}"
|
||||||
|
|
||||||
|
# The replication listener on the main synapse process.
|
||||||
|
worker_replication_host: "${WORKER_REPLICATION_HOST:?}"
|
||||||
|
worker_replication_http_port: "${WORKER_REPLICATION_PORT:?}"
|
||||||
|
|
||||||
|
worker_listeners:
|
||||||
|
- type: http
|
||||||
|
port: "${WORKER_PORT:?}"
|
||||||
|
resources:
|
||||||
|
- names:
|
||||||
|
EOF
|
||||||
|
|
||||||
|
for resource in ${WORKER_RESOURCES:?}; do
|
||||||
|
echo " - \"$resource\""
|
||||||
|
done
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
worker_log_config: "${WORKER_LOG_CONFIG:?}"
|
||||||
|
EOF
|
77
type/__matrix_synapse_worker/man.rst
Normal file
77
type/__matrix_synapse_worker/man.rst
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
cdist-type__matrix_synapse(7)
|
||||||
|
======================
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
cdist-type__matrix_synapse_worker - Configure a synapse worker
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
This type configures and start a matrix worker. This type does not install
|
||||||
|
synapse: `cdist-type__matrix_synapse(7) <cdist-type__matrix_synapse.html>`_
|
||||||
|
type must be run first.
|
||||||
|
|
||||||
|
It is also recommended to take a look at:
|
||||||
|
|
||||||
|
- `upstream's high-level overview on workers (matrix.org blog post) <https://matrix.org/blog/2020/11/03/how-we-fixed-synapses-scalability>`_
|
||||||
|
- `upstream's documentation on workers <https://github.com/matrix-org/synapse/blob/develop/docs/workers.md>`_
|
||||||
|
|
||||||
|
REQUIRED PARAMETERS
|
||||||
|
-------------------
|
||||||
|
app
|
||||||
|
Worker application to be used. A detailed list is available on `upstream's
|
||||||
|
documentation
|
||||||
|
<https://github.com/matrix-org/synapse/blob/master/docs/workers.md#available-worker-applications>`_.
|
||||||
|
|
||||||
|
port
|
||||||
|
Port on which this worker will listen.
|
||||||
|
|
||||||
|
resource
|
||||||
|
Resources to be served by this worker. Can be specified multiple times.
|
||||||
|
|
||||||
|
OPTIONAL PARAMETERS
|
||||||
|
-------------------
|
||||||
|
replication-host
|
||||||
|
Replication endpoint host of your main synapse process. Defaults to
|
||||||
|
localhost.
|
||||||
|
|
||||||
|
replication-port
|
||||||
|
Replication endpoint port of your main synapse process. Defaults to 9093.
|
||||||
|
|
||||||
|
log-config
|
||||||
|
Path to log configuration. Defaults to synapse's main process log
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
__matrix_synapse --server-name ungleich.ch \
|
||||||
|
--base-url https://matrix.ungleich.ch \
|
||||||
|
--database-engine sqlite3 \
|
||||||
|
--database-name /var/lib/matrix-syanpse/homeserver.db \
|
||||||
|
--worker-mode
|
||||||
|
require="__matrix_synapse" __matrix_synapse_worker generic \
|
||||||
|
--app 'synapse.app.generic_worker' \
|
||||||
|
--port 8083 \
|
||||||
|
--resource 'federation' \
|
||||||
|
--resource 'client'
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
- `cdist-type__matrix_synapse(7) <cdist-type__matrix_synapse.html>`_
|
||||||
|
|
||||||
|
|
||||||
|
AUTHORS
|
||||||
|
-------
|
||||||
|
Timothée Floure <timothee.floure@ungleich.ch>
|
||||||
|
|
||||||
|
|
||||||
|
COPYING
|
||||||
|
-------
|
||||||
|
Copyright \(C) 2019-2021 Timothée Floure. You can redistribute it
|
||||||
|
and/or modify it under the terms of the GNU General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the
|
||||||
|
License, or (at your option) any later version.
|
67
type/__matrix_synapse_worker/manifest
Executable file
67
type/__matrix_synapse_worker/manifest
Executable file
|
@ -0,0 +1,67 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# TODO: check if matrix-synapse package is installed (fail if not - it's not
|
||||||
|
# this type's job to install it).
|
||||||
|
|
||||||
|
name=$__object_id
|
||||||
|
os=$(cat "$__global/explorer/os")
|
||||||
|
|
||||||
|
case "$os" in
|
||||||
|
debian)
|
||||||
|
synapse_conf_dir='/etc/synapse'
|
||||||
|
synapse_workers_conf_dir="$synapse_conf_dir/workers"
|
||||||
|
|
||||||
|
# Synapse log configuration on debian - default value of config-log
|
||||||
|
# parameter.
|
||||||
|
WORKER_LOG_CONFIG="$synapse_conf_dir/log.yaml"
|
||||||
|
|
||||||
|
# As of writing, debian's matrix-synapse package does not install the
|
||||||
|
# matrix-synapse-worker@.service systemd unit.
|
||||||
|
systemd_worker_service_override=present
|
||||||
|
systemd_worker_service="matrix-synapse-worker@$name"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printf "Your operating system (%s) is currently not supported by this type (%s)\n" "$os" "${__type##*/}" >&2
|
||||||
|
printf "Please contribute an implementation for it if you can.\n" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Type parameters.
|
||||||
|
WORKER_NAME=$__object_id
|
||||||
|
WORKER_APP=$(cat "$__object/parameter/app")
|
||||||
|
WORKER_PORT=$(cat "$__object/parameter/port")
|
||||||
|
WORKER_RESOURCES=$(cat "$__object/parameter/resource")
|
||||||
|
|
||||||
|
export WORKER_APP WORKER_NAME WORKER_PORT
|
||||||
|
|
||||||
|
if [ -f "$__object/parameter/log-config" ]; then
|
||||||
|
WORKER_LOG_CONFIG=$(cat "$__object/parameter/log-config")
|
||||||
|
fi
|
||||||
|
export WORKER_LOG_CONFIG
|
||||||
|
|
||||||
|
WORKER_REPLICATION_HOST=$(cat "$__object/parameter/replication-host")
|
||||||
|
WORKER_REPLICATION_PORT=$(cat "$__object/parameter/replication-port")
|
||||||
|
export WORKER_REPLICATION_HOST WORKER_REPLICATION_PORT
|
||||||
|
|
||||||
|
# Generate and deploy configuration files.
|
||||||
|
mkdir -p "$__object/files"
|
||||||
|
"$__type/files/worker.yaml.sh" > "$__object/files/worker.yaml"
|
||||||
|
|
||||||
|
__directory "$synapse_workers_conf_dir" --parents
|
||||||
|
require="__directory/$synapse_workers_conf_dir" \
|
||||||
|
__file "$synapse_workers_conf_dir/$name.yaml" \
|
||||||
|
--source "$__object/files/worker.yaml" \
|
||||||
|
--mode 0644
|
||||||
|
|
||||||
|
__file "/etc/systemd/systemd/matrix-synapse-worker@.service" \
|
||||||
|
--source "$__type/files/matrix-synapse-worker@.service" \
|
||||||
|
--mode 0644 \
|
||||||
|
--state $systemd_worker_service_override
|
||||||
|
|
||||||
|
# Start service, enable at boot.
|
||||||
|
require="__file/$synapse_workers_conf_dir/$name.yaml \
|
||||||
|
__file/etc/systemd/systemd/matrix-synapse-worker@.service" \
|
||||||
|
__service "$systemd_worker_service" --action start
|
||||||
|
require="__service/$systemd_worker_service" \
|
||||||
|
__start_on_boot "$systemd_worker_service"
|
|
@ -0,0 +1 @@
|
||||||
|
localhost
|
|
@ -0,0 +1 @@
|
||||||
|
9093
|
3
type/__matrix_synapse_worker/parameter/optional
Normal file
3
type/__matrix_synapse_worker/parameter/optional
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
replication-host
|
||||||
|
replication-port
|
||||||
|
log-config
|
1
type/__matrix_synapse_worker/parameter/optional_multiple
Normal file
1
type/__matrix_synapse_worker/parameter/optional_multiple
Normal file
|
@ -0,0 +1 @@
|
||||||
|
resource
|
3
type/__matrix_synapse_worker/parameter/required
Normal file
3
type/__matrix_synapse_worker/parameter/required
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
app
|
||||||
|
name
|
||||||
|
port
|
Loading…
Reference in a new issue