From 7021455bd1ed7b125c55eb1b33c5a01f2bc55ee0 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 17 Nov 2022 11:33:21 +0000 Subject: Add latest changes from gitlab-org/gitlab@15-6-stable-ee --- doc/administration/gitaly/praefect.md | 40 +++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'doc/administration/gitaly/praefect.md') diff --git a/doc/administration/gitaly/praefect.md b/doc/administration/gitaly/praefect.md index e3b198d1012..8cf32a6aaa3 100644 --- a/doc/administration/gitaly/praefect.md +++ b/doc/administration/gitaly/praefect.md @@ -28,6 +28,9 @@ The minimum recommended configuration for a Gitaly Cluster requires: - 3 Praefect nodes - 3 Gitaly nodes (1 primary, 2 secondary) +You should configure an odd number of Gitaly nodes so that transactions have a tie-breaker in case one of the +Gitaly nodes fails in a mutating RPC call. + See the [design document](https://gitlab.com/gitlab-org/gitaly/-/blob/master/doc/design_ha.md) for implementation details. @@ -155,6 +158,14 @@ We note in the instructions below where these secrets are required. NOTE: Omnibus GitLab installations can use `gitlab-secrets.json` for `GITLAB_SHELL_SECRET_TOKEN`. +### Customize time server setting + +By default, Gitaly and Praefect nodes use the time server at `pool.ntp.org` for time synchronization checks. You can customize this setting by adding the +following to `gitlab.rb` on each node: + +- `gitaly['env'] = { "NTP_HOST" => "ntp.example.com" }`, for Gitaly nodes. +- `praefect['env'] = { "NTP_HOST" => "ntp.example.com" }`, for Praefect nodes. + ### PostgreSQL NOTE: @@ -285,7 +296,7 @@ praefect['database_direct_dbname'] = 'praefect_production' #praefect['database_direct_sslrootcert'] = '...' ``` -Once configured, this connection is automatically used for the +When configured, this connection is automatically used for the [SQL LISTEN](https://www.postgresql.org/docs/11/sql-listen.html) feature and allows Praefect to receive notifications from PostgreSQL for cache invalidation. @@ -584,11 +595,7 @@ Updates to example must be made at: } ``` - NOTE: - In [GitLab 13.8 and earlier](https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/4988), - Gitaly nodes were configured directly under the virtual storage, and not under the `nodes` key. - -1. [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/2013) in GitLab 13.1 and later, enable [distribution of reads](index.md#distributed-reads). +1. Enable [distribution of reads](index.md#distributed-reads). 1. Save the changes to `/etc/gitlab/gitlab.rb` and [reconfigure Praefect](../restart_gitlab.md#omnibus-gitlab-reconfigure): @@ -641,8 +648,6 @@ Updates to example must be made at: #### Enable TLS support -> [Introduced](https://gitlab.com/gitlab-org/gitaly/-/issues/1698) in GitLab 13.2. - Praefect supports TLS encryption. To communicate with a Praefect instance that listens for secure connections, you must: @@ -1369,7 +1374,8 @@ We recommend using [repository-specific primary nodes](#repository-specific-prim ### Repository-specific primary nodes -> [Introduced](https://gitlab.com/gitlab-org/gitaly/-/issues/3492) in GitLab 13.12. +> - [Introduced](https://gitlab.com/gitlab-org/gitaly/-/issues/3492) in GitLab 13.12, with primary elections run when Praefect starts or the cluster's consensus of a Gitaly node's health changes. +> - [Changed](https://gitlab.com/gitlab-org/gitaly/-/merge_requests/3543) in GitLab 14.1, primary elections are run lazily. Gitaly Cluster supports electing repository-specific primary Gitaly nodes. Repository-specific Gitaly primary nodes are enabled in `/etc/gitlab/gitlab.rb` by setting @@ -1386,14 +1392,8 @@ The `per_repository` election strategy solves this problem by electing a primary repository. Combined with [configurable replication factors](#configure-replication-factor), you can horizontally scale storage capacity and distribute write load across Gitaly nodes. -Primary elections are run: - -- In GitLab 14.1 and later, lazily. This means that Praefect doesn't immediately elect - a new primary node if the current one is unhealthy. A new primary is elected if it is - necessary to serve a request while the current primary is unavailable. -- In GitLab 13.12 to GitLab 14.0 when: - - Praefect starts up. - - The cluster's consensus of a Gitaly node's health changes. +Primary elections are run lazily. Praefect doesn't immediately elect a new primary node if the current +one is unhealthy. A new primary is elected if a request must be served while the current primary is unavailable. A valid primary node candidate is a Gitaly node that: @@ -1422,9 +1422,9 @@ To migrate existing clusters: 1. Praefect nodes didn't historically keep database records of every repository stored on the cluster. When the `per_repository` election strategy is configured, Praefect expects to have database records of - each repository. A [background database migration](https://gitlab.com/gitlab-org/gitaly/-/merge_requests/2749) is - included in GitLab 13.6 and later to create any missing database records for repositories. Before migrating, - check Praefect's logs to verify that the database migration ran. + each repository. A [background database migration](https://gitlab.com/gitlab-org/gitaly/-/merge_requests/2749) + creates any missing database records for repositories. Before migrating, check Praefect's logs to verify + that the database migration ran. Check Praefect's logs for `repository importer finished` message. The `virtual_storages` field contains the names of virtual storages and whether they've had any missing database records created. -- cgit v1.2.3