- Vue d'ensemble (Overview)
- Prérequis
- Modèles de déploiement
- Manuel : Préparation de l'installation
- Manuel : Préparation de l'installation
- Étape 2 : configurer le registre compatible OCI pour les installations hors ligne
- Étape 3 : configurer le magasin d’objets externe
- Étape 4 : Configuration de High Availability Add-on
- Étape 5 : configurer les bases de données SQL
- Étape 7 : configurer le DNS
- Étape 8 : configuration des disques
- Étape 9 : configurer les paramètres au niveau du noyau et du système d’exploitation
- Étape 10 : configuration des ports de nœud
- Étape 11 : appliquer divers paramètres
- Étape 12 : Valider et installer les packages RPM requis
- Étape 13 : génération du fichier cluster_config.json
- Exemple Cluster_config.json
- Configuration générale
- Configuration du profil
- Configuration du certificat
- Configuration de la base de données
- Configuration du magasin d'objets externe
- Configuration d'URL pré-signée
- Configuration d'ArgoCD
- Configuration de l'authentification Kerberos
- Configuration du registre externe compatible OCI
- Disaster Recovery : configurations actif/passif et actif/actif
- Configuration de High Availability Add-on
- Configuration spécifique à Orchestrator
- Configuration spécifique à Insights
- Configuration spécifique à Process Mining
- Configuration spécifique à Document Understanding
- Configuration spécifique à Automation Suite Robots
- Configuration de la surveillance
- Facultatif : configuration du serveur proxy
- Facultatif : Activation de la résilience aux échecs locaux dans un cluster en mode production multi-nœuds compatible haute disponibilité
- Facultatif : Transmettre le fichier personnalisé resolv.conf
- Facultatif : augmentation de la tolérance aux pannes
- Ajout d'un nœud d'agent dédié avec prise en charge GPU
- Ajout d'un nœud d'agent dédié pour les Automation Suite Robots
- Étape 15 : configuration du registre Docker temporaire pour les installations hors ligne
- Étape 16 : validation des prérequis de l’installation
- Exécution de uipathctl
- Manuel : Exécution de l'installation
- Post-installation
- Administration du cluster
- Gestion des produits
- Premiers pas avec le portail d'administration du cluster
- Migration de Redis de High Availability Add-on externe vers un une version externe de High Availability Add-on
- Migration des données entre les librairies
- Migration d'un magasin d'objets intégré au cluster vers un magasin d'objets externe
- Migration du registre intégré au cluster vers un registre externe compatible OCI
- Basculer manuellement vers le cluster secondaire dans une configuration actif/passif
- Disaster Recovery : exécution d'opérations post-installation
- Conversion d'une installation existante en configuration multi-sites
- Recommandations pour mettre à niveau un déploiement actif/passif ou actif/actif
- Recommandations pour sauvegarder et restaurer un déploiement actif/passif ou actif/actif
- Mise à l'échelle d'un déploiement à nœud unique (évaluation) vers un déploiement multi-nœuds (HA)
- Surveillance et alerte
- Migration et mise à niveau
- Migration entre les clusters Automation Suite
- Mettre à niveau Automation Suite
- Téléchargement des packages d'installation et obtention de l'ensemble des fichiers sur le premier nœud de serveur
- Récupération de la dernière configuration appliquée à partir du cluster
- Mise à jour de la configuration du cluster
- Configuration du registre compatible OCI pour les installations hors ligne
- Exécution de la mise à niveau
- Exécution d'opérations post-mise à niveau
- Configuration spécifique au produit
- Configuration avancée d'Orchestrator
- Configuration des paramètres d'Orchestrator
- Configuration des paramètres d'application
- Configuration de la taille maximale de la requête
- Remplacement de la configuration du stockage au niveau du cluster
- Configuration de NLog
- Enregistrement des journaux du robot dans Elasticsearch
- Configuration des magasins d'informations d'identification
- Configuration de la clé de chiffrement par locataire
- Nettoyer la base de données Orchestrator
- Ignorer l’installation de la bibliothèque hôte
- Rotation des informations d’identification de stockage d’objets blob
- Désactivation de l'utilisation d'URL pré-signées lors du téléchargement de données vers le stockage Amazon S3
- Configuration de la sécurité de l'application de processus
- Configurer une authentification Kerberos avec l’authentification MSSQL de base pour Process Mining
- Bonnes pratiques et maintenance
- Résolution des problèmes
- Comment résoudre les problèmes des services lors de l'installation
- Comment réduire les autorisations d’un répertoire de sauvegarde NFS
- Comment désinstaller le cluster
- Comment nettoyer les artefacts hors ligne pour améliorer l'espace disque
- Comment effacer les données Redis
- Comment activer la journalisation Istio
- Comment nettoyer manuellement les journaux
- Comment nettoyer les anciens journaux stockés dans le compartiment sf-logs
- Comment désactiver les journaux de diffusion pour AI Center
- Comment déboguer les installations d'Automation Suite ayant échoué
- Comment supprimer des images de l’ancien programme d’installation après la mise à niveau
- Comment désactiver le déchargement de la somme de contrôle txt
- Comment définir manuellement le niveau de journalisation d’ArgoCD sur Info
- Comment augmenter le stockage d’AI Center
- Comment générer la valeur pull_secret_value encodée pour les registres externes
- Comment résoudre les chiffrements faibles dans TLS 1.2
- Comment vérifier la version TLS
- Comment travailler avec les certificats
- Comment planifier la sauvegarde et la restauration des données Ceph
- Comment collecter les données d'utilisation de DU avec le magasin d'objets intégré au cluster (Ceph)
- Comment installer RKE2 SELinux dans des environnements isolés
- Comment nettoyer les anciennes sauvegardes différentielles sur un serveur NFS
- Comment déployer Insights dans un cluster compatible FIPS
- Comment migrer vers cgroup v2
- Comment récupérer l'authentification Kerberos après le redémarrage d'une machine virtuelle
- Comment transmettre une image Docker locale au registre intégré au cluster
- Comment exclure des compartiments de la sauvegarde
- Erreur lors du téléchargement du bundle
- L'installation hors ligne échoue en raison d'un fichier binaire manquant
- Problème de certificat dans l'installation hors ligne
- Erreur de validation de la chaîne de connexion SQL
- Disque Azure non marqué comme SSD
- Échec après la mise à jour du certificat
- Erreurs de validation du certificat TLS
- L'antivirus provoque des problèmes d'installation
- Automation Suite ne fonctionne pas après la mise à niveau du système d'exploitation
- Automation Suite requiert que backlog_wait_time soit défini sur 0
- L'installation du registre temporaire échoue sur RHEL 8.9
- Problème de redémarrage fréquent dans les déploiements d'espace de noms uipath lors des installations hors ligne
- Paramètres DNS non respectés par CoreDNS
- L’amorçage du registre intégré au cluster échoue en raison d’une mémoire insuffisante
- Les vérifications des prérequis échouent lorsque les projets modernes Document Understanding sont activés et qu’AI Center est désactivé
- Échec de la mise à niveau en raison d’un Ceph défectueux
- RKE2 ne démarre pas en raison d'un problème d'espace
- La mise à niveau échoue en raison d’objets classiques dans la base de données Orchestrator
- Cluster Ceph trouvé dans un état dégradé après une mise à niveau côte à côte
- La mise à niveau du service échoue pour Apps
- Délais d'attente de mise à niveau sur place
- La mise à niveau échoue dans les environnements hors ligne
- Le pod d'instantané-contrôleur-crds dans l'état CrashLoopBackOff après la mise à niveau
- La mise à niveau échoue en raison du remplacement des tailles de PVC Insights
- Échec de la mise à niveau en raison d’un nom d’hôte en majuscules
- Définition d'un délai d'expiration pour les portails de gestion
- L'authentification ne fonctionne pas après la migration
- kinit : Impossible de trouver le KDC pour le domaine <AD Domain> lors de l'obtention des informations d'identification initiales
- Kinit : Keytab ne contient aucune clé appropriée pour *** lors de l'obtention des informations d'identification initiales
- L'opération GSSAPI a échoué en raison d'un code de statut non valide
- Alarme reçue pour l'échec de la tâche Kerberos-tgt-update
- Fournisseur SSPI : serveur introuvable dans la base de données Kerberos
- La connexion a échoué pour l'utilisateur AD en raison d'un compte désactivé
- Échec de connexion à ArgoCD
- Mettre à jour les connexions du répertoire sous-jacent
- Impossible d'obtenir l'image du bac à sable
- Les pods ne s'affichent pas dans l'interface utilisateur ArgoCD
- Échec de la sonde Redis
- Le serveur RKE2 ne démarre pas
- Secret introuvable dans l'espace de noms UiPath
- ArgoCD passe à l'état Progression (Progressing) après la première installation
- Pod de serveur ArgoCD dans CrashLoopBackOff
- Atténuation manuelle de la politique réseau ArgoCD
- Métriques Ceph-rook manquantes dans les tableaux de bord de surveillance
- Discordance dans les erreurs signalées lors des vérifications de l'intégrité des diagnostics
- Configurer les requêtes et les limites de ressources pour les charges de travail créées par uipathctl
- Aucun problème sain en amont
- Démarrage de Redis bloqué par un antivirus
- Les pods AI Center et Document Understanding ne démarrent pas avec la vérification du certificat TLS activée
- Fluentd n’exporte pas les journaux dans les environnements IPv6
- Studio Desktop ne peut pas charger les connecteurs et activités Integration Service
- Document Understanding n'est pas affiché sur la barre de gauche d'Automation Suite
- État Échec (Failed) lors de la création d'une session de labellisation des données
- État Échec (Failed) lors de la tentative de déploiement d'une compétence ML
- La tâche de migration échoue dans ArgoCD
- La reconnaissance de l'écriture manuscrite avec l'Extracteur de formulaires intelligents (Intelligent Form Extractor) ne fonctionne pas
- Exécution de la haute disponibilité avec Process Mining
- Échec de l’ingestion de Process Mining lors de la connexion à l’aide de Kerberos
- Impossible de se connecter à la base de données AutomationSuite_ProcessMining_Authentication à l'aide d'une chaîne de connexion au format pyodbc
- L'installation d'airflow échoue avec sqlalchemy.exc.ArgumentError: impossible d'analyser l'URL rfc1738 de la chaîne ''
- Comment ajouter une règle de table d'adresse IP pour utiliser le port SQL Server 1433
- Le certificat Automation Suite n'est pas approuvé depuis le serveur sur lequel CData Sync est en cours d'exécution
- Exécution de l'outil de diagnostic
- Utilisation du pack d'assistance Automation Suite
- Explorer les journaux
Vérifiez et réparez l’intégrité du magasin d’objets Ceph avant la mise à niveau d’Automation Suite sur Linux.
Description
Lorsque vous essayez de mettre à niveau vers une nouvelle version d'Automation Suite, le message d'erreur suivant peut s'afficher : Ceph objectstore is not completely healthy at the moment. Inner exception - Timeout waiting for all PGs to become active+clean .
Solution
Pour résoudre ce problème de mise à niveau, vérifiez si les pods OSD sont en cours d'exécution et sains en exécutant la commande suivante :
kubectl -n rook-ceph get pod -l app=rook-ceph-osd --no-headers | grep -P '([0-9])/\1' -v
kubectl -n rook-ceph get pod -l app=rook-ceph-osd --no-headers | grep -P '([0-9])/\1' -v
-
Si la commande ne génère aucun pod, vérifiez si les groupes de placement (PG) Ceph se rétablissent ou non en exécutant la commande suivante :
function is_ceph_pg_active_clean() { local return_code=1 if kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph status --format json | jq '. as $root | ($root | .pgmap.num_pgs) as $total_pgs | try ( ($root | .pgmap.pgs_by_state[] | select(.state_name == "active+clean").count) // 0) as $active_pgs | if $total_pgs == $active_pgs then true else false end' | grep -q 'true';then return_code=0 fi [[ $return_code -eq 0 ]] && echo "All Ceph Placement groups(PG) are active+clean" if [[ $return_code -ne 0 ]]; then echo "All Ceph Placement groups(PG) are not active+clean. Please wait for PGs to become active+clean" kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph pg dump --format json | jq -r '.pg_map.pg_stats[] | select(.state!="active+clean") | [.pgid, .state] | @tsv' fi return "${return_code}" } # Execute the function multiple times to get updated ceph PG status is_ceph_pg_active_cleanfunction is_ceph_pg_active_clean() { local return_code=1 if kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph status --format json | jq '. as $root | ($root | .pgmap.num_pgs) as $total_pgs | try ( ($root | .pgmap.pgs_by_state[] | select(.state_name == "active+clean").count) // 0) as $active_pgs | if $total_pgs == $active_pgs then true else false end' | grep -q 'true';then return_code=0 fi [[ $return_code -eq 0 ]] && echo "All Ceph Placement groups(PG) are active+clean" if [[ $return_code -ne 0 ]]; then echo "All Ceph Placement groups(PG) are not active+clean. Please wait for PGs to become active+clean" kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph pg dump --format json | jq -r '.pg_map.pg_stats[] | select(.state!="active+clean") | [.pgid, .state] | @tsv' fi return "${return_code}" } # Execute the function multiple times to get updated ceph PG status is_ceph_pg_active_cleanRemarque :Si aucun des PG Ceph affectés ne reprend même après une attente de plus de 30 minutes, créez un ticket pour l’assistance UiPath®.
-
Si la commande génère un ou plusieurs pods, vous devez d'abord résoudre le problème qui les affecte :
- Si un pod est bloqué dans
Init:0/4, il peut s’agir d’un problème du fournisseur de PV (Longhorn). Pour résoudre ce problème, créez un ticket auprès de l’assistance UiPath®. - Si un pod se trouve dans
CrashLoopBackOff, résolvez le problème en exécutant la commande suivante :function cleanup_crashing_osd() { local restart_operator="false" local min_required_healthy_osd=1 local in_osd local up_osd local healthy_osd_pod_count local crashed_osd_deploy local crashed_pvc_name if ! kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph osd pool ls detail | grep 'rook-ceph.rgw.buckets.data' | grep -q 'replicated'; then min_required_healthy_osd=2 fi in_osd=$(kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph status -f json | jq -r '.osdmap.num_in_osds') up_osd=$(kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph status -f json | jq -r '.osdmap.num_up_osds') healthy_osd_pod_count=$(kubectl -n rook-ceph get pod -l app=rook-ceph-osd | grep 'Running' | grep -c -P '([0-9])/\1') if ! [[ $in_osd -ge $min_required_healthy_osd && $up_osd -ge $min_required_healthy_osd && $healthy_osd_pod_count -ge $min_required_healthy_osd ]]; then return fi for crashed_osd_deploy in $(kubectl -n rook-ceph get pod -l app=rook-ceph-osd | grep 'CrashLoopBackOff' | cut -d'-' -f'1-4') ; do if kubectl -n rook-ceph logs "deployment/${crashed_osd_deploy}" | grep -q '/crash/'; then echo "Found crashing OSD deployment: '${crashed_osd_deploy}'" crashed_pvc_name=$(kubectl -n rook-ceph get deployment "${crashed_osd_deploy}" -o json | jq -r '.metadata.labels["ceph.rook.io/pvc"]') info "Removing crashing OSD deployment: '${crashed_osd_deploy}' and PVC: '${crashed_pvc_name}'" timeout 60 kubectl -n rook-ceph delete deployment "${crashed_osd_deploy}" || kubectl -n rook-ceph delete deployment "${crashed_osd_deploy}" --force --grace-period=0 timeout 100 kubectl -n rook-ceph delete pvc "${crashed_pvc_name}" || kubectl -n rook-ceph delete pvc "${crashed_pvc_name}" --force --grace-period=0 restart_operator="true" fi done if [[ $restart_operator == "true" ]]; then kubectl -n rook-ceph rollout restart deployment/rook-ceph-operator fi return 0 } # Execute the cleanup function cleanup_crashing_osdfunction cleanup_crashing_osd() { local restart_operator="false" local min_required_healthy_osd=1 local in_osd local up_osd local healthy_osd_pod_count local crashed_osd_deploy local crashed_pvc_name if ! kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph osd pool ls detail | grep 'rook-ceph.rgw.buckets.data' | grep -q 'replicated'; then min_required_healthy_osd=2 fi in_osd=$(kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph status -f json | jq -r '.osdmap.num_in_osds') up_osd=$(kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph status -f json | jq -r '.osdmap.num_up_osds') healthy_osd_pod_count=$(kubectl -n rook-ceph get pod -l app=rook-ceph-osd | grep 'Running' | grep -c -P '([0-9])/\1') if ! [[ $in_osd -ge $min_required_healthy_osd && $up_osd -ge $min_required_healthy_osd && $healthy_osd_pod_count -ge $min_required_healthy_osd ]]; then return fi for crashed_osd_deploy in $(kubectl -n rook-ceph get pod -l app=rook-ceph-osd | grep 'CrashLoopBackOff' | cut -d'-' -f'1-4') ; do if kubectl -n rook-ceph logs "deployment/${crashed_osd_deploy}" | grep -q '/crash/'; then echo "Found crashing OSD deployment: '${crashed_osd_deploy}'" crashed_pvc_name=$(kubectl -n rook-ceph get deployment "${crashed_osd_deploy}" -o json | jq -r '.metadata.labels["ceph.rook.io/pvc"]') info "Removing crashing OSD deployment: '${crashed_osd_deploy}' and PVC: '${crashed_pvc_name}'" timeout 60 kubectl -n rook-ceph delete deployment "${crashed_osd_deploy}" || kubectl -n rook-ceph delete deployment "${crashed_osd_deploy}" --force --grace-period=0 timeout 100 kubectl -n rook-ceph delete pvc "${crashed_pvc_name}" || kubectl -n rook-ceph delete pvc "${crashed_pvc_name}" --force --grace-period=0 restart_operator="true" fi done if [[ $restart_operator == "true" ]]; then kubectl -n rook-ceph rollout restart deployment/rook-ceph-operator fi return 0 } # Execute the cleanup function cleanup_crashing_osd
- Si un pod est bloqué dans
Après avoir corrigé le plantage de l'OSD, vérifiez si les PG sont en train de récupérer ou non en exécutant la commande suivante :
is_ceph_pg_active_clean
is_ceph_pg_active_clean