背景
春节刚过去不久,不知道大家过的如何。这个春节各种红包业务满天飞,视频类APP刷的飞起,小编知道很多IT从业人员肯定过的不是那么的舒服。
对于春节洪水猛兽般的流量袭击,靠跪拜“机神”(服务器)是没有什么用的。不过小编走访了几个使用ECS客户,他们都纷纷表示今年春节服务非常的稳定,流量高峰平稳度过。
- 某ECS客户在春节期间收到业务监控报警,使用ECS OpenAPI快速创建上千台机器顺利扛住流量洪峰
- 某ECS客户在春节期间因为业务需要对云上一千多台机器进行轮转升级,批量升级、重启,保证了自身服务的可靠性
- 某ECS客户在春节期间将所有机器进行临时带宽升级,确保大促业务顺利进行
对比上面传统IT从业人员的束手无策,我们云上的客户遇到业务高峰以及流量洪峰的时候就表现淡定从容,轻轻松松升级(扩容)机器,顺利度过业务高峰。
弹性计算的优势
纵向伸缩
对于ECS来说,所有的组件都是可以向上升级的,比如CPU、内存、带宽、磁盘。当每一个单独的组件出现瓶颈的时候我们可以对单独的组件进行升级,而不用升级所有的组件,这个极大的节省了IT成本的支出。
横向伸缩
ECS支持大规模的扩容(创建),只要支持水平扩展的应用架构都能够通过创建ECS的方式来实现快速扩容。
多种计费方式
ECS提供三种计费方式:预付费、按量付费、竞价三种付费方式进行收费,总有一种付费方式能够让你的IT成本最小化。
资源任意组合
ECS的计算、存储、网络资源可以任意搭配任意组合,任意组件都可以使用最新功能。
开箱即用
ECS提供了大量初始化特性能够让你的ECS在购买启动之后立刻对外提供服务。
从零搭建可持续扩展的同城HA服务
前面说了这么多ECS的优势以及弹性能力,下面小编跟大家一起搭建一个可持续扩展的HA服务。
网络划分架构图
从架构图上我们能够看到网络类型是VPC,VPC环境具有安全风险低、运维管控难度小、IT成本可精细化管理等特点,所以我们建议使用VPC环境。因为有HA需求所以我们需要用到多可用区版SLB做HA服务,当主可用区不可用的时候会在较短的时间内切换到备可用区,从而实现HA。
入网流量是通过SLB进行转发进入用户VPC的,那么如果VPC内的ECS需要访问外部网络怎么办?这里就需要用到SNAT。这里大家可能会有疑问,前面SLB转发流量是为了HA,那么这里使用SNAT去访问外网是为啥?这里有两个原因第一个原因是出于安全性的考虑,如果每个VPC网络内的ECS都绑定一个EIP那么整个VPC网络被入侵的概率是非常大的;第二个原因是成本的考虑,使用SNAT可以使用共享带宽包从而节省成本。
在架构图上大家还可以发现每个可用区按照提供对外提供服务、对内提供服务两种类型将vpc划分成了两个子网,这里子网的划分比较重要后续安全组相关的内容也基于子网的划分。
网络划分Tips
根据不同环境划分不同子网
根据不同的网络环境进行子网的划分,比如对外提供服务的以及对内提供服务的。通过网段的划分可以方便后续安全组授权以及地址的管理。
这里还需要考虑之后的可扩展性,ECS跟弹性网卡都会占用私网IP地址,子网的地址不宜太小。
避免对每台机器使用EIP
EIP固然方便,但是处于安全以及成本的考虑我们应该避免对每台机器都使用EIP。
入网流量优先使用SLB
为了做到对外服务的高可用以及安全考虑,我们推荐大家使用公网SLB提供公网服务,并且配置多可用区。
出网流量优先使用SNAT
出于安全以及成本的考虑,VPC内ECS如果需要访问外网推荐大家使用SNAT。
使用跳板机访问内部ECS
前面提到了使用SLB以及SNAT的方式进行流量的管理,如果需要对每个ECS登录进行操作,我们推荐大家使用跳板机,并且将一个EIP绑定到跳板机上。
安全组架构图
在上一张网络划分架构图的基础上,我们根据服务器的应用特性将同种应用或者业务类型的ECS放入一个安全组中。跳板机单独放到一个一个独立的安全组中。VPC内所有安全组都需要对跳板机安全组进行入方向授权,从而能使开发运维人员从跳板机访问VPC内所有ECS。
安全组使用Tips
禁止将所有资源归属于同一个安全组
如果所有的ECS都归属于同一个安全组那么就做不到ECS之间的相互隔离,因为同一个安全组之间ECS是互通的。
不同应用归属于不同安全组
如果不同的应用属于相同安全组,假设一个应用需要对安全组规则进行变更,那么这个变更操作极有可能误伤其他的应用,导致其他应用服务异常。
严格限制公网安全组规则
提供公网服务的ECS是最有可能被入侵的,所以我们需要严格限制公网安全组规则,从而减少被入侵的风险。
安全组规则最小集原则
为了极大限度的避免被入侵,以及更好的管理网络访问规则,我们建议大家默认拒绝掉所有规则,然后根据需要添加对应的放行的规则。
安全组之间授权优先使用CIDR方式
因为安全组中能够添加的ECS以及网卡数量是有上限的,而安全组规则的条目数也是有上限的,为了后续更好的进行扩容,我们推荐大家使用网段的方式进行安全组之间的授权(在上面网络划分的时候也提到了扩展性这一点)。
创建ECS的方式
前面介绍了如何划分网络以及如何设置安全组以及安全组规则,接下来小编将给大家介绍几种创建ECS资源的方式。
控制台
通过网页我们可以直接购买ECS,也可以根据已有的ECS或者购买历史再去购买新的ECS。
OpenAPI
ECS提供了OpenAPI的方式方便用户进行二次开发,也可以方便用户根据自己的需求去创建ECS。能够创建ECS的有两个OpenAPI分别是RunInstances
和CreateInstance
,其中RunInstances
是异步接口能够同时批量创建最多100台ECS,而CreateInstance
是同步接口每次只能创建1台ECS。
AutoScaling
弹性伸缩,用户可以根据自己的需求按需、定时创建ECS,能够始终将自己的ECS容量始终维持在跟业务流量匹配的数量上。