Я новичок в docker, и довольно часто учусь docker, потому что я работаю со стеком LAPP (Linux, Apache, PHP и Postre SQL) и всегда работаю с monolithi c архитектура, в которой все вещи объединены в один сервер / VPS.
после того, как я узнал о docker, мой разум немного изменился, и теперь я собираюсь попробовать, как контейнировать стек. Когда я вошел в БД, я подумал, что если я внедрил docker в режиме роя, БД может автоматически реплицироваться или синхронизироваться c в моем рабочем узле, когда я увеличу его масштаб, но на самом деле это не так. А вот мой файл .yml, который я использую для повторного создания сценария.
version: "3"
services:
db:
image: postgres:9.5
container_name: db
restart: always
tty: true
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: mydocker_pass
POSTGRES_USER: mydocker_user
POSTGRES_DB: mydocker
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
В первый раз я просто создаю один контейнер внутри моего swarm-manager
, но затем я масштабирую этот сервис с этим команда docker service scale db_stack_db=2
работает отлично, теперь в моем рабочем узле запущен новый контейнер. В моем узле worker
у меня также есть тот же объем, который у меня уже есть в моем узле manager
, но, к сожалению, когда я записываю что-то в db
в узле manager
, он не появляется в моем worker
узел и наоборот, хотя они имеют одинаковое имя тома и предварительно созданную базу данных: mydocker
, а также имеют одного и того же пользователя базы данных: mydocker_user
и db_password mydocker_password
, что означает, что экземпляр в узле worker
не синхронизируется с manager
узел.
тогда, если кто-то здесь сталкивался с подобным сценарием, пожалуйста, помогите мне и, пожалуйста, поделитесь своими мыслями со мной, какова лучшая практика с режимом роя? мне нужно только поставить один узел для БД, потому что, если я масштабирую БД и если он работает в узле worker
, это полезно и помогает загрузке службы БД? поскольку между узлами manager
и worker
нет данных.
regards.