Tag: 亚马逊 ec2

AWS ECS如何从一个容器向另一个容器调用服务

我有一个具有2个EC2实例的Auto Scaling组的ECS群集。 另外我有3个服务,每个服务都有自己的任务定义。 每个EC2实例为每个服务运行一个docker容器。 因此,我在每个EC2实例中都有3个docker容器。 每个docker集装箱只需运行一个弹簧启动应用程序。 由于我有3个服务,那么我有3个春季启动应用程序。 同样,一个容器只运行这3个spring启动应用程序中的一个。 每个应用程序公开一个rest的API,诸如/ service1或/ service1 / resource1之类的URL下的POST,GET等服务。 这里重要的一点是我在容器的主机中使用dynamic端口映射。 我有一个端口443的外部(面向Internet的)ALB,它有3个目标组。 根据URL,请求将转到3个应用程序(或容器)之一。 我的问题有时是应用程序需要向应用程序B发出http请求。我的EC2实例位于私有子网中,而我的ALB位于公有子网中。 因此,如果我使用ALB将容器内的http请求发送给另一个容器,那么请求将通过NAT进行,而且由于NAT的公共IP不是ALB的安全组的一部分,无法在端口443上连接。我有2种方法可以使这项工作: 在白名单白名单0.0.0.0/0的安全组中。 我不想这样做,因为整个世界都可以访问。 在ALB的安全组中,将NAT的公共IP列入白名单。 我不确定这种方法。 这是可取的吗? 我试图实现的第三个选项是有一个第三个负载平衡器,一个内部的。 但是我迷失在这里,按照AWS文档,您只能将1负载均衡器分配给您的服务。 而且由于我们使用的是dynamic端口映射,我没有看到手动创buildALB并使用dynamic自动分配的端口的方法。 你们如何在容器之间进行这种连接,其中一个容器使用其他服务提供的服务? 作为最后的评论,我使用云形成所有。 没有从控制台手动设置。 谢谢,

EC2集装箱docker和春季启动日志

在EC2上,我有两个服务任务,这两个任务给了我2个Spring Boot应用程序的相同实例。 我正在使用docker。 在我的SpringBoot应用程序中,我configuration了logback: <appender name="TIME_BASED_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/server.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d %-5level [%thread] %logger{35} – %msg%n</pattern> </encoder> <prudent>true</prudent> </appender> <logger name="timeBased" level="INFO"> <appender-ref ref="TIME_BASED_FILE"/> </logger> <root level="INFO"> <appender-ref ref="TIME_BASED_FILE" /> </root> 并且文件夹日志/是在EC2中的任务定义中映射到/ backend-logs的卷: 当我input/后端日志和浏览日志文件有日志,但不是所有…我读的审慎应该提供我从多个JVM实例的日志,我会说,现在我有〜80%的日志(不谨慎=是<50%) 我可以做什么来拥有所有日志?

从docker-compose到AWS

我有一个docker-compose.yml : version: '2' services: scheduler: build: context: . dockerfile: Dockerfile hostname: dask-scheduler ports: – "8786:8786" – "8787:8787" command: dask-scheduler worker: build: context: . dockerfile: Dockerfile hostname: dask-worker ports: – "8789:8789" command: dask-worker scheduler:8786 和Dockerfile : FROM continuumio/miniconda3 RUN apt-get update && apt-get install -y build-essential freetds-dev RUN mkdir project COPY requirements.txt /project/requirements.txt COPY src/ […]

春季领事服务健康,但在不同的东道主不能互相接触

运行领事和春云领事我有五个微服务全部注册并显示健康。 这些服务中的每一个都运行在不同的EC2实例上。 使用在领事登记的微服务的名称,我不能通过使用RestTemplate连接到其中任何一个连接 如果服务A用下面的代码调用服务B. private final static String SERVICE = "http://instance-service"; @LoadBalanced @Autowired private RestTemplate restTemplate; @GetMapping("/instances") public ResponseEntity<String> instances() { ParameterizedTypeReference<String> reference = new ParameterizedTypeReference<String>() { }; return restTemplate.exchange(SERVICE, HttpMethod.GET, null, reference); } 服务A抛出 2017-12-19 17:30:36.000 ERROR 1 — [nio-8443-exec-7] oaccC[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request […]

docker:可能创build一个文件的二进制文件和软件包安装?

基本上我想创build一个“快照”,我的当前Ubuntu盒已编译二进制文件和各种apt-get包安装在它。 我想创build一个Docker实例作为一个文件,我可以分发给我的AWS ec2实例,这个实例将存储在ec2的挂载的S3桶中。 有没有可能做到这一点,你如何开始?

Docker IO错误与本地js文件

我有很难与docker加载本地js文件。 我没有问题在本地计算机上testing,但如果我托pipe它运行在No such file or directory: 'static/js/data.js上的Web服务器No such file or directory: 'static/js/data.js错误。 我的代码组织如下: Root/ application.py static/ js/ data.js templates/ index.html 在application.py我生成文件data.js和从index.html我读文件data.js没有问题<script src="../static/js/data_data.js"></script> 在application.py我使用file = open("static/js/data.js", "w+")创build一个在本地机器上正常工作但不在Web服务器(EC2) 这是我的dockerfile FROM ubuntu:14.04 RUN apt-get update RUN apt-get install python-setuptools -y && DEBIAN_FRONTEND=noninteractive apt-get install python-setuptools -y RUN apt-get install python-pip -y RUN apt-get install python-numpy -y RUN apt-get […]

在EC2上设置Docker Swarm

一切运行在单个AWS EC2 amz实例上。 没有docker机器,没有额外的VM,VirtualBox。 Docker守护进程就像这样运行 ps aux | grep docker … /usr/bin/docker -d -H tcp://0.0.0.0:2375 我正在执行: sudo docker -H localhost:2375 run -d swarm join –addr=52.18.134.9:12375 token://52b27cb0a8187bfb358a35a4fdbf8922 sudo docker -H localhost:2375 run -d -p 12375:2375 swarm manage token://52b27cb0a8187bfb358a35a4fdbf8922 sudo docker -H localhost:2375 ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 16f93309d6c7 swarm:latest "/swarm join –addr= […]

使用AWS Simple Workflow启动Docker容器

我是使用AWS Simple Workflow的新手,但在开始学习之前,我想知道是否可以在EC2实例中运行Docker容器。 我知道我的EC2实例有一个ECS Agent,所以我想我不能发送一个START TASK到这个ECS守护进程。 有没有人有这样的经验?

无法远程连接到dockerized mysql数据库

在我的AWS ec2服务器上,我安装了docker 1.9.1 。 在一个基于ubuntu:trusty官方docker镜像的图片test_image ,我试图设置LEMP(Linux,Nginx,MySQL,PHP)架构。 以下是我用来启动我的容器的docker命令: docker run –name test_1 -d -p 80:80 -p 3306:3306 test_image /bin/sh -c "while true; do echo daemonized docker container; sleep 5000; done" 我将端口80和3306暴露给主机的networking接口,并且还允许AWS的安全组允许到这些端口的入站连接。 安全组中的连接types是: MYSQL/Aurora ,协议是: TCP (我知道它不是很安全,它只能用于初始实现,生产设置不同) 我遵循这个DigitalOcean教程: https ://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 安装Nginx并启动后,我可以在浏览器中通过ec2的pubic ip进行testing,例如http://xxx.xxx.xxx.xxx显示默认的nginx欢迎页面。 在安装MySQL时,我在docker容器中遵循以下命令: apt-get install mysql-server mysql_install_db /etc/init.d/mysql start mysql_secure_installation 我已经给我的root用户提供了一个密码,在mysql_secure_installation期间,我已经允许远程访问root用户。 从容器内的mysql -u root -p命令将我连接到mysql数据库,但不是从容器外部。 另外从我的本地机器:我试着用mysql-client: mysql […]

弹性beanstalk应用程序找不到私有的docker映像

我正在尝试使用以下设置来设置简单的Elastic Beanstalk应用程序: Web服务器环境 预定义configuration:docker 环境types:单一实例 我的Dockerrun.aws.json具有authentication块,该authentication块是通过在本地计算机上运行Dockerrun.aws.json docker login命令创build的。 我已经将这些证书以.dockercfg文件的forms添加到S3存储桶中,并将必要的IAMangular色给予EC2实例,以便它可以使用authentication信息访问configuration文件。 但是,当我尝试启动实例时,创build过程失败,日志告诉我: Error: image mydockeruser/my-docker-app:latest not found 它说图像无法find,但图像是在那里(在私人回购),与“最新”的标签。 为了certificate自己,我可以去https://hub.docker.com/r/mydockeruser/my-docker-app/tags/ ,我可以看到标签名称为“最新”的图像,包括大小图像等 任何想法为什么Elastic Beanstalk在应用程序设置过程中将无法find图像?