2015-02-27 4 views
1

Я использую Mesos и марафон, чтобы развернуть контейнер Kibana 4. JSON для развертывания является:Развертывание Docker контейнер Kibana 4 с портом-отображением на Mesos/Marathon

{ 
    "id": "/org/products/kibana/webapp", 
    "instances": 1, 
    "cpus": 1, 
    "mem": 768, 
    "uris": [], 
    "constraints": [ 
     ["hostname", "UNIQUE"] 
    ], 
    "upgradeStrategy": { 
     "minimumHealthCapacity": 0.5 
    }, 
    "healthChecks": [ 
     { 
      "protocol": "HTTP", 
      "path": "/", 
      "portIndex": 0, 
      "initialDelaySeconds": 600, 
      "gracePeriodSeconds": 10, 
      "intervalSeconds": 30, 
      "timeoutSeconds": 120, 
      "maxConsecutiveFailures": 10 
     } 
    ], 
    "env": { 
     "ES_HOST":"172.23.10.23", 
     "ES_PORT":"9200" 
    }, 
    "container": { 
     "type": "DOCKER", 
     "docker": { 
      "image": "myregistry.local.com:5000/org/kibana:4.0.0", 
      "network": "BRIDGE", 
      "portMappings": [ 
       { 
        "containerPort": 5601, 
        "hostPort": 0, 
        "servicePort": 50061, 
        "protocol": "tcp" 
       } 
      ] 
     }, 
     "volumes": [ 
      { 
      "containerPath": "/etc/localtime", 
      "hostPath": "/etc/localtime", 
      "mode": "RO" 
      } 
     ] 
    } 
} 

Но когда я его , приложение kibana никогда не просыпается и журнал STDERR является:

I0227 12:22:44.666357 1149 exec.cpp:132] Version: 0.21.1 
I0227 12:22:44.669059 1178 exec.cpp:206] Executor registered on slave 20150225-040104-1124079532-5050-952-S0 

/kibana/src/index.js:58 
     throw error; 
      ^
Error: listen EADDRNOTAVAIL 
    at errnoException (net.js:905:11) 
    at Server._listen2 (net.js:1024:19) 
    at listen (net.js:1065:10) 
    at net.js:1147:9 
    at asyncCallback (dns.js:68:16) 
    at Object.onanswer [as oncomplete] (dns.js:121:9) 

После того, что я пытаюсь устранить отображение портов, потому что я нашел несколько ссылок о том, что что это проблема конфигурации порта или сети. Тогда мое веб-приложение Kibana 4 просыпается хорошо, но мне нужно настроить сопоставление портов для доступа через HTTP. Я не думаю о том, почему у марафона возникают проблемы с сетью и portMappings config. Некоторая помощь будет оценена.

ответ

1

Это неприятная проблема, и я тоже столкнулся с ней (работает Kibana 4 на Mesos + Marathon).

Короткий ответ:

Если вы используете текущий мастер хранилища Kibana, этого не произойдет - соответствующий код изменился в 4.1.0 снимке, который является мастером в момент написания.

Длинный ответ:

4.0.0 имеет этот кусок кода в src/server/index.js:

var port = parseInt(process.env.PORT, 10) || config.port || 3000; 
var host = process.env.HOST || config.host || '127.0.0.1'; 

марафон поставок HOST и POST переменных окружения по умолчанию, а переменная HOST устанавливается в Имя хоста Mesos. Вышеприведенный код заставляет Kibana пытаться привязать к IP-адресу ведомого Mesos (который Marathon разместил в HOST), что не удастся, так как оно запущено внутри контейнера Docker.

Если вы хотите запустить 4.0.0, вы можете просто патч эти строки:

var port = config.port || 3000; 
var host = config.host || '127.0.0.1'; 

код выглядит следующим образом в мастер на данный момент.