Я хочу использовать docker-compose с Docker Swarm (я использую докер версии 1.13 и сочиняю с синтаксисом version: '3'
). Является ли каждая услуга доступной как «единая» услуга для других служб? Вот упрощенный пример, чтобы быть ясно:Docker Swarm Service Clustering
version: '3'
services:
nodejs:
image: mynodeapp
container_name: my_app
ports:
- "80:8080"
environment:
- REDIS_HOST=my_redis
- REDIS_PORT=6379
deploy:
mode: replicated
replicas: 3
networks:
- my_net
command: npm start
redis:
image: redis
container_name: my_redis
restart: always
expose:
- 6379
deploy:
mode: replicated
replicas: 2
networks:
- my_net
networks:
my_net:
external: true
Скажем, у меня есть 3 виртуальные машины, которые настроены как рой. Таким образом, на каждой виртуальной машине есть один контейнер nodejs, но есть только два контейнера redis.
На VM, где нет redis запущен: Будет ли контейнер nodejs узнать о redis?
Addiitonal вопросы: Когда я установил replicas: 4
для моего Redis, я буду иметь два REDIS контейнер на один VM: Будет ли это быть проблемой для моего nodejs приложения?
Последний вопрос: Когда я установил replicas: 4
для моего nodeapp: Будет ли это работать даже потому, что я теперь выставил два раза порта 80?
3. Но если у меня есть реплицированная база данных на ** разных узлах **, мне нужно настроить кластер для базы данных, потому что мне нужны синхронизированные данные - правильно? – Munchkin
@ Манчкин Я не уверен, что вы подразумеваете под этим. Docker Swarm гарантирует, что у вас будут синхронизированные данные независимо от того, сколько реплик имеет ваша служба и сколько узлов они распространяются, вам не нужно беспокоиться об этом. –
Чтобы быть ясным: например, У меня 3 реплицированных redis. Первый запрос приходит на redis # 1, и он обновит key1. Затем, позже, другой запрос приходит к redis # 2: Есть ли у redis # 2 новый (обновленный) ключ? Даже ** без настройки redis-cluster ** (опция «с включенным кластером да»)? – Munchkin