【问题标题】:What exactly are Azure website instanceAzure 网站实例到底是什么
【发布时间】:2017-05-17 14:42:47
【问题描述】:

Azure 网站关于实例的清晰度,这些实例是否在多台机器上运行,例如 Web 服务器场环境,其中一个客户端请求(会话)可以由场中的不同服务器提供服务。

服务器场 asp.net 应用程序的问题是,如果是这种情况,我们可以丢失会话变量,为了解决这个问题,我们在 web.config 中添加机器密钥,以确保客户端会话始终是同一服务器的服务器,所以会话变量不会丢失。

Azure 实例如何工作。这是否意味着我们可以在同一个计划下拥有 10 个网站让 ex s1 标准。

我在 Azure 上托管 asp.net 基于 webform 的网站 我对实例的工作原理感到困惑。网上有很多文章造成混乱。

【问题讨论】:

    标签: asp.net azure azure-web-app-service instances


    【解决方案1】:

    PaaS 的特点是您不必 关心这些。如果您有一个 statefull 站点,则可以使用 ARR Affinity 设置来确保客户端始终访问同一个实例:

    【讨论】:

    • 当然,如果一个实例由于故障或自动扩展而宕机,事情就会崩溃;)
    • ARR Affinity 在很大程度上解决了这个问题,但不能完全证明,因为如果该实例出现故障,我们仍然可以失去会话,并且据我所知,实例就像一个虚拟机。因此,从我的角度来看,故障证明可以是基于 SQL SERVER 的会话的解决方案。现在这又引出了另一个问题,如果会话服务器出现故障,SQL Server 集群服务器或带有该用户帐户的 SQL Server 的 VR 机器会怎样。
    • SQL Server 是一种选择,但用于存储会话信息的首选 Azure 资源是 Redis 缓存。标准层提供复制和故障转移,并提供 99.99% 的 SLA。这可能是你能得到的最好的(没有 100% 的解决方案)。
    • 虽然 ARR Affinity 有助于提高兼容性,但它不能成为应用程序的最终解决方案。一方面,您无法启用自动缩放,因为当其中一个实例被自动缩放关闭时,它会全部崩溃。并且发生硬件故障,实例也可能因此而被杀死。
    【解决方案2】:

    补充 Martin Brandl 的答案。

    一个应用服务计划可以有多个实例。这些实例运行该计划中的所有应用程序。所以它很像一个经典的网络农场。除了它更容易管理。

    有一种更好的方法可以将会话信息保存在网络场中,而不是依靠 ARR Affinity 的粘性会话。 将会话数据放在一个中心位置。为此,您可以使用 Azure Redis 缓存或 SQL 数据库。这些有现成的会话状态提供程序,您只需将其插入 ASP.NET 应用程序即可。这样一来,您的会话状态就不会存储在实例上,因此您无需关心客户端是否访问同一台服务器。

    我对 ARR Affinity 的问题是 Azure 不保证您的实例将继续运行。硬件故障可能会导致故障,您会丢失部分会话数据。如果你使用自动缩放,同样的事情。

    【讨论】:

    • 我同意 Redis 是存储会话信息的更好选择。
    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2017-07-25
    • 2012-10-11
    相关资源
    最近更新 更多