AWS ECS запускает экземпляр для каждого микросервиса - PullRequest
0 голосов
/ 29 мая 2018

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

У меня есть файл docker-compose.yml.Можно ли использовать кластер AWS ECS для запуска нового экземпляра (например, t2.micro) для каждой службы (eurekaserver, configserver, zuulserver, database)?Я видел только примеры с одним большим экземпляром.

version: '2'
services:

  eurekaserver:
   image: maxb/tracker-eurekasvr:tracker-eurekasvr
   ports:
       - "8761:8761"

  configserver:
    image: maxb/tracker-confsvr:tracker-confsvr
    ports:
       - "8888:8888"
    environment:
       EUREKASERVER_URI: "http://eurekaserver:8761/eureka/"
       EUREKASERVER_PORT: "8761"
       ENCRYPT_KEY:       "IMSYMMETRIC"

  zuulserver:
    image: maxb/tracker-zuulsvr:tracker-zuulsvr
    ports:
      - "5555:5555"
    environment:
      PROFILE: "default"
      SERVER_PORT: "5555"
      CONFIGSERVER_URI: "http://configserver:8888"
      EUREKASERVER_URI: "http://eurekaserver:8761/eureka/"
      DATABASESERVER_PORT: "27017"
      EUREKASERVER_PORT:   "8761"
      CONFIGSERVER_PORT:   "8888"

  database:
    image: mongo
    container_name: tracker-mongo
    volumes:
      - $HOME/tracker-data:/data/db
      - $HOME/tracker-datacd:/data/bkp
    restart: always

AWS ECS имеет определения задач, но я не уверен, что это может помочь

1 Ответ

0 голосов
/ 29 мая 2018

Я предполагаю, что вы хотите запускать эти службы 24x7, а не по требованию.С контейнерной оркестровкой это возможно.Один из способов сделать это с помощью Rancher:

Создайте 5 микроэкземпляров.4 для услуг и 1 для Rancher и положить все 5 в 1 VPC.Теперь установите Rancher в 5-м экземпляре и добавьте 4 других хоста в Rancher, чтобы все 4 хоста появились в инфраструктуре Rancher.

Теперь пометим все 4 хоста в Rancher уникально - например, «zuulserver», «database», «configserver», «eurekaserver»

Теперь отредактируйте ваш docker compose, чтобы добавить хост ранчераярлыки для каждой из ваших служб.

io.rancher.scheduler.affinity:host_label: key1=value1

 wordpress:
  labels:
    # Make wordpress a global service
    io.rancher.scheduler.global: 'true'
    # Make wordpress only run containers on hosts with a key1=value1 label
    io.rancher.scheduler.affinity:host_label: key1=value1
    # Make wordpress only run on hosts that do not have a key2=value2 label
    io.rancher.scheduler.affinity:host_label_ne: key2=value2
  image: wordpress
  links:
    - db: mysql
  stdin_open: true

В Rancher создайте стек с помощью docker compose и запустите стек.

Rancher развернет эти службык соответствующим хостам в соответствии с метками привязки хоста.

https://rancher.com/docs/rancher/v1.1/en/cattle/scheduling

https://rancher.com/docs/rancher/v1.2/en/hosts/

...