2017-05-17 92 views
1

有关实例的Azure网站清晰度是否将这些实例运行在多台计算机上,如Web服务器场环境,其中一个客户端请求(会话)可以由服务器场中的不同服务器作为服务器。Azure网站实例究竟是什么

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

Azure实例如何工作。这并不意味着我们可以在同一个计划下拥有10个网站,让我们可以通过以前的标准。

我在托管关于Azure的asp.net基于webform的网站我很困惑,究竟是如何工作的。互联网上有很多文章造成混乱。

回答

2

PaaS的事情是,你不要必须关心这一点。如果你有一个有状态网站,您可以使用ARR亲和力设置,以确保客户端总是得到相同的实例: enter image description here

+1

当然,如果一个实例因故障或自动缩放而关闭,事情就会崩溃;) – juunas

+0

ARR Affinity很大程度上解决了这个问题,但并不能完全证明这一点,因为如果该实例失败,我们仍然可能丢失会话并且对我的理解实例就像一个虚拟机。所以从我这边来看,失败证明可以是基于SQL SERVER的会话解决方案。现在这会导致另一个问题,如果会话服务器关闭了SQL Server群集服务器或VR Server与SQL Server的用户帐户。 – Learning

+0

SQL Server将是一个选项,但用于存储会话信息的首选Azure资源是Redis缓存。标准层提供复制和故障转移功能,并提供99,99%的SLA。这可能是最好的,你可以得到(没有100%的解决方案)。 –

2

添加到马丁·布兰德的答案。

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

有一个更好的方法来保持Web农场中的会话信息,而不是依赖ARR Affinity的粘性会话。 将会话数据放在中心位置。为此,您可以使用Azure Redis缓存或SQL数据库。有一些现成的会话状态提供程序可用于插入ASP.NET应用程序。这样你的会话状态就不会存储在实例中,所以你不需要关心客户端是否碰到同一台服务器。

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

+0

我同意Redis会是更好的选项来存储会话信息。 –