From fb4a00465cbdd6fc39ffc55e6f6abcc8340669ed Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis <axilleas@axilleas.me> Date: Thu, 17 Jun 2021 15:43:17 +0200 Subject: [PATCH] Update administration pages with new admin area access info GitLab 14.0 includes an interface change that moves the UI element to access the Admin Area to a new location; from the top menu bar to within the Menu option on the top menu bar. This updates the administration documentation pages that describe accessing the Admin Area to reflect the new interface change. --- doc/administration/auditor_users.md | 17 ++-- .../background_verification.md | 53 +++++++----- .../checksum-differences-admin-projects.png | Bin 28817 -> 0 bytes .../geo/disaster_recovery/planned_failover.md | 81 ++++++++++-------- .../runbooks/planned_failover_multi_node.md | 66 ++++++++------ .../runbooks/planned_failover_single_node.md | 51 ++++++----- .../geo/replication/configuration.md | 26 +++--- .../geo/replication/disable_geo.md | 9 +- .../geo/replication/docker_registry.md | 9 +- .../geo/replication/object_storage.md | 9 +- .../geo/replication/remove_geo_site.md | 3 +- .../geo/replication/troubleshooting.md | 18 ++-- doc/administration/geo/replication/tuning.md | 28 +++--- doc/administration/housekeeping.md | 24 +++--- .../img/auditor_access_form.png | Bin 11910 -> 0 bytes doc/administration/maintenance_mode/index.md | 20 +++-- .../operations/extra_sidekiq_processes.md | 6 +- .../operations/fast_ssh_key_lookup.md | 10 ++- .../operations/img/sidekiq-cluster.png | Bin 22576 -> 0 bytes .../img/write_to_authorized_keys_setting.png | Bin 29192 -> 0 bytes doc/administration/polling.md | 39 +++++---- doc/administration/raketasks/check.md | 3 +- .../raketasks/project_import_export.md | 11 ++- doc/administration/raketasks/storage.md | 15 ++-- doc/install/azure/index.md | 8 +- doc/user/admin_area/geo_nodes.md | 14 ++- 26 files changed, 306 insertions(+), 214 deletions(-) delete mode 100644 doc/administration/geo/disaster_recovery/img/checksum-differences-admin-projects.png delete mode 100644 doc/administration/img/auditor_access_form.png delete mode 100644 doc/administration/operations/img/sidekiq-cluster.png delete mode 100644 doc/administration/operations/img/write_to_authorized_keys_setting.png diff --git a/doc/administration/auditor_users.md b/doc/administration/auditor_users.md index 96bfbd88ddf5c..5f31ed709f284 100644 --- a/doc/administration/auditor_users.md +++ b/doc/administration/auditor_users.md @@ -53,17 +53,16 @@ helpful: you can create an Auditor user and then share the credentials with those users to which you want to grant access. -## Adding an Auditor user +## Add an Auditor user -To create a new Auditor user: +To create an Auditor user: -1. Create a new user or edit an existing one by navigating to - **Admin Area > Users**. The option of the access level is located in - the 'Access' section. - -  - -1. Select **Save changes** or **Create user** for the changes to take effect. +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Overview > Users**. +1. Create a new user or edit an existing one, and in the **Access** section + select Auditor. +1. Select **Create user** or **Save changes** if you created a new user or + edited an existing one respectively. To revoke Auditor permissions from a user, make them a regular user by following the previous steps. diff --git a/doc/administration/geo/disaster_recovery/background_verification.md b/doc/administration/geo/disaster_recovery/background_verification.md index c09daeec824c8..f03cd64c14e82 100644 --- a/doc/administration/geo/disaster_recovery/background_verification.md +++ b/doc/administration/geo/disaster_recovery/background_verification.md @@ -58,19 +58,25 @@ Feature.enable('geo_repository_verification') ## Repository verification -Go to the **Admin Area > Geo** dashboard on the **primary** node and expand -the **Verification information** section for that node to view automatic checksumming -status for each data type. Successes are shown in green, pending work -in gray, and failures in red. +On the **primary** node: - +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Expand **Verification information** tab for that node to view automatic checksumming + status for repositories and wikis. Successes are shown in green, pending work + in gray, and failures in red. -Go to the **Admin Area > Geo** dashboard on the **secondary** node and expand -the **Verification information** section for that node to view automatic verification -status for each data type. As with checksumming, successes are shown in -green, pending work in gray, and failures in red. +  - +On the **secondary** node: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Expand **Verification information** tab for that node to view automatic checksumming + status for repositories and wikis. Successes are shown in green, pending work + in gray, and failures in red. + +  ## Using checksums to compare Geo nodes @@ -92,11 +98,14 @@ data. The default and recommended re-verification interval is 7 days, though an interval as short as 1 day can be set. Shorter intervals reduce risk but increase load and vice versa. -Go to the **Admin Area > Geo** dashboard on the **primary** node, and -click the **Edit** button for the **primary** node to customize the minimum -re-verification interval: +On the **primary** node: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Select **Edit** for the **primary** node to customize the minimum + re-verification interval: - +  The automatic background re-verification is enabled by default, but you can disable if you need. Run the following commands in a Rails console on the @@ -141,17 +150,19 @@ sudo gitlab-rake geo:verification:wiki:reset If the **primary** and **secondary** nodes have a checksum verification mismatch, the cause may not be apparent. To find the cause of a checksum mismatch: -1. Go to the **Admin Area > Overview > Projects** dashboard on the **primary** node, find the - project that you want to check the checksum differences and click on the - **Edit** button: -  +1. On the **primary** node: + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Overview > Projects**. + 1. Find the project that you want to check the checksum differences and + select its name. + 1. On the project administration page get the **Gitaly storage name**, + and **Gitaly relative path**. -1. On the project administration page get the **Gitaly storage name**, and **Gitaly relative path**: -  +  1. Go to the project's repository directory on both **primary** and **secondary** nodes (the path is usually `/var/opt/gitlab/git-data/repositories`). Note that if `git_data_dirs` - is customized, check the directory layout on your server to be sure. + is customized, check the directory layout on your server to be sure: ```shell cd /var/opt/gitlab/git-data/repositories diff --git a/doc/administration/geo/disaster_recovery/img/checksum-differences-admin-projects.png b/doc/administration/geo/disaster_recovery/img/checksum-differences-admin-projects.png deleted file mode 100644 index 85759d903a43cffa83b48181ec5b02b0a2ecd357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28817 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 diff --git a/doc/administration/geo/disaster_recovery/planned_failover.md b/doc/administration/geo/disaster_recovery/planned_failover.md index 633d787473e67..5c15523ac78e5 100644 --- a/doc/administration/geo/disaster_recovery/planned_failover.md +++ b/doc/administration/geo/disaster_recovery/planned_failover.md @@ -109,13 +109,16 @@ The maintenance window won't end until Geo replication and verification is completely finished. To keep the window as short as possible, you should ensure these processes are close to 100% as possible during active use. -Go to the **Admin Area > Geo** dashboard on the **secondary** node to -review status. Replicated objects (shown in green) should be close to 100%, -and there should be no failures (shown in red). If a large proportion of -objects aren't yet replicated (shown in gray), consider giving the node more -time to complete +On the **secondary** node: - +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. + Replicated objects (shown in green) should be close to 100%, + and there should be no failures (shown in red). If a large proportion of + objects aren't yet replicated (shown in gray), consider giving the node more + time to complete + +  If any objects are failing to replicate, this should be investigated before scheduling the maintenance window. Following a planned failover, anything that @@ -134,23 +137,26 @@ This [content was moved to another location](background_verification.md). ### Notify users of scheduled maintenance -On the **primary** node, navigate to **Admin Area > Messages**, add a broadcast -message. You can check under **Admin Area > Geo** to estimate how long it -takes to finish syncing. An example message would be: +On the **primary** node: -> A scheduled maintenance takes place at XX:XX UTC. We expect it to take -> less than 1 hour. +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Messages**. +1. Add a message notifying users on the maintenance window. + You can check under **Geo > Nodes** to estimate how long it + takes to finish syncing. +1. Select **Add broadcast message**. ## Prevent updates to the **primary** node To ensure that all data is replicated to a secondary site, updates (write requests) need to -be disabled on the primary site: - -1. Enable [maintenance mode](../../maintenance_mode/index.md). - -1. Disable non-Geo periodic background jobs on the **primary** node by navigating - to **Admin Area > Monitoring > Background Jobs > Cron**, pressing `Disable All`, - and then pressing `Enable` for the `geo_sidekiq_cron_config_worker` cron job. +be disabled on the **primary** site: + +1. Enable [maintenance mode](../../maintenance_mode/index.md) on the **primary** node. +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Monitoring > Background Jobs**. +1. On the Sidekiq dashboard, select **Cron**. +1. Select `Disable All` to disable non-Geo periodic background jobs. +1. Select `Enable` for the `geo_sidekiq_cron_config_worker` cron job. This job re-enables several other cron jobs that are essential for planned failover to complete successfully. @@ -158,23 +164,28 @@ be disabled on the primary site: 1. If you are manually replicating any data not managed by Geo, trigger the final replication process now. -1. On the **primary** node, navigate to **Admin Area > Monitoring > Background Jobs > Queues** - and wait for all queues except those with `geo` in the name to drop to 0. - These queues contain work that has been submitted by your users; failing over - before it is completed, causes the work to be lost. -1. On the **primary** node, navigate to **Admin Area > Geo** and wait for the - following conditions to be true of the **secondary** node you are failing over to: - - - All replication meters to each 100% replicated, 0% failures. - - All verification meters reach 100% verified, 0% failures. - - Database replication lag is 0ms. - - The Geo log cursor is up to date (0 events behind). - -1. On the **secondary** node, navigate to **Admin Area > Monitoring > Background Jobs > Queues** - and wait for all the `geo` queues to drop to 0 queued and 0 running jobs. -1. On the **secondary** node, use [these instructions](../../raketasks/check.md) - to verify the integrity of CI artifacts, LFS objects, and uploads in file - storage. +1. On the **primary** node: + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Monitoring > Background Jobs**. + 1. On the Sidekiq dashboard, select **Queues**, and wait for all queues except + those with `geo` in the name to drop to 0. + These queues contain work that has been submitted by your users; failing over + before it is completed, causes the work to be lost. + 1. On the left sidebar, select **Geo > Nodes** and wait for the + following conditions to be true of the **secondary** node you are failing over to: + + - All replication meters reach 100% replicated, 0% failures. + - All verification meters reach 100% verified, 0% failures. + - Database replication lag is 0ms. + - The Geo log cursor is up to date (0 events behind). + +1. On the **secondary** node: + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Monitoring > Background Jobs**. + 1. On the Sidekiq dashboard, select **Queues**, and wait for all the `geo` + queues to drop to 0 queued and 0 running jobs. + 1. [Run an integrity check](../../raketasks/check.md) to verify the integrity + of CI artifacts, LFS objects, and uploads in file storage. At this point, your **secondary** node contains an up-to-date copy of everything the **primary** node has, meaning nothing was lost when you fail over. diff --git a/doc/administration/geo/disaster_recovery/runbooks/planned_failover_multi_node.md b/doc/administration/geo/disaster_recovery/runbooks/planned_failover_multi_node.md index e19aa671b899e..4cfe781c7a483 100644 --- a/doc/administration/geo/disaster_recovery/runbooks/planned_failover_multi_node.md +++ b/doc/administration/geo/disaster_recovery/runbooks/planned_failover_multi_node.md @@ -63,13 +63,16 @@ Before following any of those steps, make sure you have `root` access to the **secondary** to promote it, since there isn't provided an automated way to promote a Geo replica and perform a failover. -On the **secondary** node, navigate to the **Admin Area > Geo** dashboard to -review its status. Replicated objects (shown in green) should be close to 100%, -and there should be no failures (shown in red). If a large proportion of -objects aren't yet replicated (shown in gray), consider giving the node more -time to complete. +On the **secondary** node: - +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes** to see its status. + Replicated objects (shown in green) should be close to 100%, + and there should be no failures (shown in red). If a large proportion of + objects aren't yet replicated (shown in gray), consider giving the node more + time to complete. + +  If any objects are failing to replicate, this should be investigated before scheduling the maintenance window. After a planned failover, anything that @@ -126,11 +129,14 @@ follow these steps to avoid unnecessary data loss: existing Git repository with an SSH remote URL. The server should refuse connection. - 1. On the **primary** node, disable non-Geo periodic background jobs by navigating - to **Admin Area > Monitoring > Background Jobs > Cron**, clicking `Disable All`, - and then clicking `Enable` for the `geo_sidekiq_cron_config_worker` cron job. - This job will re-enable several other cron jobs that are essential for planned - failover to complete successfully. + 1. On the **primary** node: + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Monitoring > Background Jobs**. + 1. On the Sidekiq dhasboard, select **Cron**. + 1. Select `Disable All` to disable any non-Geo periodic background jobs. + 1. Select `Enable` for the `geo_sidekiq_cron_config_worker` cron job. + This job will re-enable several other cron jobs that are essential for planned + failover to complete successfully. 1. Finish replicating and verifying all data: @@ -141,22 +147,28 @@ follow these steps to avoid unnecessary data loss: 1. If you are manually replicating any [data not managed by Geo](../../replication/datatypes.md#limitations-on-replicationverification), trigger the final replication process now. - 1. On the **primary** node, navigate to **Admin Area > Monitoring > Background Jobs > Queues** - and wait for all queues except those with `geo` in the name to drop to 0. - These queues contain work that has been submitted by your users; failing over - before it is completed will cause the work to be lost. - 1. On the **primary** node, navigate to **Admin Area > Geo** and wait for the - following conditions to be true of the **secondary** node you are failing over to: - - All replication meters to each 100% replicated, 0% failures. - - All verification meters reach 100% verified, 0% failures. - - Database replication lag is 0ms. - - The Geo log cursor is up to date (0 events behind). - - 1. On the **secondary** node, navigate to **Admin Area > Monitoring > Background Jobs > Queues** - and wait for all the `geo` queues to drop to 0 queued and 0 running jobs. - 1. On the **secondary** node, use [these instructions](../../../raketasks/check.md) - to verify the integrity of CI artifacts, LFS objects, and uploads in file - storage. + 1. On the **primary** node: + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Monitoring > Background Jobs**. + 1. On the Sidekiq dashboard, select **Queues**, and wait for all queues except + those with `geo` in the name to drop to 0. + These queues contain work that has been submitted by your users; failing over + before it is completed, causes the work to be lost. + 1. On the left sidebar, select **Geo > Nodes** and wait for the + following conditions to be true of the **secondary** node you are failing over to: + + - All replication meters reach 100% replicated, 0% failures. + - All verification meters reach 100% verified, 0% failures. + - Database replication lag is 0ms. + - The Geo log cursor is up to date (0 events behind). + + 1. On the **secondary** node: + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Monitoring > Background Jobs**. + 1. On the Sidekiq dashboard, select **Queues**, and wait for all the `geo` + queues to drop to 0 queued and 0 running jobs. + 1. [Run an integrity check](../../../raketasks/check.md) to verify the integrity + of CI artifacts, LFS objects, and uploads in file storage. At this point, your **secondary** node will contain an up-to-date copy of everything the **primary** node has, meaning nothing will be lost when you fail over. diff --git a/doc/administration/geo/disaster_recovery/runbooks/planned_failover_single_node.md b/doc/administration/geo/disaster_recovery/runbooks/planned_failover_single_node.md index 9b5c3f00040ba..6caeddad51aab 100644 --- a/doc/administration/geo/disaster_recovery/runbooks/planned_failover_single_node.md +++ b/doc/administration/geo/disaster_recovery/runbooks/planned_failover_single_node.md @@ -114,11 +114,14 @@ follow these steps to avoid unnecessary data loss: existing Git repository with an SSH remote URL. The server should refuse connection. - 1. On the **primary** node, disable non-Geo periodic background jobs by navigating - to **Admin Area > Monitoring > Background Jobs > Cron**, clicking `Disable All`, - and then clicking `Enable` for the `geo_sidekiq_cron_config_worker` cron job. - This job will re-enable several other cron jobs that are essential for planned - failover to complete successfully. + 1. On the **primary** node: + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Monitoring > Background Jobs**. + 1. On the Sidekiq dhasboard, select **Cron**. + 1. Select `Disable All` to disable any non-Geo periodic background jobs. + 1. Select `Enable` for the `geo_sidekiq_cron_config_worker` cron job. + This job will re-enable several other cron jobs that are essential for planned + failover to complete successfully. 1. Finish replicating and verifying all data: @@ -129,22 +132,28 @@ follow these steps to avoid unnecessary data loss: 1. If you are manually replicating any [data not managed by Geo](../../replication/datatypes.md#limitations-on-replicationverification), trigger the final replication process now. - 1. On the **primary** node, navigate to **Admin Area > Monitoring > Background Jobs > Queues** - and wait for all queues except those with `geo` in the name to drop to 0. - These queues contain work that has been submitted by your users; failing over - before it is completed will cause the work to be lost. - 1. On the **primary** node, navigate to **Admin Area > Geo** and wait for the - following conditions to be true of the **secondary** node you are failing over to: - - All replication meters to each 100% replicated, 0% failures. - - All verification meters reach 100% verified, 0% failures. - - Database replication lag is 0ms. - - The Geo log cursor is up to date (0 events behind). - - 1. On the **secondary** node, navigate to **Admin Area > Monitoring > Background Jobs > Queues** - and wait for all the `geo` queues to drop to 0 queued and 0 running jobs. - 1. On the **secondary** node, use [these instructions](../../../raketasks/check.md) - to verify the integrity of CI artifacts, LFS objects, and uploads in file - storage. + 1. On the **primary** node: + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Monitoring > Background Jobs**. + 1. On the Sidekiq dashboard, select **Queues**, and wait for all queues except + those with `geo` in the name to drop to 0. + These queues contain work that has been submitted by your users; failing over + before it is completed, causes the work to be lost. + 1. On the left sidebar, select **Geo > Nodes** and wait for the + following conditions to be true of the **secondary** node you are failing over to: + + - All replication meters reach 100% replicated, 0% failures. + - All verification meters reach 100% verified, 0% failures. + - Database replication lag is 0ms. + - The Geo log cursor is up to date (0 events behind). + + 1. On the **secondary** node: + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Monitoring > Background Jobs**. + 1. On the Sidekiq dashboard, select **Queues**, and wait for all the `geo` + queues to drop to 0 queued and 0 running jobs. + 1. [Run an integrity check](../../../raketasks/check.md) to verify the integrity + of CI artifacts, LFS objects, and uploads in file storage. At this point, your **secondary** node will contain an up-to-date copy of everything the **primary** node has, meaning nothing will be lost when you fail over. diff --git a/doc/administration/geo/replication/configuration.md b/doc/administration/geo/replication/configuration.md index 8a1ea0ad3f290..926c4c565aa65 100644 --- a/doc/administration/geo/replication/configuration.md +++ b/doc/administration/geo/replication/configuration.md @@ -196,9 +196,9 @@ keys must be manually replicated to the **secondary** node. gitlab-ctl reconfigure ``` -1. Visit the **primary** node's **Admin Area > Geo** - (`/admin/geo/nodes`) in your browser. -1. Click the **New node** button. +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Select **New node**.  1. Fill in **Name** with the `gitlab_rails['geo_node_name']` in `/etc/gitlab/gitlab.rb`. These values must always match *exactly*, character @@ -209,7 +209,7 @@ keys must be manually replicated to the **secondary** node. 1. Optionally, choose which groups or storage shards should be replicated by the **secondary** node. Leave blank to replicate all. Read more in [selective synchronization](#selective-synchronization). -1. Click the **Add node** button to add the **secondary** node. +1. Select **Add node** to add the **secondary** node. 1. SSH into your GitLab **secondary** server and restart the services: ```shell @@ -252,18 +252,22 @@ on the **secondary** node. Geo synchronizes repositories over HTTP/HTTPS, and therefore requires this clone method to be enabled. This is enabled by default, but if converting an existing node to Geo it should be checked: -1. Go to **Admin Area > Settings** (`/admin/application_settings/general`) on the **primary** node. -1. Expand "Visibility and access controls". +On the **primary** node: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Settings > General**. +1. Expand **Visibility and access controls**. 1. Ensure "Enabled Git access protocols" is set to either "Both SSH and HTTP(S)" or "Only HTTP(S)". ### Step 6. Verify proper functioning of the **secondary** node -Your **secondary** node is now configured! +You can sign in to the **secondary** node with the same credentials you used with +the **primary** node. After you sign in: -You can sign in to the _secondary_ node with the same credentials you used with -the _primary_ node. Visit the _secondary_ node's **Admin Area > Geo** -(`/admin/geo/nodes`) in your browser to determine if it's correctly identified -as a _secondary_ Geo node, and if Geo is enabled. +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Verify that it's correctly identified as a **secondary** Geo node, and that + Geo is enabled. The initial replication, or 'backfill', is probably still in progress. You can monitor the synchronization process on each Geo node from the **primary** diff --git a/doc/administration/geo/replication/disable_geo.md b/doc/administration/geo/replication/disable_geo.md index c71cf80d0c1db..ba01c55a157f9 100644 --- a/doc/administration/geo/replication/disable_geo.md +++ b/doc/administration/geo/replication/disable_geo.md @@ -33,9 +33,12 @@ to do that. ## Remove the primary site from the UI -1. Go to **Admin Area > Geo** (`/admin/geo/nodes`). -1. Click the **Remove** button for the **primary** node. -1. Confirm by clicking **Remove** when the prompt appears. +To remove the **primary** site: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Select **Remove** for the **primary** node. +1. Confirm by selecting **Remove** when the prompt appears. ## Remove secondary replication slots diff --git a/doc/administration/geo/replication/docker_registry.md b/doc/administration/geo/replication/docker_registry.md index ad890a0788397..8300776721581 100644 --- a/doc/administration/geo/replication/docker_registry.md +++ b/doc/administration/geo/replication/docker_registry.md @@ -127,7 +127,10 @@ For each application and Sidekiq node on the **secondary** site: ### Verify replication -To verify Container Registry replication is working, go to **Admin Area > Geo** -(`/admin/geo/nodes`) on the **secondary** site. -The initial replication, or "backfill", is probably still in progress. +To verify Container Registry replication is working, on the **secondary** site: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. + The initial replication, or "backfill", is probably still in progress. + You can monitor the synchronization process on each Geo site from the **primary** site's **Geo Nodes** dashboard in your browser. diff --git a/doc/administration/geo/replication/object_storage.md b/doc/administration/geo/replication/object_storage.md index 7dd831092a3b8..90a41ed3e1c81 100644 --- a/doc/administration/geo/replication/object_storage.md +++ b/doc/administration/geo/replication/object_storage.md @@ -21,7 +21,7 @@ To have: [Read more about using object storage with GitLab](../../object_storage.md). -## Enabling GitLab managed object storage replication +## Enabling GitLab-managed object storage replication > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/10586) in GitLab 12.4. @@ -31,10 +31,11 @@ This is a [**beta** feature](https://about.gitlab.com/handbook/product/#beta) an **Secondary** sites can replicate files stored on the **primary** site regardless of whether they are stored on the local file system or in object storage. -To enable GitLab replication, you must: +To enable GitLab replication: -1. Go to **Admin Area > Geo**. -1. Press **Edit** on the **secondary** site. +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Select **Edit** on the **secondary** site. 1. In the **Synchronization Settings** section, find the **Allow this secondary node to replicate content on Object Storage** checkbox to enable it. diff --git a/doc/administration/geo/replication/remove_geo_site.md b/doc/administration/geo/replication/remove_geo_site.md index a42a4c4eb4767..274eb28dbc9d1 100644 --- a/doc/administration/geo/replication/remove_geo_site.md +++ b/doc/administration/geo/replication/remove_geo_site.md @@ -9,7 +9,8 @@ type: howto **Secondary** sites can be removed from the Geo cluster using the Geo administration page of the **primary** site. To remove a **secondary** site: -1. Go to **Admin Area > Geo** (`/admin/geo/nodes`). +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. 1. Select the **Remove** button for the **secondary** site you want to remove. 1. Confirm by selecting **Remove** when the prompt appears. diff --git a/doc/administration/geo/replication/troubleshooting.md b/doc/administration/geo/replication/troubleshooting.md index 7c1f7cf7a8dc3..c00f523957cea 100644 --- a/doc/administration/geo/replication/troubleshooting.md +++ b/doc/administration/geo/replication/troubleshooting.md @@ -25,8 +25,12 @@ Before attempting more advanced troubleshooting: ### Check the health of the **secondary** node -Visit the **primary** node's **Admin Area > Geo** (`/admin/geo/nodes`) in -your browser. We perform the following health checks on each **secondary** node +On the **primary** node: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. + +We perform the following health checks on each **secondary** node to help identify if something is wrong: - Is the node running? @@ -129,7 +133,8 @@ Geo finds the current machine's Geo node name in `/etc/gitlab/gitlab.rb` by: - Using the `gitlab_rails['geo_node_name']` setting. - If that is not defined, using the `external_url` setting. -This name is used to look up the node with the same **Name** in **Admin Area > Geo**. +This name is used to look up the node with the same **Name** in the **Geo Nodes** +dashboard. To check if the current machine has a node name that matches a node in the database, run the check task: @@ -739,8 +744,11 @@ If you are able to log in to the **primary** node, but you receive this error when attempting to log into a **secondary**, you should check that the Geo node's URL matches its external URL. -1. On the primary, visit **Admin Area > Geo**. -1. Find the affected **secondary** and click **Edit**. +On the **primary** node: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Find the affected **secondary** site and select **Edit**. 1. Ensure the **URL** field matches the value found in `/etc/gitlab/gitlab.rb` in `external_url "https://gitlab.example.com"` on the frontend server(s) of the **secondary** node. diff --git a/doc/administration/geo/replication/tuning.md b/doc/administration/geo/replication/tuning.md index a4aad3dec68a2..9807f3e64448c 100644 --- a/doc/administration/geo/replication/tuning.md +++ b/doc/administration/geo/replication/tuning.md @@ -7,20 +7,28 @@ type: howto # Tuning Geo **(PREMIUM SELF)** -## Changing the sync/verification capacity values +You can limit the number of concurrent operations the nodes can run +in the background. -In **Admin Area > Geo** (`/admin/geo/nodes`), -there are several variables that can be tuned to improve performance of Geo: +## Changing the sync/verification concurrency values -- Repository sync capacity -- File sync capacity -- Container repositories sync capacity -- Verification capacity +On the **primary** site: -Increasing capacity values will increase the number of jobs that are scheduled. +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Select **Edit** of the secondary node you want to tune. +1. Under **Tuning settings**, there are several variables that can be tuned to + improve the performance of Geo: + + - Repository synchronization concurrency limit + - File synchronization concurrency limit + - Container repositories synchronization concurrency limit + - Verification concurrency limit + +Increasing the concurrency values will increase the number of jobs that are scheduled. However, this may not lead to more downloads in parallel unless the number of -available Sidekiq threads is also increased. For example, if repository sync -capacity is increased from 25 to 50, you may also want to increase the number +available Sidekiq threads is also increased. For example, if repository synchronization +concurrency is increased from 25 to 50, you may also want to increase the number of Sidekiq threads from 25 to 50. See the [Sidekiq concurrency documentation](../../operations/extra_sidekiq_processes.md#number-of-threads) for more details. diff --git a/doc/administration/housekeeping.md b/doc/administration/housekeeping.md index 9668b7277c2c2..a89e8a2bad5e3 100644 --- a/doc/administration/housekeeping.md +++ b/doc/administration/housekeeping.md @@ -9,25 +9,27 @@ info: To determine the technical writer assigned to the Stage/Group associated w GitLab supports and automates housekeeping tasks within your current repository, such as compressing file revisions and removing unreachable objects. -## Automatic housekeeping +## Configure housekeeping GitLab automatically runs `git gc` and `git repack` on repositories -after Git pushes. You can change how often this happens or turn it off in -**Admin Area > Settings > Repository** (`/admin/application_settings/repository`). +after Git pushes. -## Manual housekeeping +You can change how often this happens or turn it off: -The housekeeping function runs `repack` or `gc` depending on the -**Housekeeping** settings configured in **Admin Area > Settings > Repository**. +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Settings > Repository**. +1. Expand **Repository maintenance**. +1. Configure the Housekeeping options. +1. Select **Save changes**. -For example in the following scenario a `git repack -d` will be executed: +For example, in the following scenario a `git repack -d` will be executed: - Project: pushes since GC counter (`pushes_since_gc`) = `10` - Git GC period = `200` - Full repack period = `50` When the `pushes_since_gc` value is 50 a `repack -A -d --pack-kept-objects` runs, similarly when -the `pushes_since_gc` value is 200 a `git gc` runs. +the `pushes_since_gc` value is 200 a `git gc` runs: - `git gc` ([man page](https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-gc.html)) runs a number of housekeeping tasks, such as compressing file revisions (to reduce disk space and increase performance) @@ -38,12 +40,6 @@ the `pushes_since_gc` value is 200 a `git gc` runs. Housekeeping also [removes unreferenced LFS files](../raketasks/cleanup.md#remove-unreferenced-lfs-files) from your project on the same schedule as the `git gc` operation, freeing up storage space for your project. -To manually start the housekeeping process: - -1. In your project, go to **Settings > General**. -1. Expand the **Advanced** section. -1. Select **Run housekeeping**. - ## How housekeeping handles pool repositories Housekeeping for pool repositories is handled differently from standard repositories. diff --git a/doc/administration/img/auditor_access_form.png b/doc/administration/img/auditor_access_form.png deleted file mode 100644 index c179a7d3b0a2b9cea41b9df94ee2dd47e722884b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11910 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 A*Z=?k diff --git a/doc/administration/maintenance_mode/index.md b/doc/administration/maintenance_mode/index.md index c73a49287db34..2f5d366f9272d 100644 --- a/doc/administration/maintenance_mode/index.md +++ b/doc/administration/maintenance_mode/index.md @@ -21,10 +21,11 @@ Maintenance Mode allows most external actions that do not change internal state. There are three ways to enable Maintenance Mode as an administrator: - **Web UI**: - 1. Go to **Admin Area > Settings > General**, expand **Maintenance Mode**, and toggle **Enable Maintenance Mode**. + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Settings > General**. + 1. Expand **Maintenance Mode**, and toggle **Enable Maintenance Mode**. You can optionally add a message for the banner as well. - - 1. Click **Save** for the changes to take effect. + 1. Select **Save changes**. - **API**: @@ -44,9 +45,11 @@ There are three ways to enable Maintenance Mode as an administrator: There are three ways to disable Maintenance Mode: - **Web UI**: - 1. Go to **Admin Area > Settings > General**, expand **Maintenance Mode**, and toggle **Enable Maintenance Mode**. - - 1. Click **Save** for the changes to take effect. + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Settings > General**. + 1. Expand **Maintenance Mode**, and toggle **Enable Maintenance Mode**. + You can optionally add a message for the banner as well. + 1. Select **Save changes**. - **API**: @@ -166,7 +169,10 @@ Background jobs (cron jobs, Sidekiq) continue running as is, because background [During a planned Geo failover](../geo/disaster_recovery/planned_failover.md#prevent-updates-to-the-primary-node), it is recommended that you disable all cron jobs except for those related to Geo. -You can monitor queues and disable jobs in **Admin Area > Monitoring > Background Jobs**. +To monitor queues and disable jobs: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Monitoring > Background Jobs**. ### Incident management diff --git a/doc/administration/operations/extra_sidekiq_processes.md b/doc/administration/operations/extra_sidekiq_processes.md index ed89d11da75e7..b910a789d2919 100644 --- a/doc/administration/operations/extra_sidekiq_processes.md +++ b/doc/administration/operations/extra_sidekiq_processes.md @@ -87,10 +87,10 @@ To start multiple processes: sudo gitlab-ctl reconfigure ``` -After the extra Sidekiq processes are added, navigate to -**Admin Area > Monitoring > Background Jobs** (`/admin/background_jobs`) in GitLab. +To view the Sidekiq processes in GitLab: - +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Monitoring > Background Jobs**. ## Negate settings diff --git a/doc/administration/operations/fast_ssh_key_lookup.md b/doc/administration/operations/fast_ssh_key_lookup.md index 8acc40da4ab33..bb0756cf94823 100644 --- a/doc/administration/operations/fast_ssh_key_lookup.md +++ b/doc/administration/operations/fast_ssh_key_lookup.md @@ -104,11 +104,13 @@ In the case of lookup failures (which are common), the `authorized_keys` file is still scanned. So Git SSH performance would still be slow for many users as long as a large file exists. -You can disable any more writes to the `authorized_keys` file by unchecking -`Write to "authorized_keys" file` in the **Admin Area > Settings > Network > Performance optimization** of your GitLab -installation. +To disable any more writes to the `authorized_keys` file: - +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Settings > Network**. +1. Expand **Performance optimization**. +1. Clear the **Write to "authorized_keys" file** checkbox. +1. Select **Save changes**. Again, confirm that SSH is working by removing your user's SSH key in the UI, adding a new one, and attempting to pull a repository. diff --git a/doc/administration/operations/img/sidekiq-cluster.png b/doc/administration/operations/img/sidekiq-cluster.png deleted file mode 100644 index 3899385eb8f7d8cfb354d43599ec01342eae50d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22576 zcmXte1z6l%6K*LKU!XV(MGB?3l*PTc6nA$PcXt-2SaEmP;%<w(TXA=Hy?p<@_sNr! zWRjUP^PV{~lbnRg$%p}vfyf^|d;my@3oCs101No=0fr6{_MK8MR|$SU5IBmcIV#$i zIJ)TD8-Fmhwy`p%cQCX!Hnw&E+c=)VcJRG(eUOt@5_x-jySjYeuC6XGS5{WuTdhW| zhlhuoo16d9-kYn7i_5EvtMl{A_XjU8FD|bB+s`jAF8`xkykDH3pT9qHc6oMretvVa z^DgV+^n7P`_v-5W?DV|O6MS}gd46_vbKC9i>Uwp4<y^dcaeCTwa}(g_=iz9dIC67x zc5-=nb~_qv;Z+-^9dt9Ea5)&I@7=hNX&>Ex`|tL~CS(5O=)~NmV(;eWcCX&m-s9-@ zX5;<*uzk7M{`O+#_V&<M@Av-gZfNJ(`R#4F6Zq`<w0`^c_V%paQ~&06-O<q{dGc-{ z-RjTCgSn;W-1)6%)%wk9lU35>_~C7fpJC6|ji!oGt-D&NzQ_GVOPHo^!`z97mDSD7 zQn<FCqpfw{&F+3*vZG7LN|sIM#l4S*tGbeM+2ZY5Tf*2MQx{0d(Bt#V%T7?^?)iM( z)6@L&?T&?-+QV9@YiM0mWU$dd{ZOh$jI&K(#dM^fYwW<OxowJ*Ypk<<j;@~dcnKuc zT;;GM%pr3zY2p|fV&JK%I{0uJoS2l^X}J9K0*)Pic^b%?yX!c-u{F23>JG7Ri?(nq z)-;GL7(L3eHE%w=eVk8gA2JLzhGYcV1-RJ#X<zF-zS;Tfy7%&YyFZj@=8+K>>SqY) zh;*#*wrTNF_3{lpdYE2c@zhgQjo&}F3TbcfwpLT|G-!|0a42p)c^)`{hM7mkWkm(L zxgRz8yuF?JCUvIu$KG7_yM(7!M|!T6IxYMSfTRrtTN+HISWb1;-96swhjd>bO>I2Q znCS$h^z6EHxz|G668_FzzP%+wAkE9SBZCuH2U`c1-EVJqeRTyot^UX31*PW?0lg89 z3;(QRpzDJj=~eApcgMx8^Cc+_p`O`$JCUvX+YXI7%~f6C$<cvn_o$SL+mp=2lQ~G6 z-uiLdz*v0i;95^+^54E*PjFmwaZLP3d(hI%$fU7eqt)rw{N8+jS#0$FQPtw|ZvD!b zTkgcu#mUt3-ur|h{U9MMsN}kIoF)h+nkVRIsqu=oab11LW9OEwA(nvR&u}{KVon>y zbUCAO!lCw=Z<+vb+pnvfP}rO>sq%Vbjt&hpXtr<H`$Xji1Q9lJ?Uu9f5k3ae=-G$b zX5+j6pezi+ee^mTwJtN6?~16^m?Q{YS#&#lSuKozeQZDTy1H%JD-hu1EKq=8th<XK zGQpE&eVkz;`<(It1F4fV+7aF_L10Y>p0t=`9|;ajnevZ_D7QaM^`bro4=w7Bs2GMq zH$z$@^k3R_3<Eh_5+s(?1%ZEPlqHD(W`$Y&p3{`?mvsfEL0SfngU$ubDsILqAx|#6 zNG^{5Wj3|C7DXDW2JkD%$0Ep>xSXh%u+VSUdaA$x6BU(Mt{+!=!(*4yJPRhoDy=b_ z$!m<(JA-^Y`%oycELx!HjBgp8Y+s<YFZw4A3a;rdD858Ix_(5#gBfTjFxd(qR&#|y zT%*V!*k?V{VpklSRJSdm4FXnafuY<3cXC89C_I!E8ifsZ^Cd>cNcqa(Ga_Ruz~>|) zJ6$S_99?Xwv8MR0FxwT})wRskZ{U8D3QHQLr_+63e{^cx5*t~H2}S?Msr*=uU6Tl6 zIT|$eftq+jTAkh}5?6N@w><bUdXTGI@#jPAb497@0mLx*0A31O2}+6a!K~3?-lv~C zR8GC6t`N5ZiMtIE-i#It9tEglUsI#d>MxcrbqNa?WG*0eQA	$o2q3l|stS>=-Ba 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 diff --git a/doc/administration/operations/img/write_to_authorized_keys_setting.png b/doc/administration/operations/img/write_to_authorized_keys_setting.png deleted file mode 100644 index f6227a6057b0e4dd314912df68323b8d8288b771..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29192 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 Qnf{GPiOGvr2^$9e4?6EPO8@`> diff --git a/doc/administration/polling.md b/doc/administration/polling.md index f6732b8edc6cb..d3f558eeaaab8 100644 --- a/doc/administration/polling.md +++ b/doc/administration/polling.md @@ -9,23 +9,24 @@ info: To determine the technical writer assigned to the Stage/Group associated w The GitLab UI polls for updates for different resources (issue notes, issue titles, pipeline statuses, etc.) on a schedule appropriate to the resource. -In **[Admin Area](../user/admin_area/index.md) > Settings > Preferences > Real-time features**, -you can configure "Polling -interval multiplier". This multiplier is applied to all resources at once, -and decimal values are supported. For the sake of the examples below, we will -say that issue notes poll every 2 seconds, and issue titles poll every 5 -seconds; these are _not_ the actual values. +To configure the polling interval multiplier: -- 1 is the default, and recommended for most installations. (Issue notes poll - every 2 seconds, and issue titles poll every 5 seconds.) -- 0 disables UI polling completely. (On the next poll, clients stop - polling for updates.) -- A value greater than 1 slows polling down. If you see issues with - database load from lots of clients polling for updates, increasing the - multiplier from 1 can be a good compromise, rather than disabling polling - completely. (For example: If this is set to 2, then issue notes poll every 4 - seconds, and issue titles poll every 10 seconds.) -- A value between 0 and 1 makes the UI poll more frequently (so updates - show in other sessions faster), but is **not recommended**. 1 should be - fast enough. (For example, if this is set to 0.5, then issue notes poll every - 1 second, and issue titles poll every 2.5 seconds.) +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Settings > Preferences**. +1. Expand **Real-time features**. +1. Set a value for the polling interval multiplier. This multiplier is applied + to all resources at once, and decimal values are supported: + + - `1.0` is the default, and recommended for most installations. + - `0` disables UI polling completely. On the next poll, clients stop + polling for updates. + - A value greater than `1` slows polling down. If you see issues with + database load from lots of clients polling for updates, increasing the + multiplier from 1 can be a good compromise, rather than disabling polling + completely. For example, if you set the value to `2`, all polling intervals + are multiplied by 2, which means that polling happens half as frequently. + - A value between `0` and `1` makes the UI poll more frequently (so updates + show in other sessions faster), but is **not recommended**. `1` should be + fast enough. + +1. Select **Save changes**. diff --git a/doc/administration/raketasks/check.md b/doc/administration/raketasks/check.md index 7f344a00f729b..f7c91aa6b4715 100644 --- a/doc/administration/raketasks/check.md +++ b/doc/administration/raketasks/check.md @@ -207,8 +207,7 @@ above. ### Dangling commits `gitlab:git:fsck` can find dangling commits. To fix them, try -[manually triggering housekeeping](../housekeeping.md#manual-housekeeping) -for the affected project(s). +[enabling housekeeping](../housekeeping.md). If the issue persists, try triggering `gc` via the [Rails Console](../operations/rails_console.md#starting-a-rails-console-session): diff --git a/doc/administration/raketasks/project_import_export.md b/doc/administration/raketasks/project_import_export.md index cd6ffc957b133..80321d75d669d 100644 --- a/doc/administration/raketasks/project_import_export.md +++ b/doc/administration/raketasks/project_import_export.md @@ -50,8 +50,13 @@ Note the following: - Importing is only possible if the version of the import and export GitLab instances are compatible as described in the [Version history](../../user/project/settings/import_export.md#version-history). -- The project import option must be enabled in - application settings (`/admin/application_settings/general`) under **Import sources**, which is available - under **Admin Area > Settings > Visibility and access controls**. +- The project import option must be enabled: + + 1. On the top bar, select **Menu >** **{admin}** **Admin**. + 1. On the left sidebar, select **Settings > General**. + 1. Expand **Visibility and access controls**. + 1. Under **Import sources**, check the "Project export enabled" option. + 1. Select **Save changes**. + - The exports are stored in a temporary directory and are deleted every 24 hours by a specific worker. diff --git a/doc/administration/raketasks/storage.md b/doc/administration/raketasks/storage.md index 5b6d4e16d8d60..cee63a6cae5cd 100644 --- a/doc/administration/raketasks/storage.md +++ b/doc/administration/raketasks/storage.md @@ -107,12 +107,15 @@ to project IDs 50 to 100 in an Omnibus GitLab installation: sudo gitlab-rake gitlab:storage:migrate_to_hashed ID_FROM=50 ID_TO=100 ``` -You can monitor the progress in the **Admin Area > Monitoring > Background Jobs** page. -There is a specific queue you can watch to see how long it will take to finish: -`hashed_storage:hashed_storage_project_migrate`. +To monitor the progress in GitLab: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Monitoring > Background Jobs**. +1. Watch how long the `hashed_storage:hashed_storage_project_migrate` queue + will take to finish. After it reaches zero, you can confirm every project + has been migrated by running the commands above. -After it reaches zero, you can confirm every project has been migrated by running the commands above. -If you find it necessary, you can run this migration script again to schedule missing projects. +If you find it necessary, you can run the previous migration script again to schedule missing projects. Any error or warning is logged in Sidekiq's log file. @@ -120,7 +123,7 @@ If [Geo](../geo/index.md) is enabled, each project that is successfully migrated generates an event to replicate the changes on any **secondary** nodes. You only need the `gitlab:storage:migrate_to_hashed` Rake task to migrate your repositories, but there are -[additional commands(#list-projects-and-attachments) to help you inspect projects and attachments in both legacy and hashed storage. +[additional commands](#list-projects-and-attachments) to help you inspect projects and attachments in both legacy and hashed storage. ## Rollback from hashed storage to legacy storage diff --git a/doc/install/azure/index.md b/doc/install/azure/index.md index 0d62e4d1215f4..1351489642eb8 100644 --- a/doc/install/azure/index.md +++ b/doc/install/azure/index.md @@ -238,9 +238,11 @@ in this section whenever you need to update GitLab. ### Check the current version -To determine the version of GitLab you're currently running, -go to the **{admin}** **Admin Area**, and find the version -under the **Components** table. +To determine the version of GitLab you're currently running: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Overview > Dashboard**. +1. Find the version under the **Components** table. If there's a newer available version of GitLab that contains one or more security fixes, GitLab displays an **Update asap** notification message that diff --git a/doc/user/admin_area/geo_nodes.md b/doc/user/admin_area/geo_nodes.md index 32b1555c33d49..19a76d0938b7f 100644 --- a/doc/user/admin_area/geo_nodes.md +++ b/doc/user/admin_area/geo_nodes.md @@ -10,7 +10,10 @@ type: howto You can configure various settings for GitLab Geo nodes. For more information, see [Geo documentation](../../administration/geo/index.md). -On the primary node, go to **Admin Area > Geo**. On secondary nodes, go to **Admin Area > Geo > Nodes**. +On either the primary or secondary node: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. ## Common settings @@ -61,8 +64,13 @@ The **primary** node's Internal URL is used by **secondary** nodes to contact it [External URL](https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab) which is used by users. Internal URL does not need to be a private address. -Internal URL defaults to External URL, but you can customize it under -**Admin Area > Geo > Nodes**. +Internal URL defaults to external URL, but you can also customize it: + +1. On the top bar, select **Menu >** **{admin}** **Admin**. +1. On the left sidebar, select **Geo > Nodes**. +1. Select **Edit** on the node you want to customize. +1. Edit the internal URL. +1. Select **Save changes**. WARNING: We recommend using an HTTPS connection while configuring the Geo nodes. To avoid -- GitLab