教程:使用Azure 应用程序网关作为负载均衡器将 WebLogic Server 群集迁移到 Azure

本教程介绍使用 Azure 应用程序网关部署 WebLogic Server (WLS) 的过程。 其中涉及具体步骤来创建 Key Vault、在 Key Vault 中存储 TLS/SSL 证书及使用该证书终止 TLS/SSL。 尽管所有这些元素均在各自的文档中得到很好的阐述,但本教程展示了一种特定的方式,将所有这些元素结合起来,以便为 Azure 上的 WLS 创建简单却又功能强大的负载均衡解决方案。

Diagram showing the relationship between WLS, App Gateway, and Key Vault.

负载均衡是将 Oracle WebLogic Server 群集迁移到 Azure 时必不可少的一部分。 最简单的解决方案是使用 Azure 应用程序网关的内置支持。 应用网关包含在 Azure 上的 WebLogic 群集支持中。 要简要了解 Azure 上的 WebLogic 群集支持,请参阅 Azure 上的 Oracle WebLogic Server 是指什么?

本教程介绍如何执行下列操作:

  • 选择如何向应用程序网关提供 TLS/SSL 证书
  • 通过 Azure 应用程序网关将 WebLogic Server 部署到 Azure
  • 验证 WLS 和应用网关是否部署成功

先决条件

  • 计算机上运行与 UNIX 类似的命令行环境的 OpenSSL

    本教程将使用 OpenSSL,不过,其他工具可能也可用于证书管理。 你可能会发现,许多 GNU/Linux 发行版(如 Ubuntu)中已捆绑 OpenSSL。

  • 一个有效的 Azure 订阅。

  • 能够部署 Oracle WebLogic Server Azure 应用程序中列出的 WLS Azure 应用程序之一。

迁移上下文

下面是迁移本地 WLS 安装和 Azure 应用程序网关时需注意的一些事项。 虽然本教程的步骤是在 Azure 上的 WebLogic Server 群集签名建立负载均衡器的最简单的方法,但还有许多其他方法可实现此目的。 下表显示了其他注意事项。

通过应用程序网关将 WebLogic Server 部署到 Azure

本部分介绍如何预配一个 WLS 群集,其中 Azure 应用程序网关自动创建为群集节点的负载均衡器。 应用程序网关将使用所提供的 TLS/SSL 证书来终止 TLS/SSL。 有关使用应用程序网关终止 TLS/SSL 的进阶版详细信息,请参阅关于使用应用程序网关实现 TLS 终止和端到端 TLS 的概述

若要创建 WLS 群集和应用程序网关,请使用以下步骤。

首先,按照 Oracle 文档中所述,开始部署配置的 WebLogic Server 或动态群集,但到了 Azure 应用程序网关时返回到此页,如下所示。

Azure portal screenshot showing the Azure Application Gateway.

选择如何向应用程序网关提供 TLS/SSL 证书

有多个选项可以向应用程序网关提供 TLS/SSL 证书,但只能选择其中一个。 本部分介绍每个选项,便于你为部署选择最适合的选项。

选项一:上传 TLS/SSL 证书

此选项适用于应用程序网关面对公共 Internet 的生产工作负载,或适用于需要 TLS/SSL 的 Intranet 工作负载。 通过选择此选项,将自动预配 Azure Key Vault 以包含应用程序网关使用的 TLS/SSL 证书。

若要上传现有的已签名 TLS/SSL 证书,请使用以下步骤:

  1. 按照证书颁发者中的步骤创建受密码保护的 TLS/SSL 证书,并指定证书的 DNS 名称。 如何选择通配符与单名称证书超出了本文档的范围。 此处任何一项都适用。
  2. 使用 PFX 文件格式从颁发者处导出证书,并将其下载到本地计算机。 如果颁发者不支持导出为 PFX,则可以使用工具将众多的证书格式转换为 PFX 格式。
  3. 选择“Azure 应用程序网关”部分。
  4. 在“连接到 Azure 应用程序网关”旁边选择“是”。
  5. 选择“上传 SSL 证书”。
  6. 选择“SSL 证书”字段的文件浏览器图标。 导航到下载的 PFX 格式证书并选择“打开”。
  7. 在“密码”和“确认密码”框中输入证书的密码。
  8. 选择是否拒绝直接传向托管服务器节点的公共流量。 选择“是”后将只能通过应用程序网关访问托管服务器。

选择 DNS 配置

TLS/SSL 证书在证书颁发者颁发它们时与 DNS 域名关联。 按照本部分中的步骤,使用证书的 DNS 名称来配置部署。 可以使用已创建的 DNS 区域,或允许部署为你创建一个。 选择“DNS 配置”部分以继续。

使用现有 Azure DNS 区域

若要对应用程序网关使用现有 Azure DNS 区域,请执行以下步骤:

  1. 在“配置自定义 DNS 别名”旁边选择“是”。
  2. 在“使用现有 Azure DNS 区域”旁边选择“是”。
  3. 在“DNS 区域名称”旁边输入 Azure DNS 区域的名称。
  4. 输入包含上一步中 Azure DNS 区域的资源组。

允许部署创建新的 Azure DNS 区域

若要创建用于应用程序网关的 Azure DNS 区域,请执行以下步骤:

  1. 在“配置自定义 DNS 别名”旁边选择“是”。
  2. 在“使用现有 Azure DNS 区域”旁边选择“否”。
  3. 在“DNS 区域名称”旁边输入 Azure DNS 区域的名称。 将在与 WLS 相同的资源组中创建新的 DNS 区域。

最后指定子 DNS 区域的名称。 部署将创建两个用于 WLS 的子 DNS 区域:一个针对管理控制台,另一个针对应用程序网关。 例如,如果 DNS 区域名称为“contoso.net”,则可以输入 admin 和 app 作为值。 管理控制台在“admin.contoso.net”中可用,应用程序网关在“app.contoso.net”中可用。 请不要忘记设置 DNS 委派,如使用 Azure DNS 委派 DNS 区域中所述。

Azure portal screenshot showing fields for child DNS zones.

以下部分详细介绍向应用程序网关提供 TLS/SSL 证书的其他选项。 如果你对所选的选项满意,则可以跳到继续部署部分。

选项二:标识 Azure Key Vault

此选项适用于生产或非生产工作负载,具体取决于提供的 TLS/SSL 证书。 如果你不希望部署创建 Azure Key Vault,可以标识现有的 Azure Key Vault 或者自行创建一个。 此选项要求先将证书及其密码存储在 Azure Key Vault 中,然后再继续。 如果已存在要使用的 Key Vault,请跳到创建 TLS/SSL 证书部分。 否则,请继续下一部分。

创建 Azure Key Vault

本教程说明如何使用 Azure 门户创建 Azure Key Vault。

  1. 在 Azure 门户菜单或“主页”中,选择“创建资源” 。
  2. 在搜索框中,输入“密钥保管库”。
  3. 从结果列表中选择“密钥保管库”。
  4. 在“密钥保管库”部分,选择“创建”。
  5. 在“创建密钥保管库”部分,提供以下信息:
    • 订阅:选择一个订阅。
    • 在“资源组”下选择“新建”,然后输入资源组名称。 记下 Key Vault 名称。 稍后在部署 WLS 时需要用到它。
    • 密钥库名称:需要唯一名称。 记下 Key Vault 名称。 稍后在部署 WLS 时需要用到它。

    注意

    可对资源组和 Key Vault 名称使用同一名称

    • 在“位置”下拉菜单中选择一个位置。
    • 让其他选项保留默认值。
  6. 选择“ 下一步:访问策略”。
  7. 在“启用访问”下,选择“用于模板部署的 Azure 资源管理器”
  8. 选择“查看 + 创建” 。
  9. 选择“创建”。

Key Vault 创建是很轻量级的操作,通常两分钟内即可完成。 部署完成后,选择“转到资源”,然后继续下一部分

创建 TLS/SSL 证书

本部分介绍如何以适合在 Azure 上使用 WebLogic Server 部署应用程序网关的格式创建自签名 TLS/SSL 证书。 此证书必须具有非空密码。 如果你已具有采用 .pfx 格式的有效非空密码 TLS/SSL 证书,则可跳过此部分,转到下一部分。 如果现有的有效非空密码 TLS/SSL 证书不是 .pfx 格式,请先将其转换为 .pfx 文件,再跳到下一部分。 否则,请打开命令行界面,输入以下命令。

注意

本部分介绍如何在将证书存储为 Key Vault 中的机密之前对证书进行 Base64 编码。 这是创建 WebLogic Server 和应用程序网关的基础 Azure 部署所必需的。

请按照以下步骤进行创建并对证书进行 Base64 编码:

  1. 创建 RSA PRIVATE KEY

    openssl genrsa 2048 > private.pem
    
  2. 创建对应的公钥。

    openssl req -x509 -new -key private.pem -out public.pem
    

    OpenSSL 工具进行提示时,你必须回答几个问题。 这些值将包含在证书中。 本教程使用自签名证书,因此这些值是不相关的。 以下文本值是正确的。

    1. 对于国家/地区名称,请输入由两个字母组成的代码
    2. 对于省/自治区/直辖市的名称,请输入 WA
    3. 对于组织名称,请输入 Contoso。 对于组织单位名,请输入“帐单”。
    4. 对于公用名,请输入 Contoso
    5. 对于电子邮件地址,请输入 billing@contoso.com
  3. 将证书导出为 .pfx 文件

    openssl pkcs12 -export -in public.pem -inkey private.pem -out mycert.pfx
    

    输入两次密码。 记下密码。 稍后在部署 WLS 时需要用到它。

  4. 对 mycert.pfx 文件进行 Base64 编码

    base64 mycert.pfx > mycert.txt
    

现在,你已拥有 Key Vault 以及具有非空密码的有效 TLS/SSL 证书,接下来可将该证书存储在 Key Vault 中。

在 Key Vault 中存储 TLS/SSL 证书

本部分介绍如何将证书及其密码存储在上一部分创建的 Key Vault 中。

若要存储证书,请执行以下步骤:

  1. 在 Azure 门户中,将光标放在页面顶部的搜索栏中,然后键入在本教程前面部分创建的 Key Vault 的名称。
  2. Key Vault 应会出现在“资源”标题下。 选择该文件夹。
  3. 在“设置”部分中,选择“机密”
  4. 选择生成/导入
  5. 在“上传选项”下,保留默认值
  6. 在“名称”下,输入 myCertSecretData 或你喜欢的任意名称
  7. 在“值”下,输入 mycert.txt 文件的内容。 对于文本字段,值的长度和换行符的存在不会造成问题。
  8. 将剩余值保留为默认值,并选择“创建”

若要存储证书的密码,请执行以下步骤:

  1. 你将回到“机密”页面。 选择生成/导入
  2. 在“上传选项”下,保留默认值
  3. 在“名称”下,输入 myCertSecretPassword 或你喜欢的任意名称
  4. 在“值”下,输入证书的密码
  5. 将剩余值保留为默认值,并选择“创建”
  6. 你将回到“机密”页面

标识 Key Vault

现在,你已有包含已签名 TLS/SSL 证书的 Key Vault,且证书密码存储为机密,可以返回到 Azure 应用程序网关部分来标识部署的 Key Vault。

Azure portal screenshot showing Azure Key Vault fields.

  1. 在“包含 KeyVault 的当前订阅的资源组名称”下,输入包含之前创建的 Key Vault 的资源组的名称
  2. 在“包含用于 SSL 终止的证书的机密的 Azure KeyVault 名称”下,输入 Key Vault 的名称
  3. 在“其值为 SSL 证书数据的指定 KeyVault 中的机密名称”下,输入 myCertSecretData 或之前输入的任何名称
  4. 在“其值为 SSL 证书密码的指定 KeyVault 中的机密名称”下,输入 myCertSecretData 或之前输入的任何名称
  5. 选择“查看 + 创建” 。
  6. 选择“创建”。 这将验证是否可从 Key Vault 获取证书,并且其密码是否与 Key Vault 中存储的密码值相匹配。 如果此验证步骤失败,请查看 Key Vault 的属性,确保已正确输入证书,并确保正确输入了密码。
  7. 看到“验证通过”后,选择“创建”

这将开始创建 WLS 群集及其前端应用程序网关的过程,大约需要 15 分钟的时间。 部署完成后,请选择“转到资源组”。 从资源组的资源列表中,选择“myAppGateway”

下一部分详细介绍了向应用程序网关提供 TLS/SSL 证书的最后一个选项。 如果你对所选的选项满意,则可以跳到继续部署部分。

选项三:生成自签名证书

此选项仅适用于测试和开发部署。 使用此选项时,将自动创建 Azure Key Vault 和自签名证书,并向应用程序网关提供证书。

若要请求部署来执行这些操作,请执行以下步骤:

  1. 在“Azure 应用程序网关”部分中选择“生成自签名证书”
  2. 选择用户分配的托管标识。 若要允许部署创建 Azure Key Vault 和证书,则它是必需的。
  3. 如果还没有用户分配的托管标识,请选择“添加”以开始创建一个。
  4. 若要创建用户分配的托管标识,请按照使用 Azure 门户创建、列出、删除角色或将角色分配给用户分配的托管标识创建用户分配的托管标识部分中的步骤进行操作。 选择用户分配的托管标识后,请确保选中用户分配的托管标识旁边的复选框。

Azure portal screenshot showing fields for generating a self-signed certificate.

继续部署

现在可以根据 Oracle 文档中所述继续 WLS 部署的其他方面。

验证 WLS 和应用网关是否部署成功

本部分介绍用于快速验证是否成功部署 WLS 群集和应用程序网关的技术。

如果已选择“转到资源组”,然后在上一部分末尾选择“myAppGateway”,则会看到应用程序网关的概述页面。 如果没看到,可在 Azure 门户顶部的文本框中键入 myAppGateway,然后选择所显示的正确内容来找到该页面。 请确保在为 WLS 群集创建的资源组中选择一个。 然后,完成以下步骤。

  1. 在“myAppGateway”的概述页面的左窗格中,向下滚动到“监视”部分,然后选择“后端运行状况”
  2. “加载”消息消失后,屏幕中间会出现一张表,其中显示配置为后端池中节点的群集节点
  3. 验证每个节点的状态是否都是“正常运行”

清理资源

如果不打算继续使用此 WLS 群集,请按照以下步骤删除 Key Vault 和 WLS 群集:

  1. 请访问“myAppGateway”的概述页面,如上一部分中所示
  2. 在页面顶部的“资源组”文本下,选择资源组
  3. 选择“删除资源组”。
  4. 输入焦点将置于标有“键入资源组名称”的字段上。 根据请求键入资源组名称。
  5. 这将导致启用“删除”按钮。 选择删除按钮。 此操作需要一段时间,但可在删除过程中继续下一步操作。
  6. 按照在 Key Vault 中存储 TLS/SSL 证书部分的第一步操作来查找 Key Vault。
  7. 选择“删除” 。
  8. 选择窗格中出现的“删除”

后续步骤

继续探索用于运行 Azure 上的 WLS 的选项。