2016-10-16 2 views
1

Хорошо, через неделю или более, мой кластер Aurora работает. Это было не очень просто, но, тем не менее, я понял.Файл Aurora определяет хост-порт

Я есть простой AURORA файлу

# copy frontend into the local sandbox 
clone_service = Process(
    name = 'copy service', 
    cmdline = 'git clone https://[email protected]/jakiku/frontend.git frontend') 

install_npm_deps = Process(
    name = 'install npm dependencies', 
    cmdline = 'cd frontend && npm install' 
) 

run_server = Process(
    name = 'run server', 
    cmdline = 'node server.js' 
) 

# describe the task 
run_frontend_service = SequentialTask(
    processes = [clone_service, install_npm_deps, run_server], 
    resources = Resources(cpu = 1, ram = 128*MB, disk=64*MB)) 

jobs = [ 
    Service(cluster = 'mesos-fr', 
     environment = 'devel', 
     role = 'www-data', 
     name = 'frontend_service', 
     task = run_frontend_service) 
] 

Ничего особенного. Я хочу только определить, какой порт мне нужно использовать. Я проверил ресурсы (порт = 3000), но он не работает. На самом деле это не ресурс, это атрибут в mesos.

ответ

0

Вообще говоря, вы хотите избежать статических портов с заданиями Aurora. Поскольку любое количество задач может приземляться на одном и том же хосте, нет никакого хорошего способа гарантировать, что несколько задач не будут запрашивать один и тот же порт, из-за которого один из них будет случайным образом терпеть неудачу.

Рекомендуемый способ решить эту проблему - запросить порт из Mesos, используя пространство имен thermos в конфигурации aurora. Например, если вы должны были сделать что-то вроде:

run_server = Process(
    name = 'run server', 
    cmdline = 'node server.js --port={{thermos.ports[http]}}' 
) 

Тогда Aurora присвоит случайный порт для вашей задачи, когда она назначена к хозяину.

Очевидный вопрос, который возникает у вас, заключается в том, как другие вещи находят ваш сервис, если он работает на случайно назначенный порт, который может меняться со временем, когда ваша задача перемещается между хостами. Ответ на этот вопрос: service discovery. Если вы добавите announce=Announcer() в ваш job configuration, тогда ваша задача будет добавлена ​​к серверу, который другие задачи могут использовать для обнаружения и связи с ним.

Ссылка:

Mesos documentation on configuring agents to offer ports.

Aurora documentation on requesting ports here.

+0

Спасибо. Я буду использовать другое сервисное открытие, но обычно: Спасибо. Я могу передать номер порта. Я получил случайное число в моем диапазоне портов. Но одно не работает: привязка к моему серверу. Но это может быть и докер. –