La mise à niveau de DPC 19.10 affiche l’interface utilisateur « Échec de la connexion à l’hôte local »
Summary: Après la mise à niveau vers DPC 19.10, l’interface utilisateur de DPC affiche « Échec de la connexion à l’hôte local/127.0.0.1 :8143 ».
Symptoms
Après la mise à niveau vers DPC 19.10, vous ne pouvez pas accéder à l’interface utilisateur de DPC.
En vérifiant le fichier /var/log/dpc/elg/elg.log, vous voyez les erreurs suivantes :
2024-05-09 13:34:54,911 DEBUG reactor-http-epoll-4 c.d.i.i.k.c.IAMCliRunner Received error during execution: finishConnect(..) failed: Connection refused: localhost/127.0.0.1:8143; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: localhost/127.0.0.1:8143
Exécution de l’opération docker ps command show que le conteneur Keycloak a 'EXITED' :
/data01/docker/volumes/keycloak-postgres-db/_data # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 05dd8ebc74e8 dpd/dpc/iam-service:latest "java -cp iam:iam/li…" 52 minutes ago Up 48 minutes 127.0.0.1:8870->8870/tcp, ::1:8870->8870/tcp iam-service 34a6b3c4c5c4 dpd/dpc/dp-keycloak:2.3.0-2 "/opt/keycloak/bin/k…" 52 minutes ago Exited (127) 10 minutes ago iam-provider df560f07da93 dpd/dpc/postgres-db:2.3.0-2 "docker-entrypoint.s…" 52 minutes ago Up 49 minutes (healthy) 5432/tcp postgres-db
En vérifiant les journaux Docker, vous obtenez l’erreur suivante :
/data01/docker/volumes/keycloak-postgres-db/_data # docker logs --tail 100 34a6b3c4c5c4 Fatal glibc error: CPU does not support x86-64-v2
Cause
La version Keycloak utilisée dans DPC 19.10 (Keycloak 21) nécessite un processeur de type x86-64-v2 ou supérieur.
La machine virtuelle qui a été conçue pour DPC ne dispose pas de ce type de processeur, de sorte que le conteneur Keycloak se ferme et ne s’exécute pas.
Resolution
Ce problème peut être dû à plusieurs facteurs.
- L’hôte ESXi ne prend pas en charge x86-64-v2, la plupart des processeurs fabriqués après 2008 prennent en charge cette microarchitecture.
- La machine virtuelle a peut-être été conçue sans cette prise en charge de la microarchitecture.
Pour résoudre ce problème, déterminez si votre hôte prend en charge x86-64-v2.
- Si c’est le cas, vous pouvez déployer une nouvelle machine virtuelle avec cette microarchitecture configurée, puis déployer DPC sur cette machine virtuelle.
- S’il ne le prend pas en charge, vous devez trouver un hôte qui prend en charge cette microarchitecture et déplacer la machine virtuelle DPC vers cet hôte.
Pour vérifier si votre machine virtuelle prend en charge cette option, créez un script cpuinfo.sh sur la machine virtuelle Linux avec les éléments suivants :
#!/usr/bin/awk -f
BEGIN {
while (!/flags/) if (getline < "/proc/cpuinfo" != 1) exit 1
if (/lm/&&/cmov/&&/cx8/&&/fpu/&&/fxsr/&&/mmx/&&/syscall/&&/sse2/) level = 1
if (level == 1 && /cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/) level = 2
if (level == 2 && /avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/) level = 3
if (level == 3 && /avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/) level = 4
if (level > 0) { print "CPU supports x86-64-v" level; exit level + 1 }
exit 1
}
Ensuite, chmod +x ce fichier de script, puis exécutez-le avec la commande suivante :
./cpuinfo.sh
Si vous obtenez la sortie suivante, elle est prise en charge :
./cpu-type.sh CPU supports x86-64-v2