为大家普及下云平台基础知识
常用的云平台:
云平台发展至今主流的平台已成N足鼎立之势,国外云有AWS、Google云、微软云,国内云有阿里云、腾讯云、AWS中国,私有云有OpenStack。
AWS这里单独拿出来强调下,国际版与国内版需要区别对待,因为两者的域名不一样,而且国内版比国际版缺少很多功能,所以很多AWS开源的项目拿到国内不见得能使用。虽然国内版目前还在不断优化,但是距离国际版还有不少的差距。所以如果要使用国内云,不推荐AWS。
云平台的计费,国外统一只有一种计费模式,流量模式,也叫后付费模式。国内的除开流量模式外,还有符合国情的包年包月模式,也叫预付费模式。后付费是按照水电煤的计费方式,用多少给多少钱;预付费模式是直接买断一台云服务器,价格大约是后付费的3-4折左右。
本人不推荐预付费模式,有以下几个原因:
1 包年包月的模式违背了云平台设计的初衷,云平台本意是多用户租用,大家只要拿着自己的账号操作即可,不需要关心水电煤打哪来,有多少量。而包年包月模式还需要关心自己的服务器IP等信息,相当于在云上租了台物理机,这不是云平台使用的思路。
2 包年包月并没有想象中的优惠,换句话说按流量并没有想象中那么贵。云平台会提供自动扩容缩容的技术,通过动态扩缩充分压榨机器性能可以使单台服务信价比更高,而包年的机器是无法动态扩缩的。
3 在CI、CD领域immutable的运维方式比面向IP的运维方式有巨大的优势,而immutable必须建立在流量型云平台的基础之上。
Openstack是非常流行的私有云技术,私有云在价格上可能会比公有云便宜(可能的意思是,也得需要考虑房产、电费、人力维护等成本),在使用时其实并没有公有云来的那么“痛快”。因为它的容量并不像公有云那样无穷尽也,饱和时也会遇到捉襟见肘申请不到资源的问题。
云平台的几种访问方式:
1 Console方式,最简单的,直接用账号密码登陆到云平台控制台进行操作。
2 API方式,HttpRestFul请求的方式向平台发起命令。
3 SDK方式,平台提供Java、python、go、php等语言发开的扩展包,集成到项目中,用编程语言调用这些包向平台发起命令。
4 命令方式,平台提供二进制的客户端供客户下载,下载安装后用linux命令方式向平台发起命令。
其中前两种是平台必备,SDK方式也基本是标配,命令方式只有极少平台支持。
以上是对目前优秀的云平台做了简单概括,要熟练使用平台还需要掌握它的基础名词,请注意我们这里侧重于平台的运算,存储方面这里暂不做介绍。
名词解释:
公共相关:
Region:区域,平台的空间范围的划分。
Zone:Region下的第二级区域,一个Region包含多个Zone。
其中Region是平台标配的区域单位,而Zone并不是每个平台都支持。为什么会有区域这种概念呢,你可以理解Region代表这这家云平台在某个省份拿下来的机房,经济发展程度不一样,机房的成本不一样,那么每个Region提供服务时相同流量的报价可能就不一样。再比如有些黑科技,RegionA支持,但是RegionB并不一定可以支持。
实例相关:
Instance:实例的基本单元,相当于平台上的一台服务器,承载运算的主体。
Image:镜像,平台会把Image划分为共有镜像、私有镜像、第三方镜像等,这个也好理解,Instance是由镜像产生的。
InstanceType:实例规格,选定了实例规格,也就选定了你所创建的Instance的CPU、内存、磁盘、网络等规格。实例规格的意义在于两方面,第一方便客户使用,客户不用自己去调配这些配置;第二方便平台内部计算承载力。
SecurityGroup:安全组,对云服务的访问权限,控制手段分为禁止和允许两种配置,按流向可以分为input和output两种,可以精确到端口,需要记住常用的端口。
网络相关:
LoadBalance:负载均衡,负责请求的转发。在云平台的API中狭义的LB是指的单独的一种实例,而单独一个LB实例是不具备任何负载均衡的能力的。所以广义的LB是一套负载均衡的组件,包括LB实例、转发规则、健康检查等。不同的平台对LoadBalance的分类方式也不同,有的划分为四层LB和七层LB,有的划分为传统型LB和应用型LB。
Listener:监听,主流的有tcp、udp、http/https三种监听,监听是LB用来观察其下面挂在的服务是否存活的手段,Listener会配置健康检查的策略。
VPC:Virtual Private Cloud,从服务的角度来看是虚拟私有云,表示的公有云运营商提供给用户的隔离资源的集合。它相当于是漂浮在公有云上的孤岛。真正让VPC变得强大的是它各式各样的连接技术。VPC并不是必须的,但是对于大型项目要接入到企业内容组成混合网络的服务时,VPC才有意义。
弹性伸缩:
ServerGroup:我们把一组具备相同镜像、相同服务、相同规格能力的一组instance的组合,称为是一个ServerGroup。ServerGroup在不同平台的实现方式略不一样,例如在AWS中是通过自动扩容组,在阿里云中是通过弹性伸缩组。与LoadBalance一样,狭义上的弹性伸缩组并不具备自动伸缩等能力,广义上配备有其它组建之后的ServerGroup才是我们想要的弹性伸缩组。
ScalingRule:伸缩规则,按照什么样的力度来进行一次伸缩。例如每次伸缩30%,或者每次伸缩5台实例等。ScalingRule并没有指定谁来触发伸缩,所以只配置ScalingRule也是没有任何意义的。
Schedule:定时任务,设置时间规则并执行某个ScalingRule。该功能适合潮汐规律的产品,例如我所从事的视频行业,中午11-2点是个小高潮,晚上7-10点是个大高潮,凌晨和早上是个低谷,所以我们可以按照产品特性来设置Schedule在这些时间段进行扩容缩容。
AlarmPolicy:告警策略,是弹性伸缩的核心。我们可以配置一些策略规则,例如CPU使用率大于85%时执行某个ScalingRule,或者内存使用率小于30%时执行某个ScalingRule。它与Schedule的区别是,更智能的动态的进行伸缩,可以规避我们计划外的流量激增的情况。
生产环境一般Schedule+ AlarmPolicy配合使用。
其它:
CDN:Content Delivery Network,内容分发网络。十年前,我刚入行做IPTV流媒体业务时,都是自己写代码来完成省份区县间片源的调度的,无外呼是客户机顶盒请求到中心服务,算法会根据IP重定向到距离IP最近的机房提供服务,但是该机房不见得有客户要点播的这个片源,所以还可能要从其它机房ftp过来或者重定向到其它机房。当时没有大数据存储,机房的磁盘可以存储的片子也有限,所以还要计算哪些事热门片源互相分享、哪些是冷门片源在该机房删除,等等等等。现在这一切的一切,从大数据存储和缓存技术过来的灵感,我们只需要租用云平台的CDN服务,就都帮我们搞定了。CDN干的事情,也就是十年前我写代码干的事情了,在距离客户最近的服务点上缓存服务内容,一来提高相应速率,二来减少核心数据中心的请求次数。了解了CDN的原理,也要注意云平台采购的问题了,例如你的服务对象都在国内,你买个国外的CDN,人家压根在国内就没有布网,也就用不起来了。
S3:这是AWS中的叫法,Simple Storage Server,键值对形式存储数据的一种云存储。其他平台也有类似的服务,只不过名称不同。
容器服务:随着Docker的发展,微服务的盛行,云平台产商们也与时俱进将K8s集成到平台中提供容器服务。
Saas服务:一些成熟的方案也被搬迁到云平台中,云平台供应商拿这些SaaS服务来卖钱,本质是带有某一个特定功能镜像的instance,不再是只提供简单的运算、网络、存储的租赁服务了。云平台推出SaaS服务国外厂商比较流行,例如AWS推出了Spinnaker服务来提供CI+CD的解决方案。
文章题目:为大家普及下云平台基础知识
URL分享:http://pwwzsj.com/article/cgpscc.html