web-dev-qa-db-fra.com

Équilibreur de charge HTTPS dans Google Container Engine

J'essaie de configurer un équilibreur de charge HTTPS pour GKE en utilisant équilibreur de charge HTTPS L7 , mais pour une raison quelconque, cela ne fonctionne pas. Même l’équilibreur de charge HTTP dans la procédure procédure d’équilibrage de charge HTTP . L'adresse IP de la règle de transfert est créée et je peux envoyer une requête ping et telnet au port 80. Mais, lorsque je le demande par l'intermédiaire de Curl, une erreur se produit. 

<title>502 Server Error</title> </head> <body text=#000000 
bgcolor=#ffffff> <h1>Error: Server Error</h1> <h2>The server 
encountered a temporary error and could not complete your request. 
<p>Please try again in 30 seconds.</h2> <h2></h2> </body></html>

Toutes les étapes étaient bonnes et j'ai créé un pare-feu sans balises pour le $ {NODE_PORT} mais cela n'a pas fonctionné. 

Est-ce que quelqu'un à rencontré ce problème?

22
lucas.coelho

J'ai eu le même problème avec mon application, le problème est que nous n'avions pas d'extrémité renvoyant "Succès" et que les contrôles de santé échouaient toujours.

Il semble que l’équilibreur de charge HTTP/HTTPS n’envoie pas la demande aux nœuds du cluster si les vérifications de l’état ne passent pas. Par conséquent, ma solution consistait à créer un noeud final renvoyant toujours 200 OK et, dès que les vérifications de l’état passaient, la LB a commencé à travailler.

19
andresk

Je viens de parcourir l'exemple et (avant d'ouvrir un pare-feu pour $ NODE_PORT), j'ai vu la même erreur 502. 

Si vous regardez dans la console cloud à

https://console.developers.google.com/project/<project>/loadbalancing/http/backendServices/details/web-map-backend-service

vous devriez voir que le backend montre que 0 sur $ {num_nodes_in_cluster} est sain. 

Pour votre définition de pare-feu, assurez-vous que vous définissez le filtre source sur 130.211.0.0/22 sur autorisez le trafic depuis le service d'équilibrage de charge et définissez les protocoles et ports autorisés sur tcp:$NODE_PORT

8
Robert Bailey

J'utilise GKE et je viens de parcourir l'exemple exemple et tout fonctionne bien, mais lorsque je me dirige vers mon propre service, cela ne fonctionne pas. (mon service est un service api de repos)

J'ai trouvé que, la plus grande différence entre mon service et l'exemple, c'est que: l'exemple a un point de terminaison racine ("/"), mais je ne le supporte pas.

J'ai donc résolu ce problème de la manière suivante: ajoutez un point de terminaison racine ("/") à mon service et renvoyez simplement succès (un point de terminaison vide qui ne renvoie rien), puis recréez l'entrée et attendez plusieurs minutes et puis l'entrée fonctionne !!

Je pense que ce problème devrait être causé par un vérificateur en bonne santé UNHEALTHY instances do not receive new connections.

Voici un lien pour les vérifications de l'état de santé: https://cloud.google.com/compute/docs/load-balancing/health-checks

3
Bluce Liu

Le problème a été résolu après quelques minutes (environ 5 à 10 minutes) dans mon cas.

1
Chris Stryczynski

Dans mon cas, l'équilibreur de charge renvoyait cette erreur car aucun serveur Web ne s'exécutait sur mes instances et groupes d'instances pour traiter la demande réseau.

J'ai installé nginx sur toutes les machines et ensuite il a commencé à fonctionner.

À partir de maintenant, je me suis fait un devoir d'ajouter nginx dans mon script de démarrage lors de la création de vm/instance.

0
Pulkit Pahwa