Autoscale 使用案例
此 ASA 虚拟 的使用案例 - OCI Autoscale 解决方案会显示在解决方案图中。面向互联网的负载均衡器具有使用侦听程序与目标组的组合启用的端口的公共 IP 地址。
可以为网络流量实施基于端口的明细。这可通过 NAT 规则实现。以下各部分将介绍此配置示例。
此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科可能会在某些地方提供本内容的当地语言翻译版本。请注意,翻译版本仅供参考,如有任何不一致之处,以本内容的英文版本为准。
此 ASA 虚拟 的使用案例 - OCI Autoscale 解决方案会显示在解决方案图中。面向互联网的负载均衡器具有使用侦听程序与目标组的组合启用的端口的公共 IP 地址。
可以为网络流量实施基于端口的明细。这可通过 NAT 规则实现。以下各部分将介绍此配置示例。
以下是实施解决方案所需的 OCI 权限和策略:
用户和组
注 |
您必须是 OCI 用户或租户管理员才能创建用户和组。 |
创建 Oracle 云基础设施用户账户和用户账户所属的组。如果存在具有用户账户的相关组,则无需再进行创建。有关创建用户和组的说明,请参阅创建组和用户。
组策略
您需要创建策略,然后将其映射到组。要创建策略,请转至
。创建以下策略并将其添加到所需的组中:允许组 <Group_Name> 使用隔离专区 <Compartment_Name> 中的指标
允许组 <Group_Name> 管理隔离专区 <Compartment_Name> 中的警报
允许组 <Group_Name> 管理隔离专区 <Compartment_Name> 中的主题
允许组 <Group_Name> 检查隔离专区 <Compartment_Name> 中的指标
允许组 <Group_Name> 读取隔离专区 <Compartment_Name> 中的指标
允许组 <Group_Name> 使用隔离专区 <Compartment_Name> 中的标记命名空间
允许组 <Group_Name> 读取隔离专区 <Compartment_Name> 中的日志组
允许组 <Group_Name> 使用隔离专区 <Compartment_Name> 中的实例池
允许组 <Group_Name> 使用租户中的 Cloud Shell
允许组 <Group_Name> 读取租户中的对象存储命名空间
允许组 <Group_Name> 管理租户中的存储库
注 |
您也可以在租户级别创建策略。您可以自行决定如何提供所有的权限。 |
Oracle 功能的权限
要让 Oracle 功能能够访问另一个 Oracle 云基础设施资源,请将该功能包含在动态组中,然后创建一个策略以授予该动态组对该资源的访问权限。
创建动态组
要创建动态组,请转至
在创建动态组时指定以下规则:
ALL {resource.type = 'fnfunc', resource.compartment.id = '<Your_Compartment_OCID>'}
有关动态组的更多详细信息,请参阅:
为动态组创建策略
要添加策略,请转至
。将以下策略添加到组:允许动态组 <Dynamic_Group_Name> 管理隔离专区 <Compartment_OCID> 中的所有资源
ASA 虚拟 – OCI Autoscale 解决方案已作为 GitHub 存储库提供。您可以从存储库中提取或下载文件。
可以在克隆存储库中找到 make.py 文件。此程序会将 Oracle 功能和模板文件压缩为 Zip 文件;将它们复制到目标文件夹。为了执行这些任务,应配置 Python 3 环境。
注 |
此 Python 脚本只能用于 Linux 环境中。 |
必须配置以下选项:
VCN
根据 ASA 虚拟 应用的需要创建 VCN。创建具有互联网网关的 VCN,该网关至少有一个通过到互联网的路由连接的子网。
有关创建 VCN 的信息,请参阅https://docs.oracle.com/en-us/iaas/Content/GSG/Tasks/creatingnetwork.htm。
应用程序子网
根据 ASA 虚拟应用的需要创建子网。要根据此使用案例实施解决方案,ASA 虚拟实例需要 3 个子网才能运行。
有关创建子网的信息,请参阅 https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/managingVCNs_topic-Overview_of_VCNs_and_Subnets.htm#。
外部子网
子网应该具有能够通过“0.0.0.0/0”连接互联网网关的路由。此子网包含思科 ASA 虚拟 的外部接口和面向互联网的负载均衡器。确保为出站流量添加 NAT 网关。
有关详情,请参阅以下文档:
内部子网
这与具有或没有 NAT/互联网网关的应用程序子网类似。
注 |
对于 ASA 虚拟 运行状况探测,您可以通过端口 80 来访问元数据服务器 (169.254.169.254)。 |
管理子网
管理子网应是公共子网,这样它才能支持对 ASA 虚拟 的 SSH 可访问性。
安全组 - ASA 虚拟 实例的网络安全组
为满足以下要求的 ASA 虚拟实例配置安全组:
Oracle 功能(在同一 VCN 中)会执行到 ASA 虚拟的管理地址的 SSH 连接。
管理主机可能需要对 ASA 虚拟实例进行 SSH 访问。
ASA 虚拟 会发起与 CSSM/卫星服务器的通信以获取许可。
对象存储命名空间
此对象存储命名空间用于托管静态网站,包含 configuration.txt 文件。您必须为 configuration.txt 文件创建预身份验证请求。此预身份验证 URL 可在模板部署期间使用。
注 |
确保 ASA 虚拟 实例可通过 HTTP URL 访问已上传的以下配置。 当 ASA 虚拟 启动时,它会执行以下命令 此命令支持要使用 configuration.txt 文件配置的 ASA 虚拟 启动。 |
上传 configuration.txt 文件
要创建 ASA 虚拟配置文件的预身份验证请求 URL,请执行以下操作:
点击
。点击上传 (Upload)。
上传配置文件后,选择创建预身份验证请求 (Create Pre-Authenticated Request),如下图所示。
注 |
现在应该就能从 oracle 功能访问配置文件了。 |
入站流量
确保 configuration.txt 中的 <Application VM IP> 地址正确无误,如配置对象、许可、NAT 规则和访问策略中所述。
出站流量
确保 configuration.txt 中的 <External Server IP> 地址正确无误,如配置对象、许可、NAT 规则和访问策略中所述。
确保外部 VCN 中有一个 NAT 网关。
确保在通过 NAT 网关指定的外部 VCN 的路由表中添加相同的 <External Server IP>,如下图示例所示:
注 |
有关此程序的详细信息,请参阅创建保管库和密钥。 |
ASA 虚拟 的密码用于配置自动扩展时使用的所有 ASA 虚拟 实例,并且它还用于检索 ASA 虚拟实例的 CPU 使用情况数据。
因此,您需要不时地保存和处理密码。由于密码更改频繁且存在漏洞,因此不允许以纯文本格式编辑或保存密码。密码只能采用加密格式。
要以加密形式获取密码,请执行以下操作:
步骤 1 |
创建保险库。 OCI 保险库提供安全创建和保存主加密密钥的服务,以及使用它们进行加密和解密的方法。因此,应在与 Autoscale 解决方案的其余部分相同的隔离专区中创建保险柜(如果尚未创建)。 转至 。 |
步骤 2 |
创建主加密密钥。 需要使用主加密密钥才能加密纯文本密码。 转至 从任意给定算法中选择任意长度的密钥。
|
步骤 3 |
创建加密密码。。
|
确保应用程序已部署或为其制定了部署计划。
步骤 1 |
在部署之前收集以下输入参数:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
步骤 2 |
为负载均衡器运行状况探测和访问策略配置对象、许可、NAT 规则。
应在访问策略上允许这些运行状况探测连接和数据平面配置。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
步骤 3 |
使用配置详细信息更新 configuration.txt 文件。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
步骤 4 |
将 configuration.txt 文件上传到用户创建的对象存储空间,并为上传的文件创建预身份验证请求。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
步骤 5 |
创建 Zip 文件。 可以在克隆存储库中找到 make.py 文件。执行 python3 make.py build 命令以创建 zip 文件。目标文件夹包含以下文件。
|
在完成部署的必备步骤后,开始创建 OCI 堆栈。您可以使用 Cloud Shell 执行手动部署或使用 Cloud Shell 执行部署。您的版本的部署脚本和模板可从 GitHub 存储库获取。
端到端 Autoscale 解决方案部署包括三个步骤:
步骤 1 |
登录 OCI 门户。 区域显示在屏幕的右上角。确保您在预期的区域内。 |
||
步骤 2 |
选择 选择我的配置 (My Configuration),然后选择目标文件夹中的 Terraform template1.zip 文件作为 Terraform 配置源,如下图所示。 |
||
步骤 3 |
在转换版本 (Transform version) 下拉列表中,选择 0.13.x 或 0.14.x。 |
||
步骤 4 |
在下一步中,输入输入参数集合 (Collection of Input parameters) 中收集的所有详细信息。
|
||
步骤 5 |
在下一步中,选择 。成功部署后,继续部署 Oracle 功能。 |
注 |
只有在 Terraform Template-1 部署成功后才能执行此步骤。 |
在 OCI 中,Oracle 功能会作为 Docker 映像上传,并会保存到 OCI 容器注册表中。在部署时,需要将 Oracle 功能推送到其中一个 OCI 应用(在 Terraform Template-1 中创建)中。
步骤 1 |
打开 OCI Cloud Shell。 |
||||||||||||||
步骤 2 |
上传 deploy_oracle_functions_cloudshell.py 和 Oracle-Functions.zip。 从 Cloud Shell 的汉堡菜单中,选择上传 (Upload)。 |
||||||||||||||
步骤 3 |
使用 ls 命令来验证文件。 |
||||||||||||||
步骤 4 |
运行 python3 Deploy_Oracle_Functions.py -h。deploy_oracle_functions_cloudshell.py 脚本需要一些输入参数,可使用 help 参数找到其详细信息,如下图所示。 要运行脚本,请传递以下参数:
|
||||||||||||||
步骤 5 |
通过传递有效的输入参数运行 python3 Deploy_Oracle_Functions.py 命令。部署所有功能、通知您可以删除文件并关闭 Cloud Shell 需要一些时间。 |
模板 2 部署与警报创建相关的资源,包括警报、用于调用函数的 ONS 主题。模板 2 的部署与 Terraform Template-1 的部署类似。
步骤 1 |
登录 OCI 门户。 区域显示在屏幕的右上角。确保您在预期的区域内。 |
步骤 2 |
选择 .选择目标文件夹中的 Terraform template template2.zip 作为 Terraform 配置的源。 |
步骤 3 |
在下一步中,点击 。 |
为避免部署开销,您可以通过调用简单的端到端部署脚本来部署 AutoScale 解决方案(Terraform template1、template2 和 oracle 功能)。
步骤 1 |
将目标文件夹中的 asav_autoscale_deploy.zip 文件上传到 Cloud Shell 并提取文件。 |
步骤 2 |
在执行 python3 make.py 构建命令之前,请确保您已更新 deployment_parameters.json 中的输入参数。 |
步骤 3 |
要启动 Autoscale 解决方案部署,请在 Cloud Shell 上运行 python3 oci_asav_autoscale_deployment.py 命令。 完成解决方案部署大约需要 10-15 分钟。 |
验证是否已部署所有资源,并且 Oracle 功能是否已与警报和事件连接。默认情况下,实例池的最小和最大实例数为零。您可以使用所需的最小和最大数量在 OCI UI 中编辑实例池。这将触发新的 ASA 虚拟 实例。
我们建议您仅启动一个实例并检查其工作流程,并验证其行为以确保符合预期。完成验证后,您可以部署 ASA 虚拟 的实际要求。
注 |
将 ASA 虚拟 实例的最小数量指定为受扩展保护 (Scale-In protected),以避免被 OCI 扩展策略删除。 |
升级 Autoscale 堆栈
此版本不支持升级。应重新部署堆栈。
升级 ASA 虚拟 VM
此版本不支持升级 ASA 虚拟 VM。应使用所需的 ASA 虚拟 映像来重新部署堆栈。
实例池
要更改实例池中的最小和最大实例数,请执行以下操作:
点击
。分别更改 min_instance_count 和 max_instance_count。
删除/终止实例不等于内向扩展。如果实例池中的任何实例因外部操作而并非内向扩展操作而被删除/终止,则实例池会自动启动新实例进行恢复。
Max_instance _count 定义外向扩展操作的阈值限制,但可以通过 UI 更改实例池的实例计数来超过此限制。确保 UI 中的实例计数小于在 OCI 应用中设置的 max_instance_count。否则,请相应地增大阈值。
直接从应用减少实例池中的实例计数不会执行以编程方式设置的清理操作。由于这些后端不会从两个负载均衡器中耗尽和删除,如果 ASA 虚拟 有许可证,它将丢失。
由于某些原因,如果 ASA 虚拟 实例在一段时间内运行状况不佳、无响应且无法通过 SSH 访问,则实例会被强制从实例池中删除,任何许可证都可能丢失。
Oracle 功能
Oracle 功能实际上就是 Docker 映像。这些映像会别保存到 OCI 容器注册表的根目录中。这些映像不应被删除,否则也会删除在 Autoscale 解决方案中使用的功能。
通过 Terraform Template-1 创建的 OCI 应用包含 Oracle 功能正常工作所需的关键环境变量。除非强制要求,否则不应更改这些环境变量的值和格式。所做的任何更改只会反映在新实例中。
在 OCI 中,仅支持使用配置为 ASA 虚拟 中的管理接口的主接口来连接到实例池的负载均衡器。因此,内部接口会连接到内部负载均衡器的后端集;外部接口会连接到外部负载均衡器的后端集。这些 IP 不会自动添加到后端集或从后端集中删除。我们的 Auto Scale 解决方案会以编程方式处理这两个任务。但在进行任何外部操作、维护或故障排除时,可能会有需要手动完成此操作的情况。
根据要求,可以使用侦听程序和后端集在负载均衡器上打开更多端口。即将启用的实例 IP 会被自动添加到后端集中,但应手动添加现有实例 IP。
在负载均衡器中添加侦听程序
要在负载均衡器中添加某个端口作为侦听程序,请转至
。将后端注册到后端集
要将 ASA 虚拟 实例注册到负载均衡器,应将 ASA 虚拟 实例外部接口 IP 配置为外部负载均衡器后端集中的后端。内部接口 IP 应配置为内部负载均衡器后端集中的后端。确保您正在使用的端口已被添加到侦听程序中。
可以使用 OCI 中的资源管理器以相同的方式删除使用 Terraform 部署的堆栈。删除堆栈会删除其创建的所有资源,并且与这些资源关联的所有信息都会被永久删除。
注 |
在堆栈删除的情况下,建议将实例池中的最小实例数设置为 0,然后等待实例终止。这样将有助于删除所有实例,并且不会留下任何残留。 |
您可以执行手动删除或使用 Cloud Shell。
删除端到端解决方案分为三个步骤:
要删除 Autoscale 配置,您必须先删除 Terraform Template-2 堆栈。
步骤 1 |
登录 OCI 门户。 区域显示在屏幕的右上角。确保您在预期的区域内。 |
步骤 2 |
选择 。 |
步骤 3 |
选择 Terraform Template-2 创建的堆栈,然后选择Terraform 操作 (Terraform Actions) 下拉菜单中的销毁 (Destroy),如图所示。 将创建销毁作业,逐个删除资源需要一些时间。您可以在销毁作业完成后删除堆栈。如下图所示: |
步骤 4 |
继续删除 Oracle 功能。 |
Oracle 功能部署不是 Terraform 模板堆栈部署的一部分,它要使用 Cloud Shell 单独上传。因此,Terraform 堆栈删除也不支持其删除。您必须删除通过 Terraform Template-1 创建的 OCI 应用内的所有 Oracle 函数。
步骤 1 |
登录 OCI 门户。 区域显示在屏幕的右上角。确保您在预期的区域内。 |
步骤 2 |
选择 。选择在模板 1 堆栈中创建的应用名称。 |
步骤 3 |
在此应用中,访问每个函数并将其删除。 |
注 |
只有在删除所有 Oracle 功能之后,才能成功删除模板 1 堆栈。 |
与 Terraform Template-2 删除相同。
步骤 1 |
登录 OCI 门户。 区域显示在屏幕的右上角。确保您在预期的区域内。 |
步骤 2 |
选择 。 |
步骤 3 |
选择 Terraform Template-2 创建的堆栈,然后点击 Terraform 操作 (Terraform Actions) 下拉菜单中的销毁 (Destroy)。系统将创建销毁作业,逐个删除资源需要一些时间。 |
步骤 4 |
销毁作业完成后,您可以从更多操作 (More Actions) 下拉菜单中删除堆栈,如下图所示。 成功删除 Terraform Template-1 堆栈后,您必须验证是否所有资源均已删除,并且没有任何类型的残留。 |
用户可以在 Cloud Shell 中执行 python3 oci_asav_autoscale_teardown.py 命令,一般使用脚本删除堆栈和 Oracle 功能。如果堆栈是手动部署的,请更新 stack1 和 stack2 的堆栈 ID,然后更新 teardown_parameters.json 文件中的应用 ID。