This commit is contained in:
reivilibre 2023-05-11 10:33:40 +00:00
parent 3631b3504b
commit 108ab6bdbb
8 changed files with 236 additions and 60 deletions

View file

@ -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 &amp; authentication deprecations</a></h2> <h2 id="application-service-path--authentication-deprecations"><a class="header" href="#application-service-path--authentication-deprecations">Application service path &amp; 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">&quot;HTTP replication listener&quot;</a> <a href="usage/configuration/config_documentation.html#listeners">&quot;HTTP replication listener&quot;</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: &quot;&quot;
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

View file

@ -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

View file

@ -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

View file

@ -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 &amp; authentication deprecations</a></h2> <h2 id="application-service-path--authentication-deprecations"><a class="header" href="#application-service-path--authentication-deprecations">Application service path &amp; 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

View file

@ -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

View file

@ -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">&quot;HTTP replication listener&quot;</a> <a href="usage/configuration/config_documentation.html#listeners">&quot;HTTP replication listener&quot;</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: &quot;&quot;
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