Débogage d'erreur de système VMs
Débogage d'une erreur "Java not running" sur une SSVM dans Apache CloudStack
Contexte
La Secondary Storage Virtual Machine (SSVM) dans Apache CloudStack gère les templates, ISOs, et snapshots. Lors de l'exécution du script /usr/local/cloud/systemvm/ssvm-check.sh
, une erreur "Java not running" indique que le processus Java du CloudStack Agent ne fonctionne pas correctement. Ce guide détaille les étapes que j'ai suivi pour diagnostiquer et résoudre ce problème, basées sur une session de débogage réelle.
Prérequis
Accès root à la SSVM via SSH ou console : ssh sur l'ip de la link locale par clé dans le .ssh de root :
ssh -i /root/.ssh/id_rsa.cloud 169.254.237.213 -p 3922
Interface d'administration CloudStack pour vérifier l'état des System VMs.
Connaissance de l'adresse IP du management server (par exemple,
192.168.1.30:8250
).Accès au stockage NFS configuré pour la SSVM.
Erreurs spécifiques que j'ai rencontrées
Problèmes DNS : Les System VMs (SSVM et Console Proxy) ne résolvaient pas correctement les noms DNS des nœuds et des hôtes KVM en raison d'un préfixe de domaine de recherche (domain.tld) manquant dans /etc/resolv.conf.
Processus Java non exécuté : Le processus Java nécessaire au fonctionnement du CloudStack Agent ne tournait pas, provoquant l'erreur "Java not running".
Scripts d'exécution manquants : Les scripts d'exécution dans /usr/local/cloud/systemvm/ pour le service cloud-early-config.service étaient absents, empêchant le démarrage correct de l'agent.
Problème avec cloud-agent.zip : Le fichier cloud-agent.zip était corrompu ou non synchronisé, empêchant l'agent CloudStack de répondre correctement.
Étapes de diagnostic et de résolution
1. Vérification initiale de l'environnement
Vérifiez l'état général du système pour identifier les problèmes de base.
a) Vérification de l'espace disque
df -h
Assurez-vous que le système de fichiers n'est pas plein, ce qui pourrait empêcher le démarrage des services.
b) Exploration des fichiers système
Listez les fichiers et scripts pertinents dans le répertoire de la SSVM :
ls /usr/local/cloud/systemvm/
find /usr/local/cloud/systemvm/ -name *.sh
Localisez le script ssvm-check.sh
pour analyse ultérieure.
Si vous ne trouvez le script le voici.
Donnez lui les droits -r-xr-xr-x 1 root root
chmod 555 /usr/local/cloud/systemvm/ssvm-check.sh
c) Vérification de la connectivité réseau
Vérifiez la configuration réseau et la connectivité avec le management server :
ip a
ping 1.1.1.1
ping 192.168.1.30
telnet 192.168.1.30 8250
Confirmez que la SSVM peut atteindre le management server sur le port 8250.
2. Diagnostic du problème Java
Analysez l'état de Java et du CloudStack Agent.
a) Vérification de l'installation de Java
Vérifiez si Java est installé et accessible :
java -version
which java
Attendez-vous à voir une version comme OpenJDK 17 avec cloudstack 4.20. Si Java est absent, installez-le :
apt update
apt install openjdk-17-jre -y
b) Vérification des processus Java
Vérifiez si un processus Java est en cours d'exécution :
ps -aux | grep java
ps -eaf | grep -v grep | grep java
Si aucun processus Java n'est trouvé, le CloudStack Agent ne fonctionne pas.
c) Inspection du script ssvm-check.sh
Analysez le script pour comprendre comment il détecte l'erreur :
grep -i java /usr/local/cloud/systemvm/ssvm-check.sh
Le script vérifie probablement la présence d'un processus Java spécifique.
3. Correction des problèmes de montage NFS
Le stockage secondaire doit être correctement monté pour que la SSVM fonctionne.
a) Configuration du montage NFS
Ajoutez une entrée NFS dans /etc/fstab
:
mkdir /mnt/secondary
echo "nfs.skyfik.lan:/mnt/pool-01/cloudstack_secondary_strg-az-1 /mnt/secondary nfs defaults 0 0" >> /etc/fstab
systemctl daemon-reload
mount -a
df -h
Vérifiez que le montage est réussi avec df -h
.

4. Configuration de l'environnement Java
Assurez-vous que Java est correctement configuré.
a) Définition de JAVA_HOME
Vérifiez et configurez la variable JAVA_HOME
:
echo $JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk" >> /etc/environment
source /etc/environment
echo $JAVA_HOME
5. Réparation du CloudStack Agent
Réparez les fichiers et services du CloudStack Agent.
a) Analyse des journaux
Vérifiez les journaux pour identifier les erreurs :
cat /var/log/cloud.log
cat /var/log/cloudstack/agent/agent.log
b) Mise à jour des fichiers de l'agent
Extrayez et remplacez les fichiers de l'agent :
find / -name cloudstack-agent.jar
ls -l /var/cache/cloud/agent.zip
mkdir /tmp/agent
unzip /var/cache/cloud/agent.zip -d /tmp/agent
cp -r /tmp/agent/* /usr/local/cloud/systemvm/
ls -l /usr/local/cloud/systemvm/cloud-agent-4.20.0.0.jar
c) Configuration des permissions
Ajustez les permissions des fichiers critiques :
chmod 555 /usr/local/cloud/systemvm/ssvm-check.sh
mkdir -p /etc/cloudstack/agent
cp /usr/local/cloud/systemvm/conf/agent.properties /etc/cloudstack/agent/
chmod 644 /etc/cloudstack/agent/agent.properties
6. Résolution des problèmes DNS et hôtes
Assurez-vous que la résolution de noms fonctionne correctement.
a) Configuration de /etc/hosts
Ajoutez des entrées pour résoudre les noms locaux :
echo "127.0.0.1 localhost s-53-VM" | tee -a /etc/hosts
echo "192.168.1.185 s-53-VM" | tee -a /etc/hosts
cat /etc/hosts
b) Configuration DNS
Ajoutez un domaine de recherche DNS :
echo "search skyfik.lan" >> /etc/resolv.conf
nslookup s-53-VM 192.168.1.3
ping s-53-VM
7. Redémarrage des services
Appliquez les modifications et redémarrez les services.
a) Redémarrage du service CloudStack
Redémarrez le service cloud-early-config
:
systemctl daemon-reload
systemctl restart cloud-early-config.service
systemctl status cloud-early-config.service
b) Exécution manuelle de l'agent
Supprimez un fichier PID obsolète et lancez l'agent manuellement :
rm -f /var/run/agent.SecStorage.pid
cd /usr/local/cloud/systemvm
nohup ./_run.sh &
8. Vérification finale
Validez que le problème est résolu.
a) Exécution du script ssvm-check.sh
/usr/local/cloud/systemvm/ssvm-check.sh
Vérifiez que l'erreur "Java not running" ne se produit plus.
b) Surveillance des journaux
Surveillez les journaux en temps réel :
tail -f /var/log/cloud.log
Confirmez que l'agent fonctionne sans erreurs.
Résolution
L'erreur "Java not running" a été résolue en :
Configurant correctement
JAVA_HOME
.Montant le stockage NFS.
Mettant à jour les fichiers du CloudStack Agent.
Corrigeant la résolution DNS via
/etc/hosts
et/etc/resolv.conf
.Redémarrant les services et exécutant
_run.sh
manuellement.
Bonnes pratiques
Surveillez régulièrement l'espace disque avec
df -h
.Vérifiez que
JAVA_HOME
est défini dans/etc/environment
.Assurez-vous que les fichiers de l'agent sont synchronisés avec le management server.
Configurez correctement le DNS pour éviter les problèmes de résolution.
Consultez les journaux (
/var/log/cloud.log
,/var/log/cloudstack/agent/agent.log
) pour un diagnostic rapide.
Last updated
Was this helpful?