doc-locale/fr-fr/administration/geo/replication/configuration.md
{{< details >}}
{{< /details >}}
[!note] Il s'agit de la dernière étape de la configuration d'un site Geo secondaire. Les étapes du processus de configuration doivent être effectuées dans l'ordre documenté. Sinon, effectuez toutes les étapes précédentes avant de continuer.
Les étapes de base de la configuration d'un site secondaire sont les suivantes :
Ce document se concentre sur le premier point. Nous vous encourageons à lire d'abord toutes les étapes avant de les exécuter dans votre environnement de test/production.
Prérequis pour both primary and secondary sites :
[!note] Do not d'authentification personnalisée pour le site secondaire. Cela est géré par le site principal. Tout changement nécessitant un accès à la zone Admin doit être effectué sur le site principal, car le site secondaire est un réplica en lecture seule.
GitLab stocke un certain nombre de valeurs secrètes dans le fichier /etc/gitlab/gitlab-secrets.json qui doit être identique sur tous les nœuds d'un site. Jusqu'à ce qu'il existe un moyen de les répliquer automatiquement entre les sites (voir issue #3789), ils doivent être répliqués manuellement sur all nodes of the secondary site.
Connectez-vous en SSH à un Rails node on your primary et exécutez la commande ci-dessous :
sudo cat /etc/gitlab/gitlab-secrets.json
Cela affiche les secrets à répliquer, au format JSON.
Connectez-vous en SSH into each node on your secondary Geo site et identifiez-vous en tant qu'utilisateur root :
sudo -i
Effectuez une sauvegarde des secrets existants :
mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.`date +%F`
Copiez /etc/gitlab/gitlab-secrets.json depuis le Rails node on your primary vers each node on your secondary, ou copiez-collez le contenu du fichier entre les nœuds :
sudo editor /etc/gitlab/gitlab-secrets.json
# paste the output of the `cat` command you ran on the primary
# save and exit
Vérifiez que les permissions du fichier sont correctes :
chown root:root /etc/gitlab/gitlab-secrets.json
chmod 0600 /etc/gitlab/gitlab-secrets.json
Reconfigurez each Rails, Sidekiq and Gitaly nodes on your secondary pour que le changement prenne effet :
gitlab-ctl reconfigure
gitlab-ctl restart
GitLab s'intègre au démon SSH installé sur le système, en désignant un utilisateur (généralement nommé git) par lequel toutes les demandes d'accès sont traitées.
Dans une situation de reprise après sinistre, les administrateurs système GitLab font passer un site secondaire au statut de site principal. Les enregistrements DNS du domaine principal doivent également être mis à jour pour pointer vers le nouveau site principal (précédemment un site secondaire). Cela évite de devoir mettre à jour les remotes Git et les URL d'API.
Cela entraîne l'échec de toutes les requêtes SSH vers le nouveau site principal promu en raison d'une discordance de clé d'hôte SSH. Pour éviter cela, les clés d'hôte SSH du site principal doivent être répliquées manuellement vers le site secondaire.
Le chemin de la clé d'hôte SSH dépend du logiciel utilisé :
/etc/ssh.gitlab-sshd, le chemin est /var/opt/gitlab/gitlab-sshd.Dans les étapes suivantes, remplacez <ssh_host_key_path> par celui que vous utilisez :
Connectez-vous en SSH à each Rails node on your secondary et identifiez-vous en tant qu'utilisateur root :
sudo -i
Effectuez une sauvegarde des clés d'hôte SSH existantes :
find <ssh_host_key_path> -iname 'ssh_host_*' -exec cp {} {}.backup.`date +%F` \;
Copiez les clés d'hôte SSH depuis le site principal :
Si vous pouvez accéder à l'un des nodes on your primary gérant le trafic SSH (généralement, les nœuds principaux de l'application GitLab Rails) en utilisant l'utilisateur root :
# Run this from the secondary site, change `<primary_site_fqdn>` for the IP or FQDN of the server
scp root@<primary_node_fqdn>:<ssh_host_key_path>/ssh_host_*_key* <ssh_host_key_path>
Si vous avez uniquement accès via un utilisateur disposant des privilèges sudo :
# Run this from the node on your primary site:
sudo tar --transform 's/.*\///g' -zcvf ~/geo-host-key.tar.gz <ssh_host_key_path>/ssh_host_*_key*
# Run this on each node on your secondary site:
scp <user_with_sudo>@<primary_site_fqdn>:geo-host-key.tar.gz .
tar zxvf ~/geo-host-key.tar.gz -C <ssh_host_key_path>
Sur each Rails node on your secondary, vérifiez que les permissions du fichier sont correctes :
chown root:root <ssh_host_key_path>/ssh_host_*_key*
chmod 0600 <ssh_host_key_path>/ssh_host_*_key
Pour vérifier la correspondance des empreintes de clé, exécutez la commande suivante sur les nœuds principal et secondaire de chaque site :
for file in <ssh_host_key_path>/ssh_host_*_key; do ssh-keygen -lf $file; done
Vous devriez obtenir une sortie similaire à celle-ci, et elles doivent être identiques sur les deux nœuds :
1024 SHA256:FEZX2jQa2bcsd/fn/uxBzxhKdx4Imc4raXrHwsbtP0M root@serverhostname (DSA)
256 SHA256:uw98R35Uf+fYEQ/UnJD9Br4NXUFPv7JAUln5uHlgSeY root@serverhostname (ECDSA)
256 SHA256:sqOUWcraZQKd89y/QQv/iynPTOGQxcOTIXU/LsoPmnM root@serverhostname (ED25519)
2048 SHA256:qwa+rgir2Oy86QI+PZi/QVR+MSmrdrpsuH7YyKknC+s root@serverhostname (RSA)
Vérifiez que vous disposez des clés publiques correctes pour les clés privées existantes :
# This will print the fingerprint for private keys:
for file in <ssh_host_key_path>/ssh_host_*_key; do ssh-keygen -lf $file; done
# This will print the fingerprint for public keys:
for file in <ssh_host_key_path>/ssh_host_*_key.pub; do ssh-keygen -lf $file; done
[!note] La sortie de la commande pour les clés privées et les clés publiques doit générer la même empreinte.
Redémarrez sshd pour OpenSSH ou le service gitlab-sshd sur each Rails node on your secondary :
Pour OpenSSH :
# Debian or Ubuntu installations
sudo service ssh reload
# CentOS installations
sudo service sshd reload
Pour gitlab-sshd :
sudo gitlab-ctl restart gitlab-sshd
Vérifiez que SSH est toujours fonctionnel.
Connectez-vous en SSH à votre serveur GitLab secondaire dans un nouveau terminal. Si vous ne pouvez pas vous connecter, vérifiez que les permissions sont correctes conformément aux étapes précédentes.
Connectez-vous en SSH à each Rails and Sidekiq node on your secondary et identifiez-vous en tant que root :
sudo -i
Modifiez /etc/gitlab/gitlab.rb et ajoutez un nom unique pour votre site. Vous en aurez besoin dans les prochaines étapes :
##
## The unique identifier for the Geo site. See
## https://docs.gitlab.com/administration/geo_sites/#common-settings
##
gitlab_rails['geo_node_name'] = '<site_name_here>'
Reconfigurez each Rails and Sidekiq node on your secondary pour que le changement prenne effet :
gitlab-ctl reconfigure
Accédez à l'instance GitLab du nœud principal :
gitlab_rails['geo_node_name'] dans /etc/gitlab/gitlab.rb. Ces valeurs doivent toujours correspondre exactly, caractère par caractère.external_url dans /etc/gitlab/gitlab.rb. Ces valeurs doivent toujours correspondre, peu importe si l'une se termine par / et l'autre non.Connectez-vous en SSH à each Rails, and Sidekiq node on your secondary et redémarrez les services :
gitlab-ctl restart
Vérifiez s'il existe des problèmes courants avec votre configuration Geo en exécutant :
gitlab-rake gitlab:geo:check
Si l'une des vérifications échoue, consultez la documentation de dépannage.
Connectez-vous en SSH à un Rails or Sidekiq server on your primary et identifiez-vous en tant que root pour vérifier que le site secondaire est accessible ou s'il existe des problèmes courants avec votre configuration Geo :
gitlab-rake gitlab:geo:check
Si l'une des vérifications échoue, consultez la documentation de dépannage.
Une fois le site secondaire ajouté à la page d'administration Geo et redémarré, le site commence automatiquement à répliquer les données manquantes depuis le site principal dans un processus connu sous le nom de backfill. Pendant ce temps, le site principal commence à notifier chaque site secondaire de tout changement, afin que le site secondaire puisse agir immédiatement sur ces notifications.
Assurez-vous que le site secondaire est en cours d'exécution et accessible. Vous pouvez vous connecter au site secondaire avec les mêmes identifiants que ceux utilisés avec le site principal.
Cette étape permet aux websockets de fonctionner de manière transparente depuis les sites principal et secondaire.
Collectez les external URLs de vos sites (principal et secondaire). Vous pouvez les trouver dans les pages de sites dans la zone Admin, comme mentionné dans la section ci-dessus.
Connectez-vous en SSH à chaque nœud Rails et Sidekiq de votre primary site et identifiez-vous en tant que root :
sudo -i
Modifiez /etc/gitlab/gitlab.rb pour ajouter les URL collectées à l'étape 1 au paramètre action_cable_allowed_origins :
gitlab_rails['action_cable_allowed_origins'] = ['https://secondary.example.com', 'https://primary.example.com']
Pour appliquer les modifications, reconfigurez chaque nœud Rails et Sidekiq et redémarrez le service :
gitlab-ctl reconfigure
gitlab-ctl restart
Vous pouvez ignorer cette étape en toute sécurité si :
Si votre site Geo GitLab principal utilise un certificat personnalisé ou auto-signé pour sécuriser les connexions HTTPS entrantes, il peut s'agir d'un certificat mono-domaine ou multi-domaine.
Installez le certificat approprié en fonction de votre type de certificat :
/etc/gitlab/ssl sur tous les nœuds Rails, Sidekiq, and Gitaly du site secondaire./etc/gitlab/ssl en suivant ces instructions sur tous les nœuds Rails, Sidekiq, and Gitaly du site secondaire.Une copie du certificat auto-signé du service externe doit être ajoutée au magasin de confiance sur tous les nœuds du site principal qui nécessitent un accès au service.
Pour que le site secondaire puisse accéder aux mêmes services externes, ces certificats doivent être ajoutés au magasin de confiance du site secondaire.
Si votre site principal utilise un certificat personnalisé ou auto-signé pour les connexions HTTPS entrantes, le certificat du site principal doit être ajouté au magasin de confiance du site secondaire :
Connectez-vous en SSH à chaque Rails, Sidekiq, and Gitaly node on your secondary et identifiez-vous en tant que root :
sudo -i
Copiez les certificats de confiance depuis le site principal :
Si vous pouvez accéder à l'un des nœuds de votre site principal gérant le trafic SSH en utilisant l'utilisateur root :
scp root@<primary_site_node_fqdn>:/etc/gitlab/trusted-certs/* /etc/gitlab/trusted-certs
Si vous avez uniquement accès via un utilisateur avec des privilèges sudo :
# Run this from the node on your primary site:
sudo tar --transform 's/.*\///g' -zcvf ~/geo-trusted-certs.tar.gz /etc/gitlab/trusted-certs/*
# Run this on each node on your secondary site:
scp <user_with_sudo>@<primary_site_node_fqdn>:geo-trusted-certs.tar.gz .
tar zxvf ~/geo-trusted-certs.tar.gz -C /etc/gitlab/trusted-certs
Reconfigurez chaque Rails, Sidekiq, and Gitaly node in your secondary :
sudo gitlab-ctl reconfigure
Vous pouvez vous connecter au site secondaire avec les mêmes identifiants que ceux utilisés avec le site principal. Après vous être connecté :
La réplication initiale peut prendre un certain temps. Le statut du site ou du « backfill » peut encore être en cours. Vous pouvez surveiller le processus de synchronisation sur chaque site Geo depuis le tableau de bord Sites Geo du site principal dans votre navigateur.
Si votre installation ne fonctionne pas correctement, consultez le document de dépannage.
Les deux problèmes les plus évidents qui peuvent apparaître dans le tableau de bord sont :
La désactivation d'un site secondaire arrête le processus de synchronisation.
Si les stockages de dépôts sont personnalisés sur le site principal pour plusieurs partitions de dépôts, vous devez dupliquer la même configuration sur chaque site secondaire.
Dirigez vos utilisateurs vers le guide d'utilisation d'un site Geo.
Actuellement, voici ce qui est synchronisé :
Consultez le document de dépannage.