为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Cloud 微服务(五) 部署到AWS ECS

标签:
Spring Cloud

AWS是亚马逊托管的云服务,其中ECS是亚马逊的EC2实例在容器方面的优化,自带docker,而且每个机器都有个亚马逊实现的容器"ECS agent"来负责容器的治理,另外Spring Cloud本身也有对AWS的支持,封装了AWS的服务,叫做spring-cloud-aws。我们在上一篇文章实现了微服务的docker化,下一步可以把我们的服务发布到ECS上对外提供服务。

ECS层级结构

webp

mind_diagram_2 (2).png

创建一个集群 Cluster

集群是ECS最大的一个层级,集群的选择通常考虑地理因素,比如国内访问多的话就考虑在东京建立集群,目前AWS中国还没和其他AWS互连,而且只能使用部分功能,韩国区没有ECS服务。创建过程中特别注意Key pair一定要预先定义好,然后在这里选择一个Key pair,笔者就试过没有设置Key pari导致无法ssh到创建的实例上。Number of Instances代表我们想要开的实例数。

webp

image.png

这里的VPS是设置一个虚拟的内网,有了这个才能更好地构建一个内网微服务。


webp

image.png


Security Group其实定义的是防火墙相关的端口开关,这个在后面会用到。


webp

image.png


整个创建过程需要几分钟,创建完就能看在面板上看到我们刚创建的微服务了,集群页面会展示运行的服务数,任务数,CPU和内存。

webp

image.png

创建一个服务 Service

一个集群可以运行很多服务,Number of tasks定义了预期要运行多少个task,如果目前运行的task低于这个值,ECS会自动发起task满足这个值。

webp

image.png


Task Placement 定义了当给定数量task要启动时,ECS会优先把task按照一定的算法启动到某个实例上,比如spread代表平均地放置task,random代表随机。下面的ELB和Auto scaling分别是负载均衡和自动扩展功能。

webp

image.png


Service创建出来的时候的面板:

webp

image.png

创建一个任务 Task

创建任务时候可以选择docker的联网方式,分别是bridge和host,默认的docker都是bridge方式。

webp

image.png


Task可以添加docker container,并且为每个container配置不同属性。这里定义使用的镜像,待会我们会创建一个镜像。为了防止突然升高的内存导致的高昂费用,可以设置内存最大值。这里说一个笔者遇到的坑,128兆内存其实是不够运行Spring Boot应用的,我在创建过程中使用了默认的128兆内存,导致微服务刚起来没多久就因为超出内存导致Task被干掉,同时Service里定义了最小存活Task为1,所以每次被干掉之后又会重新启动一个Task,导致了服务一只在不断循环重启,所以对于网络应用这里的推荐内存值是300-500兆内存。
Port mappings实现的是docker端口的映射。

webp

image.png


Essential代表它是这个任务的主要容器,如果这个容器失去联系了,Task将被Kill掉,这个也是导致上诉死循环的一个重要原因。

webp

image.png

创建Container Registory(docker镜像仓库)

创建镜像很简单,只要把上面显示的命令行在本地镜像上执行一下就可以了,具体操作类似GIT把本地仓库push到远程仓库。

webp

image.png


把Eureka Server和我们的微服务推到远程的docker仓库之后,如图所示可以看到这两个Image。

webp

image.png

在ECS上部署我们的微服务

按照上面的任务创建方式创建一个任务,任务里面运行两个docker,分别是我们的Eureka Server和一个简单的服务

webp

image.png


这时候update我们的Service


webp

image.png


等一段时间后就能看到我们的服务正运行在ECS集群上了

webp

image.png


这时候还有最后一步,因为我们设置了防火墙,所以要去防火墙开启8081端口和8870端口,因为我们的服务运行在这两个端口上。

webp

image.png

webp

image.png


到这里,我们就可以用ECS实例的公网地址访问我们在AWS上创立的第一个微服务了。

最后附上官网文档上ECS的一个结构图


webp

ECS层级结构(1)



作者:Lin_XJ
链接:https://www.jianshu.com/p/1617d6948ee8


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消