2017-01-24 2 views
0

Я знаю, что вопрос звучит тихо неопределенно, но я попытаюсь объяснить свое заявление о проблеме.Разверните приложение Spring Cloud в кластер докеров, используя рой

У меня есть приложение весеннего облака (с использованием Netflix Eureka как сервисное обнаружение) с несколькими службами, и они развернуты в контейнерах докеров, контейнеры связаны и поддерживаются с помощью компоновки докеров, все отлично работает при развертывании одного контейнера, но проблема заключается в автоматизации масштабирования отдельных сервисов/контейнеров, т. е. для того, чтобы иметь несколько контейнеров одной службы, поскольку мои контейнеры связаны с портами, поэтому шкала сокета-докеры не будет работать.

Я искал google и обнаружил, что могу использовать балансировщик нагрузки и вращать контейнеры с разными портами для службы, но я не хочу этого, потому что я использую балансировку нагрузки на стороне клиента.

Может кто-нибудь, пожалуйста, предложите, как я могу автоматизировать вращение нескольких контейнеров для обслуживания, имея в виду, что контейнеры могут связываться друг с другом с помощью своего имени службы.

+0

Если вы используете Eureka, то почему это важно, какой порт или даже хост использует контейнер? Он будет регистрироваться в Eureka и под тем же именем службы, а затем другие службы могут использовать Eureka для обнаружения всех адресов этой службы. –

+0

@RyanBaxter, вы правы, мы можем это сделать, но я искал способ достичь этого, используя докер-состав и рой – Apollo

+0

Я знаю, что если вы свяжете контейнеры вместе, имя хоста связанных контейнеров будет помещено в файл hosts , но это не та самая служба, которая была открыта службой эврики. –

ответ

0

Отвечая на мой вопрос, возможно, это может помочь кому-то.

Поскольку я пользуюсь Spring Cloud, службы регистрируются в Eureka, предоставляя имя службы, поэтому не имеет смысла связывать публичные порты с контейнерами, я использовал ниже файл для докере-компоновки для достижения масштабирования, однако могут быть лучшие способы сделать это, но пока это работает для меня.

version: '2' 
services: 
eureka: 
    image: eureka 
    container_name: eureka 
    ports: 
    - "8761:8761" 

zuul: 
image: zuul 
container_name: zuul 
ports: 
    - "8080" 
depends_on: 
    - eureka 

webapp: 
image: web-app 
ports: 
    - "6001" 
depends_on: 
    - eureka 

writer: 
image: writer 
ports: 
    - "7001" 
depends_on: 
    - eureka 

recorder: 
image: recorder 
ports: 
    - "9001" 
depends_on: 
    - eureka 
    - mongodb 

mongodb: 
image: mongo:latest 
command: mongod --noprealloc --smallfiles --dbpath /data/db --nojournal --oplogSize 16 --noauth 
ports: 
    - "27017:27017" 
environment: 
    TERM: xterm 
volumes: 
    - /home/user/data/mongo:/data/db 

PS: Ямл не отформатирован выше.