在 AWS Elastic Beanstalk 上运行许多类似的解析服务器

Posted

技术标签:

【中文标题】在 AWS Elastic Beanstalk 上运行许多类似的解析服务器【英文标题】:Run a lot of similar parse servers on AWS Elastic Beanstalk 【发布时间】:2017-03-31 19:10:11 【问题描述】:

我一直在 AWS Elastic Beanstock 上运行许多类似的解析服务器应用程序。我不需要大量的计算能力,只需一种在 AWS 上运行大量解析服务器的方法,而无需为每个服务器支付单独的服务器费用。是否有一种方法可以在其中一个解析服务器上运行多个应用程序,或者是否有一种方法可以在 Elastic Beanstock 中以某种方式将多个解析服务器放在一个实例上?我正在运行的这种服务器的示例可以在Parse GitHub page 找到。谢谢!

【问题讨论】:

【参考方案1】:

我这样做的方法是将每个解析服务器应用程序放入自己的 docker 容器中,然后在单个“beanstalk”上部署一堆不同的容器,每个容器都在自己的端口上运行。

在某些情况下,我为多个应用程序使用相同的代码库,而在某些情况下,代码是不同的。我在所有情况下都使用https://www.npmjs.com/package/config 来管理配置,但在代码相同的情况下,我使用环境变量NODE_APP_INSTANCE 为不同的应用程序设置不同的配置值。

简单的Dockerfile

FROM node

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 5000

CMD [ "npm", "start" ]

还有一个简单的Dockerrun.aws.json


  "AWSEBDockerrunVersion": 2,
  "volumes": [ ],
  "containerDefinitions":
    [
      
        "name": "app1",
        "image": "xxx.dkr.ecr.us-east-1.amazonaws.com/boo/app1:latest",
        "essential": true,
        "memory": 1536,
        "entryPoint": ["node", "index.js"],
        "portMappings":
          [
            
              "hostPort": 9091,
              "containerPort": 9091
            
          ],
        "environment":
        [
          
            "name": "NODE_ENV",
            "value": "production"
          
        ]
     ,
     
        "name": "app2",
        "image": "xxx.dkr.ecr.us-east-1.amazonaws.com/boo/app2:latest",
        "essential": true,
        "memory": 512,
        "entryPoint": ["node", "index.js"],
        "portMappings":
          [
            
              "hostPort": 9092,
              "containerPort": 9092
            
          ],
        "environment":
        [
          
            "name": "NODE_ENV",
            "value": "production"
          ,
           "name": "NODE_APP_INSTANCE",
            "value": "app2"
          
        ]
     ,
    ...

【讨论】:

有例子说明这是如何工作的吗?我从未使用过 Docker。 好问题。基础是:制作一个容器。安装 AWS ECS。告诉 Beanstalk 你的容器在哪里。以下是贯穿这三个步骤的三个链接 如何对节点应用程序进行 docker 化:nodejs.org/en/docs/guides/nodejs-docker-webapp 将容器放在 ecs 上:docs.aws.amazon.com/AmazonECS/latest/developerguide/… 将 docker 容器部署到 elasticbeanstalk:docs.aws.amazon.com/elasticbeanstalk/latest/dg/…

以上是关于在 AWS Elastic Beanstalk 上运行许多类似的解析服务器的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS Elastic Beanstalk 上扩展 Magento

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 上设置 HTTPS

在 AWS Elastic Beanstalk 上运行节点和反应

如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?

在aws elastic beanstalk上上传文件?