java - 如何自动扩展 Java War 部署设置
问题描述
我在AWS EC2 Ubuntu Linux 机器上有一个Java Tomcat War部署设置。这个服务器基于一些 API 和一些计算。现在,它消耗了 15% 到 20% 的服务器 CPU 利用率。有时,它会上升到 80%(极少数情况)。如何动态自动缩放不同 AZ 上的多个设置?
我有亚洲孟买地区,它有三个可用区,我只部署在一个区中。如果负载上升,我会手动将实例添加到不同的可用区。但是我不知道如何在没有手动设置的情况下动态地执行此操作,因为 AWS 自动缩放组对无状态的事物所做的。
每条评论都将受到欢迎和赞赏。
解决方案
您需要某种方式让实例在没有干预的情况下完全运行。这往往是复杂的部分,没有一个“答案”。它通常意味着以下两种情况之一:
- 在实例启动时设置实例的 cloud-init 脚本(直接使用 bash 脚本或使用 Chef、Puppet 等配置管理工具)
- “黄金映像”,即已完全设置并可以在启动后立即开始服务的 AMI
完成后,您可以创建一个启动配置来定义实例的外观 - 实例类型、磁盘、AMI、用户数据(云初始化脚本所在的位置)、机器角色、安全组、等等
然后创建一个自动缩放组并将 LC 附加到它。自动缩放组将创建您的实例,而不是您创建它们。如果需要,您可以将手卷实例附加到 ASG。ASG 允许您指定要在哪些子网中创建实例;为要创建实例的每个可用区至少为其提供一个子网。它将自动将创建的实例分布在 AZ 中。ASG 具有最小、最大和所需的实例计数。期望计数是在任何给定时间它应该有多少个实例;如果少于这个,它将创建更多,如果超过这个,它将根据终止策略(最旧的优先,最新的优先等)终止一些。最小值和最大值定义了期望计数的边界 - 期望永远不会小于最小值或大于最大值。
最后,您定义扩展和缩减规则以说明何时应该自动更改所需的计数。在您的情况下,这可能是在整个 ASG 的平均 CPU 使用率超过 50% 时进行横向扩展,并在其低于 25% 时进行横向扩展。
您还需要将 ASG 设置为负载均衡器的目标组,这样一旦新实例创建并运行良好,它就会占用流量 - 否则,创建它的意义何在?确保您进行了准确的运行状况检查,以便无法为流量提供服务的实例不会收到流量。
推荐阅读
- c# - 如何用正则表达式表示文本块?
- javascript - Angular 6 UI 在不使用父模板的情况下实现更改检测
- ios - 无法将播放器(iPhone 8 iOS 13.1)连接到 Visual Studio for Mac 2019
- c# - 具有可为空的 DateTime 和 DateAdd 的 OrmLite 条件
- javascript - 如何在删除之前将在单击功能上创建的 div 附加到另一个 div?Javascript
- laravel - 模型 App/Models/Country delete_all 没有查询结果
- xcode - 是否可以使用 Xcode lldb 控制台检查内存中是否有任何类的实例?
- python-3.x - 根据给定的阈值修改数值数组或图像
- php - 如何返回第一个匹配的键值?
- javascript - document.getElementById() 在函数闭包中不起作用