2016-02-13 5 views
0

У меня есть кластер для роевых машин. Я установил простой Docker для создания демо от here на одной из машин. Однако, когда я пытаюсь масштабировать приложение с помощью команды docker-compose scale web=5, он масштабируется только до текущего компьютера и не создает никаких новых веб-контейнеров на другом компьютере в кластере рой, как и ожидалось.Команда Docker comple 'scale' не масштабируется на нескольких машинах.

На каждом примере, который я видел другими, их команда scale работает, и ничего не упоминалось о дополнительных конфигурациях, необходимых для ее масштабирования на нескольких узлах.

Не уверен, что еще попробовать. Я получаю тот же результат при запуске команды масштаба с любой машины

Пожалуйста, дайте мне знать, какую дополнительную информацию я могу предоставить.

ответ

1

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

При масштабировании контейнера из приложения создания сообщения, который был связан с другим контейнером в том же создании сообщения приложения - Это было неисправным, потому что я присоединялась контейнеры с устаревшей функциональностью «ссылки», а не с помощью нового (?) multi-host networking функциональность. По-видимому, «ссылки» могут работать только на одной машине и не могут масштабироваться на нескольких машинах. (Я уверен, что это так, но может быть и неправильным)

При попытке масштабирования отсоединенного контейнера - Это действительно работало так, как ожидалось. Я забыл, что на машине были другие контейнеры, которые я ожидал от Docker. Таким образом, планировщик Swarm просто помещает вновь масштабированные контейнеры в текущую машину, так как текущий компьютер был наименее использован. (Это было на роя кластере 2 машины)

EDIT - Фактическое решение

Хорошо, это выглядит как последняя проблема была, я не могу масштабировать часть приложения создания письма, которое использует build для создания образа, а чем указание изображения с image.

Я полагаю, это имеет смысл, потому что машина, которая пытается масштабировать этот контейнер, не имеет файла сборки, доступного для создания этого изображения, но я предположил, что Docker Compose/Swarm будет достаточно умным, чтобы понять это и как-то скопируйте это через машины.

Таким образом, решение заключается в создании этого образа заранее с Docker build, а затем либо нажать это изображение в общественном Докер Hub или ваш собственный реестр и иметь Docker составить файл указать, что изображение с image, а не пытаться создать его build ,

0

Одна вещь, которую вы могли бы сделать, это наклейка на веб-контейнеры (например, com.mydomain.myapp.category=web) и сделать мягкое правило сглаживания для метки (например, affinity:com.mydomain.myapp.category!=~web). Это сообщит Рою, чтобы попытаться запланировать еще один контейнер с com.mydomain.myapp.category=web для размещения, который не помещает контейнер сначала (но расписание на одном уже имеет этот контейнер, если нет).

Модифицированный файл Docker Compose в этом хранилище будет что-то вроде:

web: 
    build: . 
    volumes: 
    - .:/code 
    links: 
    - redis 
    expose: 
    - "5000" 
    environment: 
    - "affinity:com.mydomain.myapp.category!=~web" 
    labels: 
    - "com.mydomain.myapp.category=web" 
redis: 
    image: redis 
lb: 
    image: tutum/haproxy 
    links: 
    - web 
    ports: 
    - "80:80" 
    environment: 
    - BACKEND_PORT=5000 
    - BALANCE=roundrobin