【问题标题】:Moving websites from dedicated server to cloud server将网站从专用服务器移动到云服务器
【发布时间】:2017-03-29 16:01:35
【问题描述】:

我们很少有网站托管在专用服务器上,如果我们决定将网站从专用服务器移动到云服务器,那么我们应该从编程的角度考虑什么。我们所有的网站都是基于 Asp.Net 并使用不同的会话变量并依赖于 MS SQL Server 标准 2012 数据库。

互联网上有很多可用的信息,其中一些令人困惑,甚至混淆是云环境的类型。提供服务的销售团队总是推动迁移到云但是当我们提出这些问题时,并没有明确的答案。

几年前,我在共享主机方面遇到了一个这样的问题,当时其中一个网站在调查后不断丢失同一用户的相同请求的会话变量,我发现共享主机是基于农场的共享主机,因此相同的用户会话由不同的服务器提供服务服务器场中的服务器,如果第一个请求发送到服务器 1 而第二个请求发送到服务器 2,则会导致会话变量丢失。此问题已通过在 web.config 中添加机器密钥得到解决。

老实说,我不知道云服务器是如何工作的。我担心会话变量丢失,我可以通过使用基于 SQL 的会话状态来解决。

从配置或编程的角度来看,在注册基于云的 Web 服务器之前应该采取哪些其他精度。

【问题讨论】:

    标签: asp.net sql-server session cloud cloud-hosting


    【解决方案1】:

    每当迁移到基于云的解决方案时,要牢记的重要因素之一就是“状态管理”。在云中,您正在考虑使用多个实例进行横向扩展,因此排除了进程内状态管理,因为负载均衡器会将请求分发到不同的实例,并且存储在一个实例中的会话变量对另一个实例不可用。因此,诸如基于 Sql db 之类的 proc 选项是选项。我一直在广泛使用 Microsoft azure cloud。在 azure 中设置进程外会话状态的选项是

    1. 基于 SQL azure 数据库的会话状态 provider

    2. 基于 Redis 缓存的会话状态(redis 缓存作为托管服务提供)link

    3. 基于 Azure 表存储的会话状态 provider

      一般来说,退出 proc 是一种方式,您可以根据您选择的技术和云堆栈来决定实施。

    【讨论】:

      【解决方案2】:

      在云服务器上工作时需要了解的几点。

      1. 如果我们使用单个服务器,例如阿里云或任何其他云提供商的 ECS,那么设置将与我们使用物理服务器的设置相同。
      2. 如果我们使用阿里云RDS等托管服务,则需要注意网络字符串(db url)。
      3. 如果我们在云上的负载均衡器后面使用多个服务器,例如阿里云上的 SLB,则必须注意会话维护。建议使用集中式会话管理器,例如 Memcache。否则我们需要调整负载均衡器配置。

      我的大部分参考资料都来自阿里云,因为我一直在研究它,所以请多多包涵。您也可以查看他们的虚拟主机包

      【讨论】:

        【解决方案3】:

        我最近做了同样的研究。我同意@Aravind 的观点,即外部存储库是最安全/最好的方法;但是,Azure 使用的负载均衡器 (ARR) 默认启用了持久性。检查您的 cookie,您将看到一个 ARRAffinity cookie。这意味着客户端将始终尽可能地访问同一个实例,从而允许在一定程度上使用 InProc 会话。

        同样,最好使用外部 repo,但如果您需要快速启动 azure,或者无需太多努力,这是可能的。

        更新:您现在可以在网络应用的设置中打开和关闭 ARR Affinity

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-03
          • 1970-01-01
          • 2017-11-08
          • 1970-01-01
          • 1970-01-01
          • 2020-10-27
          • 2017-02-02
          • 2015-05-05
          相关资源
          最近更新 更多