Исходя из среды VMware, мой сквозной процесс заключался в следующем:
Итак, я поднялся / вар / библиотека / докер / тома на общем ресурсе NFS на нескольких машинах Docker и попытался создать рой. Но в конце концов я обнаружил, что если несколько компьютеров Docker монтируют одно и то же хранилище данных NFS, службу Docker можно запустить только на одном из узлов.
Итак, я предполагаю, что у меня вопрос: как создать рой с одной и той же службой, работающей на нескольких узлах, а данные хранятся в общей папке NFS?
Конечно, есть большая вероятность, что я еще не полностью понял идею того, как работает рой Docker, и смотрю на это под неправильным углом.
Правильно, вы не хотите делиться ничем в / var / lib / docker, это данные и конфигурации для этот движок на одном сервере.
В рое вы добавляете узлы в рой в качестве менеджеров или рабочих, а менеджеры реплицируют базу данных консенсуса рафта, в которой хранятся конфигурация и состояние роя.
Затем вы создаете службы, которые имеют одну или несколько реплик одного и того же образа контейнера, запускаемых на различных узлах в зависимости от требований и доступности.
Для баз данных вы имеете дело с постоянными данными (базами данных и журналами каждого экземпляра базы данных). Это связано с Docker Volumes (где вы храните постоянные данные) и, в частности, с выбранным вами драйвером тома. По умолчанию просто хранится том для этой реплики службы (контейнера) на узле, на котором она работает в данный момент. Если вы хотите, чтобы этот контейнер базы данных мог выйти из строя и автоматически развернуться на новом узле (одна из функций оркестратора контейнеров), вам необходимо использовать другой драйвер тома, который «знает рой» и знает, как убедиться, что Монтирование NFS размещается на правильном узле, чтобы быть готовым к установке правильной реплики службы.
Вы можете проверить REX-Ray который действует как средний уровень для управления томами на внешнем хранилище (и имеет свои собственные драйверы для типа серверной части) или посмотрите на полный список в Docker Store.