0

J'ai récemment parcouru le didacticiel pour les applications d'équilibrage de charge dans DCOS en utilisant marathon-lb (dans l'exemple, ils équilibrent certains conteneurs nginx: https://dcos.io/docs/1.9/networking/marathon-lb/marathon-lb-advanced-tutorial/). J'essaie d'utiliser cette approche pour équilibrer la charge interne de ma propre application personnalisée. L'application personnalisée que j'utilise est une application Play Scala. J'ai le marathon-lb interne mis en place et peut l'utiliser avec succès pour le conteneur nginx, mais quand j'essaie d'utiliser ma propre image docker je ne peux pas obtenir ce pour fonctionner. Je démarre mon service avec mon image personnalisée et je peux accéder au service en utilisant l'IP et le port qui lui est assigné (ie si le service est déployé sur 10.0.0.0 et est disponible sur le port 1234 alors curl http://10.0.0.0:1234/ fonctionne comme prévu et Je peux aussi faire mes appels API comme définis dans mes routes d'application). Cependant, lorsque je tente d'accéder à l'application par l'équilibreur de charge (curl -i http://marathon-lb-internal.marathon.mesos:10002, où 10002 est le port de service) alors je reçois ce message:Impossible de se connecter au service via Marathon-lb utilisant DCOS

HTTP/1.0 503 Service Unavailable 
Cache-Control: no-cache 
Connection: close 
Content-Type: text/html 

<html><body><h1>503 Service Unavailable</h1> 
No server is available to handle this request. 
</body></html> 

Pour référence, voici mon fichier JSON J'utilise pour commencer mon service personnalisé:

{ 
    "id": "my-app", 
    "container": { 
    "type": "DOCKER", 
    "docker": { 
     "image": "my_repo/my_image:1.0.0", 
     "network": "BRIDGE", 
     "portMappings": [ 
     { "hostPort": 0, "containerPort": 9000, "servicePort": 10002, "protocol": "tcp" } 
     ], 
     "parameters": [ 
     { "key": "env", "value": "USER_NAME=user" }, 
     { "key": "env", "value": "USER_PASSWORD=password" } 
     ], 
     "forcePullImage": true 
    } 
    }, 
    "instances": 1, 
    "cpus": 1, 
    "mem": 1000, 
    "healthChecks": [{ 
     "protocol": "HTTP", 
     "path": "/v1/health", 
     "portIndex": 0, 
     "timeoutSeconds": 10, 
     "gracePeriodSeconds": 10, 
     "intervalSeconds": 2, 
     "maxConsecutiveFailures": 10 
    }], 
    "labels":{ 
    "HAPROXY_GROUP":"internal" 
    }, 
    "uris": [ "https://s3.amazonaws.com/my_bucket/my_docker_credentials" ] 
} 
+0

Salut, as-tu résolu celui-ci? Sinon, je vais l'envoyer! Merci! –

Répondre

0

J'ai eu le même problème et a trouvé la solution ici

marathon-lb health check failing on all spray.io containers

besoin d'ajouter "HAPROXY_0_BACKEND_HTTP_HEALTHCHECK_OPTIONS": "http-send-nom-tête hôte \ n contrôle de délai d'attente {healthCheckTimeoutSeconds} s \ n"

Pour votre config afin que la couche REST n'aboie pas sur le bilan de santé du marathon