如何利用AWS服务构建覆盖全球的服务架构?
摘要:一、背景 当我们在做全球业务时,例如网站机器游戏,为了支撑全球用户,我们会在不同的位置搭建节点,以满足业务功能和响应实效。 我们会搭建一个这样的架构满足初步的使用。 能用是ok的了,会有什么问题呢? 1、因为服务独立,上架1个SKU需要
一、背景
当我们在做全球业务时,例如网站/机器/游戏,为了支撑全球用户,我们会在不同的位置搭建节点,以满足业务功能和响应实效。
我们会搭建一个这样的架构满足初步的使用。
能用是ok的了,会有什么问题呢?
1、因为服务独立,上架1个SKU需要多次发布到不同的服务。
2、因为域名过多,发布时需要频繁的退出、登录切换不同的二级域名,非常繁琐不说,还可能会遗漏。
3、后期处理数据统计、报表、看板、设备地图,耗时费力。
4、这还是单节点,未考虑高可用的情况下,多区域、多节点部署服务器导致运维难度增加、过多的财务开支。
5、各个节点各玩各的。
有什么方式可以解决这些问题?
AWS服务组件很好支持。
二、AWS架构
AWS提供了非常丰富的组件,列几个常用的:
1、Route 53 负责域名解析流量管理健康检查,高可用可以用到它。
2、VPC 虚拟私有网络,可将同一区域的服务器、数据库置于同一内网段,提升访问速度。
3、CloudFront CDN加速,可以给访问请求、对象存储加速。函数功能极其强大,可配置HTTP、HTTPS的请求跨域,可识别全球流量来源,根据来源分发到不同区域的节点。
4、EC2 服务器,内含了负载均衡器ELB、目标组,可实现同一地区的服务器的负载均衡和高可用。结合CloudFront可将流量分发到就近的服务。
5、Aurora and RDS 数据库,Aurora 作为全球数据库,已实现主从备份,可在1s内实现全球数据同步,结合Route 53的短域名实现读写分离。
6、S3 对象存储,OSS存储图片、视频、文档、音频等。
7、Certificate Manager 安全凭证管理,可申请和管理证书。
架构完是这样的。
三、干活,简单的一笔带过
1、将外部域名解析到Route 53。
2、在Certificate Manager申请证书。
3、在拟定的区域创建VPC内网。
4、购买服务器和数据库时选择上面的创建的VPC内网。
5、在创建Aurora数据库时需要选确认某一个区域为主集群,主集群下会创建写入器实例、读取器实例。
再创建其它区域的读取实例,如下图:
6、在Route 53创建一个私有的短域名,用于数据库连接,无需在域名供应商购买。我这里用db.com
7、将二级域名指向到Aurora的写域名指向到Aurora的写入器实例的DNS(路由策略:简单),
读域名指向到多个读取器实例的DNS(路由策略:延迟)。数据写入到主库后,1s内可同步到所有的从库
8、在EC2购买服务器后,新建目标组,将服务器添加到目标组中
9、在EC2创建负载均衡器,这里分NLB(服务器之间用)和ELB(服务器内部服务之间用),层级和颗粒度不同。
这里创建NLB,添加转发到的目标组到侦听器,注意选择VPC。创建完即可通过DNS访问。
10、创建CloudFront,将需要经过CDN加速的域名添加到备用域名,添加第2步创建的证书,源添加到访问目标的DNS。成功后CloudFront会分配域名。
11、在Route 53将经过CloudFront加速的域名指向到CloudFront分配域名上。
12、在Route 53创建NLB的健康检查,成功后生成ID。
13、在Route 53添加故障转移域名,用于服务区域之间的高可用,无需额外采购服务器
14、在CloudFront创建函数,将请求按照国家和地区分发到相应的服务器。
