mirror of
https://github.com/element-hq/synapse
synced 2024-08-19 19:40:20 +00:00
deploy: e4f545c452
This commit is contained in:
parent
3631b3504b
commit
108ab6bdbb
8 changed files with 236 additions and 60 deletions
|
@ -1779,6 +1779,77 @@ dpkg -i matrix-synapse-py3_1.3.0+stretch1_amd64.deb
|
||||||
</code></pre>
|
</code></pre>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<h1 id="upgrading-to-v1840"><a class="header" href="#upgrading-to-v1840">Upgrading to v1.84.0</a></h1>
|
||||||
|
<h2 id="deprecation-of-worker_replication_-configuration-settings"><a class="header" href="#deprecation-of-worker_replication_-configuration-settings">Deprecation of <code>worker_replication_*</code> configuration settings</a></h2>
|
||||||
|
<p>When using workers, </p>
|
||||||
|
<ul>
|
||||||
|
<li><code>worker_replication_host</code></li>
|
||||||
|
<li><code>worker_replication_http_port</code></li>
|
||||||
|
<li><code>worker_replication_http_tls</code></li>
|
||||||
|
</ul>
|
||||||
|
<p>can now be removed from individual worker YAML configuration <em><strong>if</strong></em> you add the main process to the <code>instance_map</code> in the shared YAML configuration,
|
||||||
|
using the name <code>main</code>.</p>
|
||||||
|
<h3 id="before"><a class="header" href="#before">Before:</a></h3>
|
||||||
|
<p>Shared YAML</p>
|
||||||
|
<pre><code class="language-yaml">instance_map:
|
||||||
|
generic_worker1:
|
||||||
|
host: localhost
|
||||||
|
port: 5678
|
||||||
|
tls: false
|
||||||
|
</code></pre>
|
||||||
|
<p>Worker YAML</p>
|
||||||
|
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
||||||
|
worker_name: generic_worker1
|
||||||
|
|
||||||
|
worker_replication_host: localhost
|
||||||
|
worker_replication_http_port: 3456
|
||||||
|
worker_replication_http_tls: false
|
||||||
|
|
||||||
|
worker_listeners:
|
||||||
|
- type: http
|
||||||
|
port: 1234
|
||||||
|
resources:
|
||||||
|
- names: [client, federation]
|
||||||
|
- type: http
|
||||||
|
port: 5678
|
||||||
|
resources:
|
||||||
|
- names: [replication]
|
||||||
|
|
||||||
|
worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="after"><a class="header" href="#after">After:</a></h3>
|
||||||
|
<p>Shared YAML</p>
|
||||||
|
<pre><code class="language-yaml">instance_map:
|
||||||
|
main:
|
||||||
|
host: localhost
|
||||||
|
port: 3456
|
||||||
|
tls: false
|
||||||
|
generic_worker1:
|
||||||
|
host: localhost
|
||||||
|
port: 5678
|
||||||
|
tls: false
|
||||||
|
</code></pre>
|
||||||
|
<p>Worker YAML</p>
|
||||||
|
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
||||||
|
worker_name: generic_worker1
|
||||||
|
|
||||||
|
worker_listeners:
|
||||||
|
- type: http
|
||||||
|
port: 1234
|
||||||
|
resources:
|
||||||
|
- names: [client, federation]
|
||||||
|
- type: http
|
||||||
|
port: 5678
|
||||||
|
resources:
|
||||||
|
- names: [replication]
|
||||||
|
|
||||||
|
worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml
|
||||||
|
|
||||||
|
</code></pre>
|
||||||
|
<p>Notes: </p>
|
||||||
|
<ul>
|
||||||
|
<li><code>tls</code> is optional but mirrors the functionality of <code>worker_replication_http_tls</code></li>
|
||||||
|
</ul>
|
||||||
<h1 id="upgrading-to-v1810"><a class="header" href="#upgrading-to-v1810">Upgrading to v1.81.0</a></h1>
|
<h1 id="upgrading-to-v1810"><a class="header" href="#upgrading-to-v1810">Upgrading to v1.81.0</a></h1>
|
||||||
<h2 id="application-service-path--authentication-deprecations"><a class="header" href="#application-service-path--authentication-deprecations">Application service path & authentication deprecations</a></h2>
|
<h2 id="application-service-path--authentication-deprecations"><a class="header" href="#application-service-path--authentication-deprecations">Application service path & authentication deprecations</a></h2>
|
||||||
<p>Synapse now attempts the versioned appservice paths before falling back to the
|
<p>Synapse now attempts the versioned appservice paths before falling back to the
|
||||||
|
@ -6894,13 +6965,17 @@ events may be dropped).</p>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="instance_map"><a class="header" href="#instance_map"><code>instance_map</code></a></h3>
|
<h3 id="instance_map"><a class="header" href="#instance_map"><code>instance_map</code></a></h3>
|
||||||
<p>When using workers this should be a map from <a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a> to the
|
<p>When using workers this should be a map from <a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a> to the
|
||||||
HTTP replication listener of the worker, if configured.
|
HTTP replication listener of the worker, if configured, and to the main process.
|
||||||
Each worker declared under <a href="usage/configuration/../../workers.html#stream-writers"><code>stream_writers</code></a> needs
|
Each worker declared under <a href="usage/configuration/../../workers.html#stream-writers"><code>stream_writers</code></a> needs
|
||||||
a HTTP replication listener, and that listener should be included in the <code>instance_map</code>.
|
a HTTP replication listener, and that listener should be included in the <code>instance_map</code>.
|
||||||
(The main process also needs an HTTP replication listener, but it should not be
|
The main process also needs an entry on the <code>instance_map</code>, and it should be listed under
|
||||||
listed in the <code>instance_map</code>.)</p>
|
<code>main</code> <strong>if even one other worker exists</strong>. Ensure the port matches with what is declared
|
||||||
|
inside the <code>listener</code> block for a <code>replication</code> listener.</p>
|
||||||
<p>Example configuration:</p>
|
<p>Example configuration:</p>
|
||||||
<pre><code class="language-yaml">instance_map:
|
<pre><code class="language-yaml">instance_map:
|
||||||
|
main:
|
||||||
|
host: localhost
|
||||||
|
port: 8030
|
||||||
worker1:
|
worker1:
|
||||||
host: localhost
|
host: localhost
|
||||||
port: 8034
|
port: 8034
|
||||||
|
@ -7006,6 +7081,7 @@ giving each worker a unique <code>worker_name</code>.</p>
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="worker_replication_host"><a class="header" href="#worker_replication_host"><code>worker_replication_host</code></a></h3>
|
<h3 id="worker_replication_host"><a class="header" href="#worker_replication_host"><code>worker_replication_host</code></a></h3>
|
||||||
|
<p><em>Deprecated as of version 1.84.0. Place <code>host</code> under <code>main</code> entry on the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a> in your shared yaml configuration instead.</em></p>
|
||||||
<p>The HTTP replication endpoint that it should talk to on the main Synapse process.
|
<p>The HTTP replication endpoint that it should talk to on the main Synapse process.
|
||||||
The main Synapse process defines this with a <code>replication</code> resource in
|
The main Synapse process defines this with a <code>replication</code> resource in
|
||||||
<a href="usage/configuration/config_documentation.html#listeners"><code>listeners</code> option</a>.</p>
|
<a href="usage/configuration/config_documentation.html#listeners"><code>listeners</code> option</a>.</p>
|
||||||
|
@ -7014,6 +7090,7 @@ The main Synapse process defines this with a <code>replication</code> resource i
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="worker_replication_http_port"><a class="header" href="#worker_replication_http_port"><code>worker_replication_http_port</code></a></h3>
|
<h3 id="worker_replication_http_port"><a class="header" href="#worker_replication_http_port"><code>worker_replication_http_port</code></a></h3>
|
||||||
|
<p><em>Deprecated as of version 1.84.0. Place <code>port</code> under <code>main</code> entry on the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a> in your shared yaml configuration instead.</em></p>
|
||||||
<p>The HTTP replication port that it should talk to on the main Synapse process.
|
<p>The HTTP replication port that it should talk to on the main Synapse process.
|
||||||
The main Synapse process defines this with a <code>replication</code> resource in
|
The main Synapse process defines this with a <code>replication</code> resource in
|
||||||
<a href="usage/configuration/config_documentation.html#listeners"><code>listeners</code> option</a>.</p>
|
<a href="usage/configuration/config_documentation.html#listeners"><code>listeners</code> option</a>.</p>
|
||||||
|
@ -7022,6 +7099,7 @@ The main Synapse process defines this with a <code>replication</code> resource i
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="worker_replication_http_tls"><a class="header" href="#worker_replication_http_tls"><code>worker_replication_http_tls</code></a></h3>
|
<h3 id="worker_replication_http_tls"><a class="header" href="#worker_replication_http_tls"><code>worker_replication_http_tls</code></a></h3>
|
||||||
|
<p><em>Deprecated as of version 1.84.0. Place <code>tls</code> under <code>main</code> entry on the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a> in your shared yaml configuration instead.</em></p>
|
||||||
<p>Whether TLS should be used for talking to the HTTP replication port on the main
|
<p>Whether TLS should be used for talking to the HTTP replication port on the main
|
||||||
Synapse process.
|
Synapse process.
|
||||||
The main Synapse process defines this with the <code>tls</code> option on its <a href="usage/configuration/config_documentation.html#listeners">listener</a> that
|
The main Synapse process defines this with the <code>tls</code> option on its <a href="usage/configuration/config_documentation.html#listeners">listener</a> that
|
||||||
|
@ -7039,9 +7117,9 @@ See <a href="usage/configuration/config_documentation.html#worker_replication_se
|
||||||
<p>A worker can handle HTTP requests. To do so, a <code>worker_listeners</code> option
|
<p>A worker can handle HTTP requests. To do so, a <code>worker_listeners</code> option
|
||||||
must be declared, in the same way as the <a href="usage/configuration/config_documentation.html#listeners"><code>listeners</code> option</a>
|
must be declared, in the same way as the <a href="usage/configuration/config_documentation.html#listeners"><code>listeners</code> option</a>
|
||||||
in the shared config.</p>
|
in the shared config.</p>
|
||||||
<p>Workers declared in <a href="usage/configuration/config_documentation.html#stream_writers"><code>stream_writers</code></a> will need to include a
|
<p>Workers declared in <a href="usage/configuration/config_documentation.html#stream_writers"><code>stream_writers</code></a> and <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a>
|
||||||
<code>replication</code> listener here, in order to accept internal HTTP requests from
|
will need to include a <code>replication</code> listener here, in order to accept internal HTTP
|
||||||
other workers.</p>
|
requests from other workers.</p>
|
||||||
<p>Example configuration:</p>
|
<p>Example configuration:</p>
|
||||||
<pre><code class="language-yaml">worker_listeners:
|
<pre><code class="language-yaml">worker_listeners:
|
||||||
- type: http
|
- type: http
|
||||||
|
@ -10653,13 +10731,21 @@ the processes.</p>
|
||||||
need its own configuration file and can take all of its configuration from the
|
need its own configuration file and can take all of its configuration from the
|
||||||
shared configuration file.</p>
|
shared configuration file.</p>
|
||||||
<h3 id="shared-configuration"><a class="header" href="#shared-configuration">Shared configuration</a></h3>
|
<h3 id="shared-configuration"><a class="header" href="#shared-configuration">Shared configuration</a></h3>
|
||||||
<p>Normally, only a couple of changes are needed to make an existing configuration
|
<p>Normally, only a few changes are needed to make an existing configuration
|
||||||
file suitable for use with workers. First, you need to enable an
|
file suitable for use with workers:</p>
|
||||||
|
<ul>
|
||||||
|
<li>First, you need to enable an
|
||||||
<a href="usage/configuration/config_documentation.html#listeners">"HTTP replication listener"</a>
|
<a href="usage/configuration/config_documentation.html#listeners">"HTTP replication listener"</a>
|
||||||
for the main process; and secondly, you need to enable
|
for the main process</li>
|
||||||
<a href="usage/configuration/config_documentation.html#redis">redis-based replication</a>.
|
<li>Secondly, you need to enable
|
||||||
Optionally, a <a href="usage/configuration/config_documentation.html#worker_replication_secret">shared secret</a>
|
<a href="usage/configuration/config_documentation.html#redis">redis-based replication</a></li>
|
||||||
can be used to authenticate HTTP traffic between workers. For example:</p>
|
<li>You will need to add an <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a>
|
||||||
|
with the <code>main</code> process defined, as well as the relevant connection information from
|
||||||
|
it's HTTP <code>replication</code> listener (defined in step 1 above). Note that the <code>host</code> defined
|
||||||
|
is the address the worker needs to look for the <code>main</code> process at, not necessarily the same address that is bound to.</li>
|
||||||
|
<li>Optionally, a <a href="usage/configuration/config_documentation.html#worker_replication_secret">shared secret</a>
|
||||||
|
can be used to authenticate HTTP traffic between workers. For example:</li>
|
||||||
|
</ul>
|
||||||
<pre><code class="language-yaml"># extend the existing `listeners` section. This defines the ports that the
|
<pre><code class="language-yaml"># extend the existing `listeners` section. This defines the ports that the
|
||||||
# main process will listen on.
|
# main process will listen on.
|
||||||
listeners:
|
listeners:
|
||||||
|
@ -10675,6 +10761,11 @@ worker_replication_secret: ""
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
|
instance_map:
|
||||||
|
main:
|
||||||
|
host: 'localhost'
|
||||||
|
port: 9093
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<p>See the <a href="usage/configuration/config_documentation.html">configuration manual</a>
|
<p>See the <a href="usage/configuration/config_documentation.html">configuration manual</a>
|
||||||
for the full documentation of each option.</p>
|
for the full documentation of each option.</p>
|
||||||
|
@ -10691,22 +10782,18 @@ is configured</li>
|
||||||
<li>The type of worker (<a href="usage/configuration/config_documentation.html#worker_app"><code>worker_app</code></a>).
|
<li>The type of worker (<a href="usage/configuration/config_documentation.html#worker_app"><code>worker_app</code></a>).
|
||||||
The currently available worker applications are listed <a href="workers.html#available-worker-applications">below</a>.</li>
|
The currently available worker applications are listed <a href="workers.html#available-worker-applications">below</a>.</li>
|
||||||
<li>A unique name for the worker (<a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a>).</li>
|
<li>A unique name for the worker (<a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a>).</li>
|
||||||
<li>The HTTP replication endpoint that it should talk to on the main synapse process
|
|
||||||
(<a href="usage/configuration/config_documentation.html#worker_replication_host"><code>worker_replication_host</code></a> and
|
|
||||||
<a href="usage/configuration/config_documentation.html#worker_replication_http_port"><code>worker_replication_http_port</code></a>).</li>
|
|
||||||
<li>If handling HTTP requests, a <a href="usage/configuration/config_documentation.html#worker_listeners"><code>worker_listeners</code></a> option
|
<li>If handling HTTP requests, a <a href="usage/configuration/config_documentation.html#worker_listeners"><code>worker_listeners</code></a> option
|
||||||
with an <code>http</code> listener.</li>
|
with an <code>http</code> listener.</li>
|
||||||
<li><strong>Synapse 1.72 and older:</strong> if handling the <code>^/_matrix/client/v3/keys/upload</code> endpoint, the HTTP URI for
|
<li><strong>Synapse 1.72 and older:</strong> if handling the <code>^/_matrix/client/v3/keys/upload</code> endpoint, the HTTP URI for
|
||||||
the main process (<code>worker_main_http_uri</code>). This config option is no longer required and is ignored when running Synapse 1.73 and newer.</li>
|
the main process (<code>worker_main_http_uri</code>). This config option is no longer required and is ignored when running Synapse 1.73 and newer.</li>
|
||||||
|
<li><strong>Synapse 1.83 and older:</strong> The HTTP replication endpoint that the worker should talk to on the main synapse process
|
||||||
|
(<a href="usage/configuration/config_documentation.html#worker_replication_host"><code>worker_replication_host</code></a> and
|
||||||
|
<a href="usage/configuration/config_documentation.html#worker_replication_http_port"><code>worker_replication_http_port</code></a>). If using Synapse 1.84 and newer, these are not needed if <code>main</code> is defined on the <a href="workers.html#shared-configuration">shared configuration</a> <code>instance_map</code></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>For example:</p>
|
<p>For example:</p>
|
||||||
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
||||||
worker_name: generic_worker1
|
worker_name: generic_worker1
|
||||||
|
|
||||||
# The replication listener on the main synapse process.
|
|
||||||
worker_replication_host: 127.0.0.1
|
|
||||||
worker_replication_http_port: 9093
|
|
||||||
|
|
||||||
worker_listeners:
|
worker_listeners:
|
||||||
- type: http
|
- type: http
|
||||||
port: 8083
|
port: 8083
|
||||||
|
@ -10960,15 +11047,22 @@ effects of bursts of events from that bridge on events sent by normal users.</p>
|
||||||
<h4 id="stream-writers"><a class="header" href="#stream-writers">Stream writers</a></h4>
|
<h4 id="stream-writers"><a class="header" href="#stream-writers">Stream writers</a></h4>
|
||||||
<p>Additionally, the writing of specific streams (such as events) can be moved off
|
<p>Additionally, the writing of specific streams (such as events) can be moved off
|
||||||
of the main process to a particular worker.</p>
|
of the main process to a particular worker.</p>
|
||||||
<p>To enable this, the worker must have a
|
<p>To enable this, the worker must have:</p>
|
||||||
<a href="usage/configuration/config_documentation.html#listeners">HTTP <code>replication</code> listener</a> configured,
|
<ul>
|
||||||
have a <a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a>
|
<li>An <a href="usage/configuration/config_documentation.html#listeners">HTTP <code>replication</code> listener</a> configured,</li>
|
||||||
|
<li>Have a <a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a>
|
||||||
and be listed in the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a>
|
and be listed in the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a>
|
||||||
config. The same worker can handle multiple streams, but unless otherwise documented,
|
config. </li>
|
||||||
|
<li>Have the main process declared on the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a> as well.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Note: The same worker can handle multiple streams, but unless otherwise documented,
|
||||||
each stream can only have a single writer.</p>
|
each stream can only have a single writer.</p>
|
||||||
<p>For example, to move event persistence off to a dedicated worker, the shared
|
<p>For example, to move event persistence off to a dedicated worker, the shared
|
||||||
configuration would include:</p>
|
configuration would include:</p>
|
||||||
<pre><code class="language-yaml">instance_map:
|
<pre><code class="language-yaml">instance_map:
|
||||||
|
main:
|
||||||
|
host: localhost
|
||||||
|
port: 8030
|
||||||
event_persister1:
|
event_persister1:
|
||||||
host: localhost
|
host: localhost
|
||||||
port: 8034
|
port: 8034
|
||||||
|
@ -11341,10 +11435,6 @@ Below is a sample <code>generic_worker</code> worker configuration file.</p>
|
||||||
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
||||||
worker_name: generic_worker1
|
worker_name: generic_worker1
|
||||||
|
|
||||||
# The replication listener on the main synapse process.
|
|
||||||
worker_replication_host: 127.0.0.1
|
|
||||||
worker_replication_http_port: 9093
|
|
||||||
|
|
||||||
worker_listeners:
|
worker_listeners:
|
||||||
- type: http
|
- type: http
|
||||||
port: 8083
|
port: 8083
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -163,10 +163,6 @@ Below is a sample <code>generic_worker</code> worker configuration file.</p>
|
||||||
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
||||||
worker_name: generic_worker1
|
worker_name: generic_worker1
|
||||||
|
|
||||||
# The replication listener on the main synapse process.
|
|
||||||
worker_replication_host: 127.0.0.1
|
|
||||||
worker_replication_http_port: 9093
|
|
||||||
|
|
||||||
worker_listeners:
|
worker_listeners:
|
||||||
- type: http
|
- type: http
|
||||||
port: 8083
|
port: 8083
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
worker_app: synapse.app.generic_worker
|
worker_app: synapse.app.generic_worker
|
||||||
worker_name: generic_worker1
|
worker_name: generic_worker1
|
||||||
|
|
||||||
# The replication listener on the main synapse process.
|
|
||||||
worker_replication_host: 127.0.0.1
|
|
||||||
worker_replication_http_port: 9093
|
|
||||||
|
|
||||||
worker_listeners:
|
worker_listeners:
|
||||||
- type: http
|
- type: http
|
||||||
port: 8083
|
port: 8083
|
||||||
|
|
|
@ -231,6 +231,77 @@ dpkg -i matrix-synapse-py3_1.3.0+stretch1_amd64.deb
|
||||||
</code></pre>
|
</code></pre>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<h1 id="upgrading-to-v1840"><a class="header" href="#upgrading-to-v1840">Upgrading to v1.84.0</a></h1>
|
||||||
|
<h2 id="deprecation-of-worker_replication_-configuration-settings"><a class="header" href="#deprecation-of-worker_replication_-configuration-settings">Deprecation of <code>worker_replication_*</code> configuration settings</a></h2>
|
||||||
|
<p>When using workers, </p>
|
||||||
|
<ul>
|
||||||
|
<li><code>worker_replication_host</code></li>
|
||||||
|
<li><code>worker_replication_http_port</code></li>
|
||||||
|
<li><code>worker_replication_http_tls</code></li>
|
||||||
|
</ul>
|
||||||
|
<p>can now be removed from individual worker YAML configuration <em><strong>if</strong></em> you add the main process to the <code>instance_map</code> in the shared YAML configuration,
|
||||||
|
using the name <code>main</code>.</p>
|
||||||
|
<h3 id="before"><a class="header" href="#before">Before:</a></h3>
|
||||||
|
<p>Shared YAML</p>
|
||||||
|
<pre><code class="language-yaml">instance_map:
|
||||||
|
generic_worker1:
|
||||||
|
host: localhost
|
||||||
|
port: 5678
|
||||||
|
tls: false
|
||||||
|
</code></pre>
|
||||||
|
<p>Worker YAML</p>
|
||||||
|
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
||||||
|
worker_name: generic_worker1
|
||||||
|
|
||||||
|
worker_replication_host: localhost
|
||||||
|
worker_replication_http_port: 3456
|
||||||
|
worker_replication_http_tls: false
|
||||||
|
|
||||||
|
worker_listeners:
|
||||||
|
- type: http
|
||||||
|
port: 1234
|
||||||
|
resources:
|
||||||
|
- names: [client, federation]
|
||||||
|
- type: http
|
||||||
|
port: 5678
|
||||||
|
resources:
|
||||||
|
- names: [replication]
|
||||||
|
|
||||||
|
worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="after"><a class="header" href="#after">After:</a></h3>
|
||||||
|
<p>Shared YAML</p>
|
||||||
|
<pre><code class="language-yaml">instance_map:
|
||||||
|
main:
|
||||||
|
host: localhost
|
||||||
|
port: 3456
|
||||||
|
tls: false
|
||||||
|
generic_worker1:
|
||||||
|
host: localhost
|
||||||
|
port: 5678
|
||||||
|
tls: false
|
||||||
|
</code></pre>
|
||||||
|
<p>Worker YAML</p>
|
||||||
|
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
||||||
|
worker_name: generic_worker1
|
||||||
|
|
||||||
|
worker_listeners:
|
||||||
|
- type: http
|
||||||
|
port: 1234
|
||||||
|
resources:
|
||||||
|
- names: [client, federation]
|
||||||
|
- type: http
|
||||||
|
port: 5678
|
||||||
|
resources:
|
||||||
|
- names: [replication]
|
||||||
|
|
||||||
|
worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml
|
||||||
|
|
||||||
|
</code></pre>
|
||||||
|
<p>Notes: </p>
|
||||||
|
<ul>
|
||||||
|
<li><code>tls</code> is optional but mirrors the functionality of <code>worker_replication_http_tls</code></li>
|
||||||
|
</ul>
|
||||||
<h1 id="upgrading-to-v1810"><a class="header" href="#upgrading-to-v1810">Upgrading to v1.81.0</a></h1>
|
<h1 id="upgrading-to-v1810"><a class="header" href="#upgrading-to-v1810">Upgrading to v1.81.0</a></h1>
|
||||||
<h2 id="application-service-path--authentication-deprecations"><a class="header" href="#application-service-path--authentication-deprecations">Application service path & authentication deprecations</a></h2>
|
<h2 id="application-service-path--authentication-deprecations"><a class="header" href="#application-service-path--authentication-deprecations">Application service path & authentication deprecations</a></h2>
|
||||||
<p>Synapse now attempts the versioned appservice paths before falling back to the
|
<p>Synapse now attempts the versioned appservice paths before falling back to the
|
||||||
|
|
|
@ -3477,13 +3477,17 @@ events may be dropped).</p>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="instance_map"><a class="header" href="#instance_map"><code>instance_map</code></a></h3>
|
<h3 id="instance_map"><a class="header" href="#instance_map"><code>instance_map</code></a></h3>
|
||||||
<p>When using workers this should be a map from <a href="#worker_name"><code>worker_name</code></a> to the
|
<p>When using workers this should be a map from <a href="#worker_name"><code>worker_name</code></a> to the
|
||||||
HTTP replication listener of the worker, if configured.
|
HTTP replication listener of the worker, if configured, and to the main process.
|
||||||
Each worker declared under <a href="../../workers.html#stream-writers"><code>stream_writers</code></a> needs
|
Each worker declared under <a href="../../workers.html#stream-writers"><code>stream_writers</code></a> needs
|
||||||
a HTTP replication listener, and that listener should be included in the <code>instance_map</code>.
|
a HTTP replication listener, and that listener should be included in the <code>instance_map</code>.
|
||||||
(The main process also needs an HTTP replication listener, but it should not be
|
The main process also needs an entry on the <code>instance_map</code>, and it should be listed under
|
||||||
listed in the <code>instance_map</code>.)</p>
|
<code>main</code> <strong>if even one other worker exists</strong>. Ensure the port matches with what is declared
|
||||||
|
inside the <code>listener</code> block for a <code>replication</code> listener.</p>
|
||||||
<p>Example configuration:</p>
|
<p>Example configuration:</p>
|
||||||
<pre><code class="language-yaml">instance_map:
|
<pre><code class="language-yaml">instance_map:
|
||||||
|
main:
|
||||||
|
host: localhost
|
||||||
|
port: 8030
|
||||||
worker1:
|
worker1:
|
||||||
host: localhost
|
host: localhost
|
||||||
port: 8034
|
port: 8034
|
||||||
|
@ -3589,6 +3593,7 @@ giving each worker a unique <code>worker_name</code>.</p>
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="worker_replication_host"><a class="header" href="#worker_replication_host"><code>worker_replication_host</code></a></h3>
|
<h3 id="worker_replication_host"><a class="header" href="#worker_replication_host"><code>worker_replication_host</code></a></h3>
|
||||||
|
<p><em>Deprecated as of version 1.84.0. Place <code>host</code> under <code>main</code> entry on the <a href="#instance_map"><code>instance_map</code></a> in your shared yaml configuration instead.</em></p>
|
||||||
<p>The HTTP replication endpoint that it should talk to on the main Synapse process.
|
<p>The HTTP replication endpoint that it should talk to on the main Synapse process.
|
||||||
The main Synapse process defines this with a <code>replication</code> resource in
|
The main Synapse process defines this with a <code>replication</code> resource in
|
||||||
<a href="#listeners"><code>listeners</code> option</a>.</p>
|
<a href="#listeners"><code>listeners</code> option</a>.</p>
|
||||||
|
@ -3597,6 +3602,7 @@ The main Synapse process defines this with a <code>replication</code> resource i
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="worker_replication_http_port"><a class="header" href="#worker_replication_http_port"><code>worker_replication_http_port</code></a></h3>
|
<h3 id="worker_replication_http_port"><a class="header" href="#worker_replication_http_port"><code>worker_replication_http_port</code></a></h3>
|
||||||
|
<p><em>Deprecated as of version 1.84.0. Place <code>port</code> under <code>main</code> entry on the <a href="#instance_map"><code>instance_map</code></a> in your shared yaml configuration instead.</em></p>
|
||||||
<p>The HTTP replication port that it should talk to on the main Synapse process.
|
<p>The HTTP replication port that it should talk to on the main Synapse process.
|
||||||
The main Synapse process defines this with a <code>replication</code> resource in
|
The main Synapse process defines this with a <code>replication</code> resource in
|
||||||
<a href="#listeners"><code>listeners</code> option</a>.</p>
|
<a href="#listeners"><code>listeners</code> option</a>.</p>
|
||||||
|
@ -3605,6 +3611,7 @@ The main Synapse process defines this with a <code>replication</code> resource i
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="worker_replication_http_tls"><a class="header" href="#worker_replication_http_tls"><code>worker_replication_http_tls</code></a></h3>
|
<h3 id="worker_replication_http_tls"><a class="header" href="#worker_replication_http_tls"><code>worker_replication_http_tls</code></a></h3>
|
||||||
|
<p><em>Deprecated as of version 1.84.0. Place <code>tls</code> under <code>main</code> entry on the <a href="#instance_map"><code>instance_map</code></a> in your shared yaml configuration instead.</em></p>
|
||||||
<p>Whether TLS should be used for talking to the HTTP replication port on the main
|
<p>Whether TLS should be used for talking to the HTTP replication port on the main
|
||||||
Synapse process.
|
Synapse process.
|
||||||
The main Synapse process defines this with the <code>tls</code> option on its <a href="#listeners">listener</a> that
|
The main Synapse process defines this with the <code>tls</code> option on its <a href="#listeners">listener</a> that
|
||||||
|
@ -3622,9 +3629,9 @@ See <a href="#worker_replication_secret"><code>worker_replication_secret</code><
|
||||||
<p>A worker can handle HTTP requests. To do so, a <code>worker_listeners</code> option
|
<p>A worker can handle HTTP requests. To do so, a <code>worker_listeners</code> option
|
||||||
must be declared, in the same way as the <a href="#listeners"><code>listeners</code> option</a>
|
must be declared, in the same way as the <a href="#listeners"><code>listeners</code> option</a>
|
||||||
in the shared config.</p>
|
in the shared config.</p>
|
||||||
<p>Workers declared in <a href="#stream_writers"><code>stream_writers</code></a> will need to include a
|
<p>Workers declared in <a href="#stream_writers"><code>stream_writers</code></a> and <a href="#instance_map"><code>instance_map</code></a>
|
||||||
<code>replication</code> listener here, in order to accept internal HTTP requests from
|
will need to include a <code>replication</code> listener here, in order to accept internal HTTP
|
||||||
other workers.</p>
|
requests from other workers.</p>
|
||||||
<p>Example configuration:</p>
|
<p>Example configuration:</p>
|
||||||
<pre><code class="language-yaml">worker_listeners:
|
<pre><code class="language-yaml">worker_listeners:
|
||||||
- type: http
|
- type: http
|
||||||
|
|
|
@ -209,13 +209,21 @@ the processes.</p>
|
||||||
need its own configuration file and can take all of its configuration from the
|
need its own configuration file and can take all of its configuration from the
|
||||||
shared configuration file.</p>
|
shared configuration file.</p>
|
||||||
<h3 id="shared-configuration"><a class="header" href="#shared-configuration">Shared configuration</a></h3>
|
<h3 id="shared-configuration"><a class="header" href="#shared-configuration">Shared configuration</a></h3>
|
||||||
<p>Normally, only a couple of changes are needed to make an existing configuration
|
<p>Normally, only a few changes are needed to make an existing configuration
|
||||||
file suitable for use with workers. First, you need to enable an
|
file suitable for use with workers:</p>
|
||||||
|
<ul>
|
||||||
|
<li>First, you need to enable an
|
||||||
<a href="usage/configuration/config_documentation.html#listeners">"HTTP replication listener"</a>
|
<a href="usage/configuration/config_documentation.html#listeners">"HTTP replication listener"</a>
|
||||||
for the main process; and secondly, you need to enable
|
for the main process</li>
|
||||||
<a href="usage/configuration/config_documentation.html#redis">redis-based replication</a>.
|
<li>Secondly, you need to enable
|
||||||
Optionally, a <a href="usage/configuration/config_documentation.html#worker_replication_secret">shared secret</a>
|
<a href="usage/configuration/config_documentation.html#redis">redis-based replication</a></li>
|
||||||
can be used to authenticate HTTP traffic between workers. For example:</p>
|
<li>You will need to add an <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a>
|
||||||
|
with the <code>main</code> process defined, as well as the relevant connection information from
|
||||||
|
it's HTTP <code>replication</code> listener (defined in step 1 above). Note that the <code>host</code> defined
|
||||||
|
is the address the worker needs to look for the <code>main</code> process at, not necessarily the same address that is bound to.</li>
|
||||||
|
<li>Optionally, a <a href="usage/configuration/config_documentation.html#worker_replication_secret">shared secret</a>
|
||||||
|
can be used to authenticate HTTP traffic between workers. For example:</li>
|
||||||
|
</ul>
|
||||||
<pre><code class="language-yaml"># extend the existing `listeners` section. This defines the ports that the
|
<pre><code class="language-yaml"># extend the existing `listeners` section. This defines the ports that the
|
||||||
# main process will listen on.
|
# main process will listen on.
|
||||||
listeners:
|
listeners:
|
||||||
|
@ -231,6 +239,11 @@ worker_replication_secret: ""
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
|
instance_map:
|
||||||
|
main:
|
||||||
|
host: 'localhost'
|
||||||
|
port: 9093
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<p>See the <a href="usage/configuration/config_documentation.html">configuration manual</a>
|
<p>See the <a href="usage/configuration/config_documentation.html">configuration manual</a>
|
||||||
for the full documentation of each option.</p>
|
for the full documentation of each option.</p>
|
||||||
|
@ -247,22 +260,18 @@ is configured</li>
|
||||||
<li>The type of worker (<a href="usage/configuration/config_documentation.html#worker_app"><code>worker_app</code></a>).
|
<li>The type of worker (<a href="usage/configuration/config_documentation.html#worker_app"><code>worker_app</code></a>).
|
||||||
The currently available worker applications are listed <a href="#available-worker-applications">below</a>.</li>
|
The currently available worker applications are listed <a href="#available-worker-applications">below</a>.</li>
|
||||||
<li>A unique name for the worker (<a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a>).</li>
|
<li>A unique name for the worker (<a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a>).</li>
|
||||||
<li>The HTTP replication endpoint that it should talk to on the main synapse process
|
|
||||||
(<a href="usage/configuration/config_documentation.html#worker_replication_host"><code>worker_replication_host</code></a> and
|
|
||||||
<a href="usage/configuration/config_documentation.html#worker_replication_http_port"><code>worker_replication_http_port</code></a>).</li>
|
|
||||||
<li>If handling HTTP requests, a <a href="usage/configuration/config_documentation.html#worker_listeners"><code>worker_listeners</code></a> option
|
<li>If handling HTTP requests, a <a href="usage/configuration/config_documentation.html#worker_listeners"><code>worker_listeners</code></a> option
|
||||||
with an <code>http</code> listener.</li>
|
with an <code>http</code> listener.</li>
|
||||||
<li><strong>Synapse 1.72 and older:</strong> if handling the <code>^/_matrix/client/v3/keys/upload</code> endpoint, the HTTP URI for
|
<li><strong>Synapse 1.72 and older:</strong> if handling the <code>^/_matrix/client/v3/keys/upload</code> endpoint, the HTTP URI for
|
||||||
the main process (<code>worker_main_http_uri</code>). This config option is no longer required and is ignored when running Synapse 1.73 and newer.</li>
|
the main process (<code>worker_main_http_uri</code>). This config option is no longer required and is ignored when running Synapse 1.73 and newer.</li>
|
||||||
|
<li><strong>Synapse 1.83 and older:</strong> The HTTP replication endpoint that the worker should talk to on the main synapse process
|
||||||
|
(<a href="usage/configuration/config_documentation.html#worker_replication_host"><code>worker_replication_host</code></a> and
|
||||||
|
<a href="usage/configuration/config_documentation.html#worker_replication_http_port"><code>worker_replication_http_port</code></a>). If using Synapse 1.84 and newer, these are not needed if <code>main</code> is defined on the <a href="#shared-configuration">shared configuration</a> <code>instance_map</code></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>For example:</p>
|
<p>For example:</p>
|
||||||
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
<pre><code class="language-yaml">worker_app: synapse.app.generic_worker
|
||||||
worker_name: generic_worker1
|
worker_name: generic_worker1
|
||||||
|
|
||||||
# The replication listener on the main synapse process.
|
|
||||||
worker_replication_host: 127.0.0.1
|
|
||||||
worker_replication_http_port: 9093
|
|
||||||
|
|
||||||
worker_listeners:
|
worker_listeners:
|
||||||
- type: http
|
- type: http
|
||||||
port: 8083
|
port: 8083
|
||||||
|
@ -516,15 +525,22 @@ effects of bursts of events from that bridge on events sent by normal users.</p>
|
||||||
<h4 id="stream-writers"><a class="header" href="#stream-writers">Stream writers</a></h4>
|
<h4 id="stream-writers"><a class="header" href="#stream-writers">Stream writers</a></h4>
|
||||||
<p>Additionally, the writing of specific streams (such as events) can be moved off
|
<p>Additionally, the writing of specific streams (such as events) can be moved off
|
||||||
of the main process to a particular worker.</p>
|
of the main process to a particular worker.</p>
|
||||||
<p>To enable this, the worker must have a
|
<p>To enable this, the worker must have:</p>
|
||||||
<a href="usage/configuration/config_documentation.html#listeners">HTTP <code>replication</code> listener</a> configured,
|
<ul>
|
||||||
have a <a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a>
|
<li>An <a href="usage/configuration/config_documentation.html#listeners">HTTP <code>replication</code> listener</a> configured,</li>
|
||||||
|
<li>Have a <a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a>
|
||||||
and be listed in the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a>
|
and be listed in the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a>
|
||||||
config. The same worker can handle multiple streams, but unless otherwise documented,
|
config. </li>
|
||||||
|
<li>Have the main process declared on the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a> as well.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Note: The same worker can handle multiple streams, but unless otherwise documented,
|
||||||
each stream can only have a single writer.</p>
|
each stream can only have a single writer.</p>
|
||||||
<p>For example, to move event persistence off to a dedicated worker, the shared
|
<p>For example, to move event persistence off to a dedicated worker, the shared
|
||||||
configuration would include:</p>
|
configuration would include:</p>
|
||||||
<pre><code class="language-yaml">instance_map:
|
<pre><code class="language-yaml">instance_map:
|
||||||
|
main:
|
||||||
|
host: localhost
|
||||||
|
port: 8030
|
||||||
event_persister1:
|
event_persister1:
|
||||||
host: localhost
|
host: localhost
|
||||||
port: 8034
|
port: 8034
|
||||||
|
|
Loading…
Reference in a new issue