创建部署槽位

已完成

组织通常需要在隔离的环境中运行 Web 应用以在部署之前对其进行测试。 对其进行部署时需要快速进行,且不影响用户。

假设你要决定是否将槽用作一种简化方式,以用于部署社交媒体系统中的 Web 应用。 你想要了解部署槽位是否会在部署期间减少停机时间,它们能否简化回滚,以及能否在 Azure 中配置它们。

通过下文你将了解部署槽位如何简化新代码的测试和推出。

使用部署槽位

在单个 Azure 应用服务 Web 应用中,可以创建多个部署槽位。 每个槽是该 Web 应用的单独实例,且具有单独的主机名。 可以将不同版本的 Web 应用部署到每个槽中。

一个槽是生产槽。 此槽是用户连接时看到的 Web 应用。 确保部署到此槽的应用稳定并经过严格测试。

使用其他槽来托管新版 Web 应用。 针对这些实例,可以运行测试,如集成测试、验收测试和容量测试。 请先解决所有问题,然后再将代码移动到生产槽中。 其他槽的行为类似于其自己的应用服务实例,你可以确信测试会显示应用在生产环境中的运行方式。

如果对新应用版本的测试结果满意,请通过将其槽与生产槽交换来进行部署。 与代码部署不同,槽交换是瞬间完成的。 交换槽时,会交换槽主机名,并且立即将生产流量发送到新版应用。 使用槽交换进行部署时,应用永不会以部分部署状态向公共 Web 公开。

如果发现尽管进行了仔细测试,但新版本仍然存在问题,则可以通过交换回槽进行回滚。

了解作为单独 Azure 资源的槽

使用 Web 应用的多个部署槽位时,这些槽将被视为该 Web 应用的单独实例。 例如,它们分别在 Azure 门户的“所有资源”页中列出。 它们分别有其自己的 URL。 但是,所有槽共享应用服务计划的资源,包括虚拟机内存和 CPU,以及磁盘空间。

创建部署槽位和层

仅当 Web 应用使用标准层、高级层或独立层中的应用服务计划时,部署槽位才可用。 下表显示了可以创建的最大槽数:

最大过渡槽数
免费 0
共享 0
基本 0
标准 5
高级 20
独立 20

避免在交换期间冷启动

开发人员用于创建 Web 应用的多种技术需要对服务器执行最终编译和其他操作,才能将页面发送给用户。 当应用启动并收到请求时,其中许多任务均已完成。 例如,如果使用 ASP.NET 生成应用,则会在第一个用户请求页面时编译代码并完成视图。 该页的后续请求将收到更快的响应,因为代码已经编译。

初始延迟称为“冷启动”。 可以通过使用槽交换部署到生产环境来避免冷启动。 将槽交换到生产环境后,将会“预热”应用,因为操作会向站点根目录发送请求。 预热请求可确保完成所有编译和缓存任务。 交换之后,站点的响应速度就像部署数天后的响应速度一样快。

创建部署槽位

在创建槽之前,请确保 Web 应用在标准层、高级层或独立层中运行:

  1. 在 Azure 门户中打开 Web 应用。

  2. 选择“部署槽位”窗格。

  3. 选择“添加槽”。

  4. 为槽命名。

  5. 选择是否克隆其他槽中的设置。 如果选择克隆,则会将指定槽中的设置复制到新槽。

    Screenshot of naming a new deployment slot and choosing whether to clone settings in the Azure portal.

注意

虽然可以将设置克隆到新槽,但无法克隆内容。 新槽一开始都没有内容。 必须使用 Git 或其他部署策略来部署内容。 克隆操作会将配置复制到新槽。 克隆设置之后,可以独立更改两个槽的配置。

选择“添加”以创建新槽。 现在,“部署槽位”页的列表中有了新槽。 选择要查看其管理窗格的槽。

Screenshot of the list of deployment slots for a web app.

访问槽

新槽的主机名派生自 Web 应用名称和槽名称。 在“部署槽位”页中选择槽时,会看到此主机名

Screenshot of finding the URL for a new slot in the Azure portal.

可以将代码部署到新槽,方法与部署到生产槽相同。 只需在所用的部署工具的配置中替换新槽的名称或 URL。 如果使用 FTP 进行部署,则在槽的 URL 下方就能看到 FTP 主机名和用户名。

新槽实际上是具有其他主机名的独立 Web 应用。 这也是 Internet 上任何人只要知道其主机名就可进行访问的原因。 除非使用搜索引擎注册槽或从爬网页面链接到该槽,否则该槽不会显示在搜索引擎索引中。 普通 Internet 用户不会知晓。

可以使用 IP 地址限制来控制对槽的访问。 创建允许访问槽的 IP 地址范围列表或拒绝访问槽的范围列表。 这些列表类似于可在防火墙上设置的允许范围和拒绝范围。 使用此列表可仅允许属于公司或开发团队的计算机进行访问。

创建部署槽

1.

Azure 应用服务如何确保产品性能不会在交换后立即下降?

2.

以下哪些项不会在 Web 应用的所有部署槽位之间共享?