为了演示 Bluemix Auto-Scaling Add-On 的工作原理,我们首先给出一个简单、基于 Web 的 Java™ 应用程序,它通过计算 1000 以内的素数来模拟高 CPU 利用率。该应用程序在 Bluemix Liberty for Java 运行时上运行。接下来,我们将设置一个自动扩展策略,它包含一个下限和一个上限,我们还将使用 Jmeter 工具增加应用程序上的工作负载。从自动扩展仪表板,我们可以监视 CPU 利用率的增长,在它达到策略中指定的上限时添加一个实例(基于策略中设置的规则)。应用程序被扩展为两个实例,工作负载在旧和新实例之间达到平衡。应用程序在增加的工作负载下安全地运行。
可以按照这些分步操作说明来实现 Bluemix Auto-Scaling Add-on,让您的应用程序更加灵活。
完成您的应用程序的前提条件
- 一个 Bluemix ID
- 示例文件 Sample4AutoScaling.war(从 IBM DevOps Service 下载)
第 1 步. 入门
- 熟悉 Bluemix 仪表板。
- 安装 Cloud Foundry 命令行工具 (CLI) 并学习如何使用它。
第 2 步. 将示例应用程序推送到 Bluemix
- 使用该 CLI 登录到 Bluemix:
- 打开一个命令窗口,将目录更改为包含示例应用程序 sample4autoscaling.war 的文件夹。
- 使用
cf push
命令行推送该应用程序:备注:
<app name>
是一个惟一的应用程序名称。名称sample4autoscaling
被用作示例应用程序的名称。请为您自己的推送使用一个不同的名称,以避免出现消息host name is taken or the URL was not available
。请确保您的组织为示例应用程序的实例保留了至少 1GB 内存。
- 完成第 3 步后,登录到 Bluemix 仪表板。找到该应用程序并确认它的状态为
running
。单击仪表板中显示的 URL 转到示例应用程序。备注:Bluemix 中的 Auto-Scaling 特性支持 Liberty for Java 运行时、Node 应用程序、Ruby 应用程序和您自己的应用程序(例如 .NET 或 Go)。要支持更多应用程序类型,请在执行
cf push
步骤时提供自定义构件包的链接。
第 3 步. 为应用程序启用 Auto-Scaling 功能
- 转到您应用程序的 Overview 页面。单击 CONNECT AN ADD_ON。
- 单击 Add-On 列表中的 Auto-Scaling。
- 阅读操作说明和许可条款。接受条款后,单击 CREATE。
- 完成连接后,系统会提示您重新呈现该应用程序。单击 OK 重新呈现应用程序。
- 此刻,Auto-Scaling Add-On 会在您的应用程序下列出。
第 4 步. 创建一个自动扩展策略
- 单击 Policy Configuration 选项卡上的 CREATE AUTO SCALING POLICY。
- 为每个字段指定合适的值并保存该策略。这些字段已在 Bluemix 文档 中解释。对于示例应用程序,可以使用以下设置:
- 对于 Metric Type:指定
CPU
。 - 对于 Scale Out:指定上限 60%。
- 对于 Scale In:指定下限 10%。
- 对于 Statistic Window 和 Breach Duration:指定 30 秒(最小值),以便对是否扩展应用程序的决策应用最高的灵敏度级别。
- 对于扩展和精减的 Cooldown period:指定 300 秒。
设置扩展策略的技巧:
- 如果应用程序的工作负载在短期内的增长非常快,那么可以将 Breach Duration 设置为一个较小的值,让您的应用程序能够提前扩展,避免超出 CPU 或内存容量和应用程序崩溃。
- 如果您选择的 Metric Type(
CPU
、Memory
或Heap
)在短期内增高并降低,可以为Statistic Window 指定一个更高的值。为了确定您的应用程序的 CPU 利用率是否超出了上限或下限,Auto-Scaling 会考虑一个时间范围(在 Statistic Window 参数上指定的值)内的指标数据并计算平均值。为 Statistic Window 指定的值越高,它选择用来计算应用程序是否达到上限或下限的数据范围就越宽。 - 第一次扩展完成后,第二次扩展在 Cooldown 期限过去后才能触发。此做法提供了足够的时间让应用程序状态变得稳定。出于演示用途,我们为 Cooldown 指定一个较短的期限,对于生产环境,可以使用较长的期限。
- 对于 Metric Type:指定
- 单击 Save 保存您的策略。要完成编辑流程并查看策略摘要,可以单击 Policy Configuration 选项卡上的 Back。
- 要检查应用程序的实时资源使用情况并查看扩展策略中设置的阈值,可以单击 Metrics Statistics 选项卡。
第 5 步. 向示例应用程序添加工作负载并监视它的资源使用
- 下载 Jmeter 工具 2.11 版(或更高版本)。
- 解压它,如果在 Windows™ 上,则运行 jmeter.bat;如果在 Linux® 上,则运行 jmeter.sh。
备注:将 JRE 安装在运行 Jmeter 的机器上。
- 创建一个名为
Script4AutoScaling.jmx
的本地文件,并将 Jmeter 参数配置文件Script4AutoScaling.jmx 的内容复制到您的本地文件。 - 打开 Jmeter 工具。单击 File > Open Sample4AutoScaling.jmx(已在上一步中下载)。编辑 HTTP Request 并将 Server Name or IP 从
sample4autoscaling.mybluemix.net
更改为<your app name>.mybluemix.net
。 - 要打开 Aggregate Report 来查看请求状态,可以单击 Run > Start。
- 在 Bluemix 上,打开自动扩展仪表板并切换到 Metrics Statistics 选项卡。请注意,随着 Jmeter 增加发往应用程序的并发请求的数量,CPU 利用率会增长。当 CPU 利用率在 30 秒内(breach duration)达到 60%(上限)时,就会创建一个新实例,总实例数会变为 2。
- 现在单击 Scaling History 选项卡来检查您的扩展活动的记录。
结束语
现在,您已经知道了如何将一个应用程序部署在 Bluemix 上,并为它启用 Auto-Scaling 功能。我们希望您觉得 Auto-Scaling Add-On 缺失很容易使用,它可以帮助您改善应用程序的弹性,并会在您在 Bluemix 上工作时为您降低总体成本。