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中心正确展示服务信息了。

打开PuttyGen工具
2 点击Load加载pem证书
3 点击Save private key来保存ppk证书
新生成的证书就可以在Putty里使用了。
大致的使用方法是在Putty的设置Connection->SSH->Auth里添加ppk证书

看你要什么配置了 如果是国内服务器同配置下 阿里云肯定要便宜些的 而且也要好些
如果是国外的话 AWS要好些 毕竟不管是哪的服务商都是具有本土优势的
就像我们在国内买美国的虚拟主机,美国服务商的永远比国内服务商卖得便宜

Omniverse 需要使用 RTX 2070 以上的显卡,因此使用 Cloud Service 来搭建环境

可以选择 Microsoft Azure 或者 Amazon AWS,这里演示 AWS 环境,Azure 服务器配置会略有不同

AWS 网页链接

首先要创建账户,之后来到 EC 控制台,点击右上角的 Launch Instances

在 Community AMIs 中搜索 IsaacSim-Ubuntu-1804-GPU-2021-05-25 这个型号

实例类型选择 g4dn4xlarge

将 Auto-assign Public IP 这一项设置为 Enable

Storage 确保分配 8G 以上的硬盘空间

无需设置

向本机 ip 开启全部端口

最后就可以点击 Launch Instance 启用了

第一次使用可能需要向 Amazon 申请 GPU 的使用数量权限,为了避免 AWS 被用来挖矿等,Amazon 默认不给新账户启用 GPU 使用权限

最后,实例启动成功后就可以使用 WinSCP 进行访问

初次登陆后,使用 sudo passwd 来设置密码

过程中有几个提示,大概就是什么环境路径不确定、需不需要 32 位支持等等,直接一路 OK 过去就行

界面会很长时间不动,这个时候后台还在正常安装,耐心等待即可

目前推荐的驱动版本是 46067

输入下面这个命令来确认安装成功

官方文档说上面三项在 AWS 中已经提前安装好了,但以防万一我们都重新做一下

This section shows you how to run the Omniverse Isaac Sim container on remote Ubuntu workstation

>现在很多云平台都有提供免费试用服务,比如Amazon AWS 12 个月免费套餐、Google GCP $300 Free Tier、Microsoft Azure $300 Free Tier、CenturyLink $500 Free Tier 等等,当然了,还有其他的云厂商如阿里云也有免费体验活动,这里就不一一列出来了。
一、免费额度及正常定价
1、AWS
I、免费额度
Amazon AWS 有分国内和国外两个版本,这里说的是国外版本,AWS 在日本、韩国、新加坡等亚洲区域拥有自建机房和骨干网,国内全程 NTT 线路。其免费体验的注册地址是:
AWS 免费套餐。
主要免费项目有:
Amazon EC2 750 小时/每月 Linux、RHEL、Windows、SLES t2micro 实例使用时间;
Amazon S3 5GB 标准存储;
Amazon EC2 Container Registry 500M/月;
Amazon CloudFront 50GB 传出数据;
Amazon Elastic Block Storage 最大 30GB 以及 1G 快照;
所有 AWS 服务的共计 15GB 的带宽传出;
总结就是,可以开一台 Windows 或 Linux 虚拟机,配置为内存 1G,硬盘最大 30G,月流量 15GB。
II 、正常定价
为避免不需要的支出,一般选择的是 Amazon AWS 按需计费,此服务按小时结算,以免费额度的套餐内容为例:
AWS EC2 t2micro 实例:$0016/小时(约 $119/月);
网络入站数据:免费;
区域内入站数据:$001/GB(一般产生于有多个实例);
出口数据:前 1GB /月免费,10TB 以内 $014/GB;
d性 IP:已关联实例免费,未关联 $0005/小时;
一般使用 EC2 的都是大企业客户,主要是因为其相对稳定,个人客户可以考虑选择 LightSail ,CPU、内存、流量、硬盘打包销售,最低每月仅需 $35,首月还提供免费试用。
2、GCP
I、免费额度
GCP 全称 Google Cloud Platform,谷歌旗下云产品,目前在台湾、香港、日本、新加坡等亚洲区域已有机房,总的来说对大陆会更友好些(移动全程绕美国,联通部分绕美国,电信直连)。其免费体验注册地址是:
GCP Free Tier。
GCP 除xyk外对免费体验限制不大,提供的 $300 可用于全部项目,包括主机、流量、CDN 等等,按使用量按分钟计费抵扣。其中以下项目是在一年体验期结束后仍然免费的(注意不含流量费):
每月 1 个 f1-micro 实例(仅限美国部分区域);
30 GB/月 硬盘,5 GB/月 快照;
5 GB/月 区域存储(仅限美国部分区域);
1 GB 存储空间的源码托管;
II 、正常定价
GCP 与 AWS 一样是按需计费,但是以分钟为结算单位(AWS 按时),并且每个机房的定价都是不一样的。以台湾机房为例:
f1-micro VM 实例:$0009/小时(约 $46/月);
入口数据:免费(指网络到实例);
出口至同一区域产品数据:免费;
出口到中国境内数据:1TB 以内 $046/GB;
d性 IP:已关联实例免费,未关联 $001/小时;3、Azure
I、标准试用
Azure 提供 $200 一个月的标准试用Azure 国际版免费试用套餐目前提供 1+12 个月免费套餐(即首月 $200 试用 + 12 个月免费套餐,不含国内世纪互联代理的 Azure,注册需提供yhk、手机号)
免费套餐包含(不含首月,首月 $200 以内都免费):
750 小时 B1S 虚拟机 (Windows 或 Linux 各一台);
64G x2 托管磁盘;
15G 出站数据;
250G SQL 数据库;
需要注意的是,12 个月免费套餐是在 $200 结束后开始,需要手动升级成即用即付订阅才能享受。这里也给大家提个醒,升级后超出免费套餐就会扣钱了(与 AWS 一致),而且必须严格执行免费套餐的内容,比如磁盘免费的是高级 SSD P6 64GB,你开 32 GB 的虽然容量小了,但 Azure 正常收费!
2019年更新:免费套餐建议通过官方的免费服务开通,不要自己在虚拟机里直接创建,这样就可以避免莫名其妙被收费了,可以开 Linux 和 Windows 各一个虚拟机,位置可选东南亚、美国东部、美国西部2、美国中部、西欧五个数据中心。
II、学生试用
Azure 提供 $100 一年的学生订阅,注册地址(无需yhk,概率需手机号验证,IP 与地址及手机号码不符无法通过,VOIP 手机号无法通过):
注册地址
免费项目有:
标准试用的所有内容;
$100 无限制余额;
III、正常定价
Azure 同样是按需计费,以最低配置(不同区域定价不同)为例:
A0 VM 实例:$0017/小时(约 $1339/月);
入口数据:免费;
出口至亚洲数据:前 5GB/月免费,10TB 以内 $012/GB;
其他标准定价参见官网说明;
Azure 学生订阅定额 $100/年,如果只开标准免费 B1S 配置,每月大约有 74GB 流量可用。
三、总结
通过上面说明,相信大家对几家平台的免费政策以及正常收费有了一定的了解,各家有各家的优势,比如 Amazon AWS 日本机房、Google GCP 台湾机房、Microsoft Azure 香港机房对大陆友好,但也有各自的不足,比如 Amazon 流量少、Google 流量贵、Microsoft 申请难等等。大家在具体采购使用前,可以先通过各家云平台提供的免费试用测试下,然后再评价是否符合需求。


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

原文地址: http://outofmemory.cn/zz/12634989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存