一、免费额度及正常定价
1、AWS
I、免费额度
Amazon AWS 有分国内和国外两个版本,这里说的是国外版本,AWS 在日本、韩国、新加坡等亚洲区域拥有自建机房和骨干网,国内全程 NTT 线路。其免费体验的注册地址是:
AWS 免费套餐。
主要免费项目有:
Amazon EC2 750 小时/每月 Linux、RHEL、Windows、SLES t2.micro 实例使用时间;
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 t2.micro 实例:$0.016/小时(约 $11.9/月)
网络入站数据:免费
区域内入站数据:$0.01/GB(一般产生于有多个实例)
出口数据:前 1GB /月免费,10TB 以内 $0.14/GB
弹性 IP:已关联实例免费,未关联 $0.005/小时
一般使用 EC2 的都是大企业客户,主要是因为其相对稳定,个人客户可以考虑选择 LightSail ,CPU、内存、流量、硬盘打包销售,最低每月仅需 $3.5,首月还提供免费试用。
2、GCP
I、免费额度
GCP 全称 Google Cloud Platform,谷歌旗下云产品,目前在台湾、香港、日本、新加坡等亚洲区域已有机房,总的来说对大陆会更友好些(移动全程绕美国,联通部分绕美国,电信直连)。其免费体验注册地址是:
GCP Free Tier。
GCP 除信用卡外对免费体验限制不大,提供的 $300 可用于全部项目,包括主机、流量、CDN 等等,按使用量按分钟计费抵扣。其中以下项目是在一年体验期结束后仍然免费的(注意不含流量费):
每月 1 个 f1-micro 实例(仅限美国部分区域);
30 GB/月 硬盘,5 GB/月 快照;
5 GB/月 区域存储(仅限美国部分区域);
1 GB 存储空间的源码托管;
II 、正常定价
GCP 与 AWS 一样是按需计费,但是以分钟为结算单位(AWS 按时),并且每个机房的定价都是不一样的。以台湾机房为例:
f1-micro VM 实例:$0.009/小时(约 $4.6/月);
入口数据:免费(指网络到实例);
出口至同一区域产品数据:免费;
出口到中国境内数据:1TB 以内 $0.46/GB;
弹性 IP:已关联实例免费,未关联 $0.01/小时;3、Azure
I、标准试用
Azure 提供 $200 一个月的标准试用Azure 国际版免费试用套餐目前提供 1+12 个月免费套餐(即首月 $200 试用 + 12 个月免费套餐,不含国内世纪互联代理的 Azure,注册需提供银行卡、手机号)
免费套餐包含(不含首月,首月 $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 一年的学生订阅,注册地址(无需银行卡,概率需手机号验证,IP 与地址及手机号码不符无法通过,VOIP 手机号无法通过):
注册地址
免费项目有:
标准试用的所有内容;
$100 无限制余额;
III、正常定价
Azure 同样是按需计费,以最低配置(不同区域定价不同)为例:
A0 VM 实例:$0.017/小时(约 $13.39/月);
入口数据:免费;
出口至亚洲数据:前 5GB/月免费,10TB 以内 $0.12/GB;
其他标准定价参见官网说明;
Azure 学生订阅定额 $100/年,如果只开标准免费 B1S 配置,每月大约有 74GB 流量可用。
三、总结
通过上面说明,相信大家对几家平台的免费政策以及正常收费有了一定的了解,各家有各家的优势,比如 Amazon AWS 日本机房、Google GCP 台湾机房、Microsoft Azure 香港机房对大陆友好,但也有各自的不足,比如 Amazon 流量少、Google 流量贵、Microsoft 申请难等等。大家在具体采购使用前,可以先通过各家云平台提供的免费试用测试下,然后再评价是否符合需求。
最近的项目处于种种原因要放到亚马逊上面,也正好体验一下世界最大云计算平台的服务。于是又开始了漫长的爬坑路。不得不说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中心正确展示服务信息了。
系统环境:Linux version 3.10.42-52.145.amzn1.x86_64
卸载OpenJDK
#java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.1) (rhel-1.45.1.11.1.el6-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
#rpm -qa |grep java
java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.x86_64
tzdata-java-2012c-1.el6.noarch
#rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.x86_64
#rpm -qa |grep java
tzdata-java-2012c-1.el6.noarch
#rpm -e --nodeps tzdata-java-2012c-1.el6.noarch
#rpm -qa |grep java
#java -version
bash: /usr/bin/java: 没文件或目录
二软件、文件准备:
tomcat服务器:apache-tomcat-6.0.41.zip
志库:log4j-1.2.17.jar
Amazon API认证文件:credentials
JDK安装包:jdk-7u67-linux-x64.rpm
工程文件:
TestDemo.war
三、环境安装:安装JDK,安装Tomcat并配置
1.载JDK7
#wget --no-cookies --no-check-certificate --header "Cookie:
gpw_e24=http%3A%2F%2F
oraclelicense=accept-securebackup-cookie"
""
2.安装JDK7
#rpm -ivh jdk-7u67-linux-x64.rpm
说明:JDK默认安装/usr/java/目录
3.配置JAVA_HOME,CLASSPATH,PATH环境变量
#vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib
#source /etc/profile
4.载Tomcat6,
#wget
5.解压Tomcat6并[tomcat]/bin/cataline.sh文件始加入:JAVA_OPTS='-Xms512m -Xmx512m'
[tomcat]/webapps目录与项目相关文件文件夹删除安全
log4j-1.2.17.jar文件拷贝[tomcat]/lib目录
注意:解压完Tomcat通要启Tomcat测试能否通外网访问能需要给Instance添加安全策略
6.设置Tomcat机启
修改[tomcat]/bin目录文件权限执行
#chmod 755 *
/etc/rc.d/rc.local加入:
#vi /usr/local/tomcat/bin/
:/usr/local/tomcat/bin/startup.sh
7.启Tomcat并测试
服务启访问:
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)