AWS服务建设之路-Docker集群

AWS服务建设之路-Docker集群,第1张

最近的项目处于种种原因要放到亚马逊上面,也正好体验一下世界最大云计算平台的服务。于是又开始了漫长的爬坑路。不得不说AWS的管理交互台设计充满了工业气息,新手很难上手,但熟练工会觉得很直观。
简单来说分4步:

ECR是私有镜像仓库,先把自己的镜像上传上来,这一步的坑就在于要上传镜像不能直接 docker login 需要

ECS有一个很重要的概念,任务定义。这个概念类似于 k8s 的 pod。任务定义抽象出了任务这个概念,一项任务可以包含多个docker镜像及对应的参数/环境配置,并且拥有CPU,内存限额。
任务定义拥有版本号,只能创建新版本不能修改以前版本。
而在集群中的调度则是以任务定义为对象。
所以我们为我们每一个服务创建了1个任务定义,一个任务定义包含1个镜像。

这里有3种网络模式供选择:

大部分情况我们都使用桥接模式,少部分情况使用 awsvpc 。主机模式则尽量不要使用,不利于编排。 awsvpc 的具体使用场景会在下文服务发现章节介绍。

动态端口映射 技术,是指将容器在宿主机上的外部端口随机映射,只在桥接模式下有效。

勾上日志配置,ECS就会自动把镜像的标准输出定向到 CloudWatch,就可以去那里查看镜像日志了,当然专业的日志系统还是得ELK。

ECS有2种集群,Fargate 与 EC2 Linux。

Fargate是很酷炫的架构,特别是在资源占用量不稳定,时间不确定的情况下很合适。而且全部使用awsvpc网络模式,所有的服务都可以拥有独立IP,纯正的无服务器架构。只有一个缺点,贵(同样资源量是EC2的3倍价格

建议创建空集群,再自行添加服务器,不然容易触发一些 keng

上面说了任务定义,那么任务这个概念也很简单,被运行的任务定义。
一个任务可能包含多个容器,这个任务可能是在有限时间内执行完毕就停止的,比如一次性脚本,也可能是无限运行的,比如nginx服务器。

服务这个概念比较复杂,一个服务会管理一个任务定义在运行时的方方面面

服务没有停止功能,只能修改任务数为0。
服务删除后,需要手动停止已经运行的任务。

AWS提供基于Router53(DNS服务)的服务发现,其实很难用,awsvpc模式的很方便,桥接模式下特难用。
在awsvpc模式中 ,因为每个任务都有自己的IP,所以端口可以直接固定,不会存在冲突,配合基于Router53的服务发现可以直接完成完美的服务发现--无论如何更新重启服务,总能通过固定域名访问到服务。但因为一台服务器只能绑定3张网卡,所以只能启动3个awsvpc模式容器。
在桥接模式中 ,每个任务都使用宿主机的ip,以及随机分配的端口,所以服务发现需要带上端口,不然也不能正常发现。AWS提供SRV类型的DNS记录用作服务发现,本身是没有问题,但SRV并不是被广泛接受的记录类型,浏览器与网络库均不能解析SRV记录,所以要访问服务还需要定制DNS解析。
所以我们最终选择使用Eureka作为服务发现服务,使用awsvpc作为补充的服务发现服务,比如将Eureka本身及xxl-job等使用awsvpc部署。

在选用了Eureka之后,又遇到了问题。因为使用了动态端口映射,所以向Eureka注册的端口不是Spring的监听端口,并且容器内部无法知道宿主机的ip与端口。
这里通过多种方式配合破局:

不过要注意,启用元数据服务,需要修改ECS代理配置,而这个配置是在集群创建时就写入服务器的,所以要修改ECS代理配置,必须要先修改自动伸缩组的初始化脚本,再删除伸缩组内所有服务器,再重新添加服务器。

这样就可以在Eureka中心正确展示服务信息了。

从已有的机器自己制作EC2的AMI

我一直用AmazonAWS提供的免费虚拟主机来服务我的网站可靠云服务根据我的观察,虽然是t1micro的机型,但是稳定性非常好,比hostmonster的VPS稳定多了

然后我用另外一张xyk申请了另一台机器,打算再部署一个网站

我用的系统映像文件(AMI)是亚马逊提供的Ubuntu1204,这个AMI挺方便的,就是太简洁了,Apache,PHP,MySql都要安装,要是新机器上我再装一遍,估计能花掉我一晚上时间

我就想:”何不从老机器上自制一个AMI,供新机器使用?”事实证明,Amazon的支持机制非常完备,一路非常顺利!

1从已有的机器自己制作EC2的AMI

期间有一些选项,基本不用动,使用默认的就好了提交之后,AWS大概需要五分钟左右来完成任务当看到AMI的状态为从pending变成available的时候,就表示AMI制作好了

2把AMI分享给另外一个AWS账号

选择Permission之后,你要是完全没有安全上的考虑,可以把AMI设置为public,那也就是说任何一个人都可以使用你的AMI不过这个对我不适用,我选择保持permission为private,但是给我第二个账号增加使用权限注意这里需要的是AccountNumber,不是AccountName

2使用AMI创建新EC2Instance

3使用AMI创建新EC2Instance

先选择MyAMIs,然后在搜索框里填写你刚才创建的AMI的名字,下面就筛选出来了,点解”select”就可以往下走

后面的步骤很简单,值得注意的是,在CreateKeyPair的时候,选择ProceedwithoutaKeyPair为什么?因为你用的AMI里已经有了你的公钥对啊

4修改新EC2Instance的安全规则

不知道AmazonAWS搞什么飞机,新机器只有一个默认安全组,其规则是只允许内网访问,并且AWS现在还不支持机器更改安全组所以你需要手动修改新机器所在的defaultsecuritygroup的权限一般来说,你需要添加TCP22,TCP80,TCP443这三个端口的访问权限上

5访问你的新机器

修改后的防火墙规则差不多是一分钟左右就生效的,你等上一分钟,就可以用telnet访问22端口了

Ubuntu的AMI是不支持密码登陆,只支持公钥登录由于公钥已经由AMI带过来了,因此你用客户端,比如SecureCRT,访问新机器的时候,只需要复制一个新session,然后改一下主机地址就好了,省去了登录时候创建公私钥对的麻烦

如果你一路没有问题走到这里,你的新机器就ok了,实际上我这次复制新机器的时间,还没有我写这篇文章的时间长

终于决定开始创建自己的个人网站。我在这方面的经验和知识,几乎为零。因此。还是主要靠Google和别人的文章做指导。鼓捣了一会儿,成功了,为各位朋友总结一下。也算是我的第一篇 博文 。

目标:建一个非常简单的,朴素的 个人站点 。最主要的是博客功能。(当然将来能够加入一些广告链接赚银子或者被打赏就完美了。)

经过调研(调查和研究)发现,建站不简单也不难,主要是:

 1 申请(购买)一个个人域名。
 2 找到一个服务器,Host你的网站的内容,也就是页面。
 3 配置服务器,搭建网站。

前两步简单,最后一步水就很深了。我没经验,但是我们一步步说到做出风格简单的博客,大概10分钟搞定。快的原因主要是通过AWS Lightsail托管一切,并且使用建站神器WordPress的主题模板。

第一步,申请域名。域名,也就是alibabacom和googlecom这样的东西。目前出来了许多便宜的新后缀。比如说123me,或者说我用的huangjiatech( 欢迎访问 ,目前里面可能只有一篇文章,但是我会继续写)。我在阿里云万网买的,打折价199元,用10年。可以购买域名的地方很多,国内有阿里云,国外有狗爹(GoDaddy)。大家自己搜一下。选个物美价廉的,适合自己业务需要的。买好D的域名如图,详细购买过程不表。

第二步,寻找一个地方存放网站。现在基本上没有人从头开始自己采购并配置服务器了,麻烦。网上虚拟服务器很多,也就是所谓云服务器。以前比较流行的也是狗爹,原来我用过,买了域名之后,他会推荐你继续买cPanel。cPanel是虚拟主机控制系统,虚拟主机也就是放网页的地方,它的界面我觉得还是会另我这样的外行眼花缭乱。

通过GoDaddy购买域名然后,用它的虚拟主机通过CPanel来管理网站,在上面装一个WordPress建站。这个事情我以前是做过的。难度不大不小。狗爹从域名到->cPanel再到->WordPress也算是一站式服务吧,相当于建站的标配。有什么不明白的,也可以问客服。不过我当时知识量很少,问了客服也不明白,当然客服也不可能叫你怎么建站,只是负责解释自己的产品是什么。我租用的这个cPanel大概几百美元5年吧。

所以这次我就想换个思路,有没有更方便(省钱)的方法。我就想到了阿里云的ECS云服务器,或者是AWS的EC2虚拟主机,能不能自己把WordPress这个超级建站工具直接安装在云服务器上面。

这种云服务器,有好处,便宜,轻量级,而且可以是月租的,安装咱们这个人网站用量,一个月几美元或者20,30人民币的主机足够了。玩一玩,随时可以停。不像狗爹上面一次几百的投入。

我就搜索了一下,关键字是AWS和WordPress,发现一篇文章,介绍如何自己在虚拟服务器上面安装Apache,PHP以及 MySQL,然后才是WordPress。大家可以读一读这篇不错的文章: 链接在这里 。然而我觉得这种做法对我这种无知的人来说很复杂。

我发现另外一篇文章,可以通过Amazon Lightsail 快速建立WordPress服务器实例 。阅读后,我觉得这就是我所想要的方法。原因如下:

 1 忘记cPanel,忘记服务器,忘记Linux,忘记Apache,PHP以及 MySQL。
 2 只要你有域名,直接一步一步跟着程序走,直接进入WordPress环节。
 3 便宜,最便宜的计划每个月35美元,也就是我现在用的。

好,下面开始具体步骤。大概10分钟后,你就能够看到上面所示的WordPress。然后一键发表自己的网站和博客文章了。

首先,注册一个AWS账户,一年内很多服务免费,顺便学AWS。这里略过一百万字。(这个过程不在所说的10分钟之内,大概可能需要30分钟,而且需要xyk信息)

然后,在AWS控制台中搜索Lightsail,进入配置界面。

选择创建实例:

选择服务器的区域以及映像,可以看到,平台可以是Linux或者Windows,而蓝图方面:除了最常见的建站神器WordPress外,还有许许多多我不知道是什么的东西。我想他们可以实现各种不同的网络服务功能。

在选择付费计划并给实例起名字之后,就创建实例吧。

返回后实例出现了,这时候点击**方框:

此时将连接实例,以SSH(一种加密协议)的方式到虚拟主机中,不用害怕这个黑乎乎的屏幕,我们其实只是需要通过一个命令在这里拿到WordPress的用户密码。

下面在黑乎乎的屏幕的命令行中键入命令:
cat $HOME/bitnami_application_password

就可以得到上面红圈圈中显示的密码,把它记录下来。然后回到Lightsail的WordPress实例界面,拿到红箭头处所指的IP(注意,你的我的和所示的可都不一样)。这个是你网站的公有IP地址。

在浏览器中,输入>

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/13350875.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-31
下一篇2025-08-31

发表评论

登录后才能评论

评论列表(0条)

    保存