你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用。
本文适用于:✅基本计划/标准计划 ✅ 企业计划
本文介绍如何将 Eureka 服务器迁移到 Azure 容器应用中适用于 Spring 的 Eureka 服务器。
Azure 容器应用的适用于 Spring 的托管 Eureka 服务器可提供与 Azure Spring Apps 类似的体验。 它使你无需修改其源代码即可部署现有的 Spring 应用程序,并将其注册到托管 Eureka 服务器。
先决条件
- 已启用 Tanzu 服务注册表的现有 Azure Spring Apps 企业计划实例。
- 用于部署应用程序的现有 Azure 容器应用环境。 有关详细信息,请参阅预配 Azure 容器应用。
- 充当 Eureka 客户端的应用程序的容器映像。 如有必要,可以使用示例映像
mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest。 - Azure CLI。
预配适用于 Spring 的托管 Eureka 服务器
若要使用适用于 Spring 的托管 Eureka 服务器,首先需要在 Azure 容器应用环境中创建 Eureka 服务器组件。
若要创建适用于 Spring 的托管 Eureka 服务器,请执行以下步骤:
若要创建适用于 Spring 的 Eureka 服务器 Java 组件,请使用以下命令:
az containerapp env java-component eureka-server-for-spring create \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --environment $ENVIRONMENT(可选)若要更新适用于 Spring 的 Eureka 服务器 Java 组件配置,请使用以下命令:
az containerapp env java-component eureka-server-for-spring update \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --environment $ENVIRONMENT \ --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
通过 Azure 门户删除托管 Eureka 服务器时,Azure 容器应用会自动取消绑定注册的所有容器应用,并删除托管 Eureka 服务器。 此行为不同于 Azure Spring Apps 企业计划,后者在删除 Tanzu 服务注册表之前,必须手动取消绑定服务。
资源分配和定价
在 Azure 容器应用中对托管 Eureka 服务器进行容器资源分配时,固定使用以下值:
- CPU:0.5 vCPU
- 内存:1 Gi
- 副本数:1 - 不可缩放
相比之下,Azure Spring Apps 企业计划服务注册表还预配了固定资源,但包括两个副本,每个副本具有 0.5 vCPU 和 1 Gi 内存。
与 Azure Spring Apps 中不收取费用的基本/标准计划不同,Azure 容器应用中适用于 Spring 的托管 Eureka 服务器采用基于使用量的定价方式。 此定价类似于 Azure Spring Apps 企业计划的定价。
有关详细信息,请参阅教程:连接到 Azure 容器应用中适用于 Spring 的托管 Eureka 服务器的注意事项部分。
部署和绑定应用程序
在预配适用于 Spring 的托管 Eureka 服务器后,可以将 Spring 应用程序部署到 Azure 容器应用并将其绑定到 Eureka 服务器。 此过程类似于企业计划在 Azure Spring Apps 中的工作方式。 具体而言,需要将应用程序绑定到 Eureka 服务器,这不同于不需要绑定的 Azure Spring Apps 基本/标准计划。
注意
如果不使用示例映像 mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest 部署应用程序,可能需要执行一些配置,使 Azure 容器应用能够从容器注册表拉取映像。 例如,若要准备从 Azure 容器注册表 (ACR) 拉取映像所需的权限,请参阅教程:生成应用并将其部署到 Azure 容器应用的创建 Azure 容器注册表部分。
部署应用程序
使用以下命令创建容器应用程序:
az containerapp create \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME \
--environment $ENVIRONMENT \
--image $IMAGE \
--min-replicas 1 \
--max-replicas 1 \
--ingress external \
--target-port 8080 \
--query properties.configuration.ingress.fqdn
绑定应用程序
成功创建应用程序后,可以将应用程序绑定到托管 Eureka 服务器。
使用以下命令将创建的应用程序绑定到 Eureka 服务器:
az containerapp update \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME \
--bind $EUREKA_COMPONENT_NAME \
--query properties.configuration.ingress.fqdn
绑定将多个配置以环境变量的形式注入应用程序,这些配置主要是 eureka.client.service-url.defaultZone 属性。 此属性指示 Eureka Server Java 组件的内部终结点。 有关其他属性的详细信息,请参阅在 Azure 容器应用中连接到适用于 Spring 的托管 Eureka 服务器的将容器应用绑定到适用于 Spring 的 Eureka 服务器 Java 组件部分。
如果需要将应用程序从 Eureka 服务器取消绑定,请参阅在 Azure 容器应用中连接到适用于 Spring 的托管 Eureka 服务器的将容器应用从适用于 Spring 的 Eureka 服务器 Java 组件取消绑定部分。
使用仪表板查看已注册的应用程序
成功创建应用程序并将其绑定到 Eureka 服务器后,可以通过管理仪表板查看已注册的应用程序。 有关详细信息,请参阅在 Azure 容器应用中连接到适用于 Spring 的托管 Eureka 服务器的通过仪表板查看应用程序部分。
以下屏幕截图显示了 Eureka 服务器仪表板的外观示例:
故障排除
可以使用 Log Analytics 查看 Azure 容器应用中适用于 Spring 的托管 Eureka 服务器的日志,该日志的工作方式类似于 Azure Spring Apps 中的日志记录机制。
若要查看 Azure 容器应用中适用于 Spring 的托管 Eureka 服务器的日志,请执行以下步骤:
转到“容器应用环境”页。
转到“监视”>“日志记录选项”,在“日志目标”下,确保选择“Azure Log Analytics”。
转到“监视”>“日志”。
(可选)如果日志分析范围与“日志记录选项”中配置的范围不匹配,请选择“选择范围”来选择正确的日志分析工作区。
在查询编辑器中输入查询以查看来自 ContainerAppSystemLogs_CL 表的日志,如以下示例所示:
ContainerAppSystemLogs_CL | where ComponentType_s == "SpringCloudEureka" | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s | take 100
有关使用 Azure CLI 查询日志的详细信息,请参阅使用 Log Analytics 监视 Azure 容器应用中的日志。
已知限制
- 外部访问:无法从外部访问 Azure 容器应用中适用于 Spring 的托管 Eureka 服务器。
- 修订流量:在 Azure 容器应用的多重修订模式下,在 Eureka 中注册的应用程序的所有副本都会接收流量。
更多资源
有关管理 Azure 容器应用中的 Eureka 服务器的详细信息,请参阅教程:在 Azure 容器应用中连接到适用于 Spring 的托管 Eureka 服务器。