我想,这是一个愚蠢的问题,但我不知道在哪里可以找到答案。我检查过这么多资源,但我还是没有得到它。
我有docker-compose.yml文件。是否可以使用AWS ECS集群为每个服务(eurekaserver,configserver,zuulserver,database)运行新实例(例如t2.micro)?我只看到一个大实例的例子。
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有任务定义,但我不确定它是否可以提供帮助
答案 0 :(得分:0)
我假设您希望全天候运行这些服务,而不是按需运行。使用容器编排是可能的。使用Rancher的一种方法如下:
创建5个微实例。 4为服务,1为牧场,并将所有5合1放入VPC。现在在第5个实例中安装Rancher并在Rancher中添加其他4个主机,以便所有4个主机都显示在Rancher的基础架构中。
现在标记Rancher中的所有4个主机 - 例如:'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将根据主机关联标签将这些服务部署到相应的主机。