AWS全称Amazon Web Service,和Amazon的关系就像阿里云和淘宝的关系。大家都是电商起家,一个卖书,一个为商家提供线上商铺。做着做着,用户越来越多,业务需求越来越复杂,要求也越来越苛刻,面对的技术挑战随之越来越大。比如巨大的流量会在促销活动时,一股脑儿涌过来。用户遍布在世界各地,如何给不同区域的用户提供良好的用户体验。如何按照需求动态的调整服务器的配备,避免浪费,等等。这些统统都是他们自己面对过的问题。然后这些聪明的工程师们想到了办法,并完美的解决了这些问题。这是起源。
在软件领域,大家面对的业务场景多多少少都会不太一样,但技术方案大部分却是类似的。如何让这些沉淀下来的技术经验发挥更大的价值,而这一部分的需求又是如此的大,“歪打正着”。这是AWS们的由来。
按照二八定律,和Amazon有同样高要求的服务毕竟是少数,绝大多数的服务并没有那么复杂的应用场景。今天我们就来看一看用AWS,如何满足大部分Web服务对基础设施的需求:
自定义域名,默认HTTPS为用户提供稳定可靠的服务,七层负载均衡服务可以按需拓展,水平拓展保证服务的安全性,公有服务和私有服务的隔离和交互自定义域名,默认HTTPS
互联网联接了世界,而域名则是这世界的入口。拿sunwei.xyz举例,用AWS的服务支持,如下所示:
DNS
如果要支持HTTPS?根据 ,HTTPS属于应用层,Route53只是负责网络层,自然对应的服务不应该Route53,而是ALB。AWS有提供Certificate Manager服务提供免费的证书,也可以参考 这篇文章来进行更直观的理解。毕竟知其然,并知其所以然才能做计算机的好朋友嘛。
为用户提供稳定可靠的服务,七层负载均衡
ALB
根据上图,我们看到了针对sunwei.xyz的服务分布。可以看出:
那么ALB是如何做到精准投递的呢?
服务可以按需拓展,水平拓展
流量已经清晰的知道从哪儿来到哪儿去了,那么接下来就是服务的可靠性,我们可以按需来配置拓展规则:
Scalling Group(可拓展群组):
Capability(能力): 可以指定最大,最小的服务器数量。数量越多,可承载的流量就越大。Policy(政策): 可以更加明确不同情况下服务器是新启还是关停;在服务启动的过程中多长时间不受政策的干扰,也就是冷静时长,以避免陷入正在准备,一直响应政策的死循环Alarm(预警): 当碰到了以下的实际预警时,需要能采取措施,消除预警。光预警,没有行动是没有意义的。比如当cpu的使用量到达一定值时,需要采取行动保证服务的安全性,公有服务和私有服务的隔离和交互
可以看到服务的可靠性已经得到了保证,那服务的安全性呢?哪些服务因该是公有可访问的,而哪些服务是不因该被暴露到公网的?
入网:
公网流量,首先经过Internet Gateway,经过路由器Router的转换,通过EIP(Elastic IP)访问公网流量不能直接访问私有子网(Private Subnet)里的服务出网:
公有子网(public subnet),直接通过路由器Router,通过Internet Gateway访问外网私有子网(private subnet),不能直接访问外网,需要通过路由器Router,将自己请求投递到NAT gateway(网络地址转换网关),再像公有子网的服务一样,通过路由器,经Internet Gateway发出以上流程还有一个专有的名词,叫VPC(Virtual Private Cloud - 虚拟私有云),是AWS用来协调管理网络的通用组件。
可以看出AWS提供了所有我们需要的网络服务,来满足我们的需求。如何管理好这些服务将会是另一个话题,如AWS推出的CloudFormation,我们可以通过这个服务,很方便的对这些基础设施进行管理,就像现在DevOps所推崇的IaC - Infrastructure as code(基础设施即代码)。
待续