J'ai deux microservices qui communiquent entre eux par l'intermédiaire de gRPC
, A
est le client RPC et B
est le serveur RPC, tous deux écrits en NodeJS à l'aide de grpc Module NPM.
Tout fonctionne bien jusqu'à ce que, à un moment donné, de manière inattendue A
cesser de pouvoir envoyer des demandes à B
il échoue à cause d'un timeout (5s) et lance cette erreur :
Error: Deadline Exceeded
Les deux microservices sont des conteneurs Docker, fonctionnent sur AWS ECS et communiquent via AWS ELB (pas ALB car il ne supporte pas HTTP2 et quelques autres problèmes).
J'ai essayé d'exécuter telnet
de A
à la BLE de B
La connexion s'est faite sans problème, tant à partir de l'instance EC2 que de la tâche ECS en cours d'exécution (le conteneur Docker lui-même), mais l'application NodeJS dans le conteneur Docker ne s'est toujours pas connectée. A
ne peut pas atteindre l'application NodeJS dans B
en utilisant la connexion gRPC.
La seule façon de résoudre ce problème est d'arrêter et de démarrer les tâches ECS, puis de A
réussir à se connecter à B
(jusqu'à la prochaine fois que le même scénario se reproduira de manière inattendue), mais ce n'est évidemment pas une solution.
Quelqu'un a-t-il été confronté à ce genre de problème ?