Назад | Перейти на главную страницу

Докер рой и тома

Учитывая Docker 1.12. Я понимаю, что тома не являются переносимыми в рое, и что такие решения, как Flocker, лучше подходят для больших кластеров.

Тем не менее, приемлем ли вариант, который я описываю ниже, для моей установки?

Настроить Рой с 3 узлами, запущенный в Docker 1.12 last из экспериментальной ветки.

Цель Запустите красивый, но небольшой кластер Cassandra.

Проблема Я хочу развязать сохранный часть услуги (объем данных) из без гражданства Демоны Кассандры.

Предложенное решение Создайте именованный том вручную на каждом узле с тем же именем на каждом узле. Использовать docker service create --name cassandra --replicas 3 --mount type=volume,source=cassandra_data,target=/usr/var/cassandra

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

Это сработает? Нужно ли указывать ограничение, чтобы на каждый узел роя приходилось не более 1 реплики?

редактировать: читая документ, кажется, стоит использовать --mode=global вместо того replicas=3 для запуска ровно 1 реплики на узел роя. Что имеет большой смысл ...

Начиная с версии 19.03, теперь есть возможность ограничить количество реплик на узел, чтобы избежать доступа нескольких реплик к одному и тому же тому:

$ docker service create --help

Usage:  docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]

Create a new service

Options:
...
      --replicas-max-per-node uint         Maximum number of tasks per node (default 0 = unlimited)

С этим добавлено service create , следующим шагом будет добавление настройки размещения в файл создания для поддержки docker stack deploy.

Да, это работает, и использование глобального флага будет лучшим вариантом для предотвращения любых конфликтов. Я использовал аналогичную модель с MongoDB в качестве теста и отлично работал.