使用AWS ASG对系统进行高可用改造

云平台监控系统在2020年3月上线后发现每半小时服务器的CPU使用率达到波峰,这段时间有时操作会有卡顿感,持续10分钟左右回退成波谷,恢复正常。研究发现对一些系统关键的资源监控指标(如CPU和内存的使用率过高)几乎所有客户都配置了每半小时执行一次,多个客户多个定时任务同时执行的时候,CPU出现波峰现象。为了解决这个问题,通过AWS ASG对原来的单服务器系统进行了如下改造。

  • 将系统的数据更新服务分离开来,形成2个相对独立的服务:查询服务和数据更新服务。由于系统的性能瓶颈出现在监控(查询)服务上,因此对监控服务设置ASG,满足HA的需求。同时对DB增加AWS只读副本 read replicas提高性能。
  • 对从查询微服务送来的Request放到SQS队列服务来解耦

  • 通过ALB的DNS配置提供统一对外域名控制。
  • 同时对所有服务进行定时每天备份,来确保发生意外时,数据更新服务可以在最短时间内恢复。
  • 对代码中每次需要log的地方添加correlationID,方便在多服务器情况下进行排查。
  • 这次有些遗憾的是没有时间做ELK统一日志管理功能,它对多服务器系统下日志查询还是有帮助的。

附:

A. ASG前面需要使用Load Balancer服务,之前AWS只有ELB,2016年之后开始支持第二代Load Balancer,将7层应用和4层网络区分开来,它们之间区别可以Ref: ELB vs. ALB vs. NLB: Choosing the Best AWS Load Balancer for Your Needs - IOD

B. 另一个关于AWS GateWay功能相关的讨论:

One of the biggest reasons we use API gateway in front of our lambda functions instead of using an ALB is the native IAM (Identity and Access Management) integration that API GW has. We don't have to do any of the identity work ourselves, it's all delegated to IAM, and in addition to that, API GW has built-in request validation including validation of query string parameters and headers. In a nutshell, there are so many out of the box integrations what come with API GW, you wind up having to do a lot more work if you go the route of using an ALB.

From

你可能感兴趣的:(AWS,HA,aws,云计算,java)