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