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

Как балансировать нагрузку на контейнеры масштабирования докеров

Я пытаюсь сбалансировать запрос между двумя контейнерами докеров, запущенными под scale режим и выделенные порты:

version: '2'

services:
  nginx:
      image: 'bitnami/nginx:latest'
      depends_on:
        - phpfpm
        - nodejs
      networks:
        - app-tier
      ports:
        - 8000:8000
      volumes:
        - ./nginx/vhost.conf:/opt/bitnami/nginx/conf/server_blocks/vhost.conf

  nodejs:
      image: 'node:12.16.2-alpine'
      command: "npm serve'"
      ports:
        - 4200
      volumes:
        - ../node/:/app
      networks:
        - app-tier
networks:
    app-tier:
      driver: bridge

И добавьте прокси nginx и сделайте запрос прокси, используя внутренний хост и порт nodejs:

server {
  listen 0.0.0.0:8000;

  location / {
      proxy_pass http://nodejs:4200;
  }
}

Контейнеры:

dfc75a7f4f2d        node:12.16.2-alpine    "docker-entrypoint.sh"   21 minutes ago      Up 21 minutes       0.0.0.0:32783->4200/tcp   docker_nodejs_2
759477246adf        bitnami/nginx:latest   "/entrypoint.sh /run."   25 minutes ago      Up 25 minutes       8080/tcp, 0.0.0.0:8000->8000/tcp, 8443/tcp         docker_nginx_1
75def14e0a35        node:12.16.2-alpine    "docker-entrypoint.sh"   5 hours ago         Up 25 minutes       0.0.0.0:32781->4200/tcp   docker_nodejs_1

Сначала я бегу один nodejs контейнер с использованием docker-compose up затем попробуйте масштабировать с помощью текущей команды

docker-compose up --scale nodejs=2

Так что в этом случае у меня работает только один nodejs сервис, а второй (который был запущен позже) не ответил ни на один запрос от nginx. Как я могу это исправить или запрос отладки и балансировки http://nodejs:4200 между scale экземпляры