![Azure 超小型虚拟机可用性集](https://linux22.com/image/801668/Azure%20%E8%B6%85%E5%B0%8F%E5%9E%8B%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%8F%AF%E7%94%A8%E6%80%A7%E9%9B%86%20.png)
我当前的超小型虚拟机已达到极限,因此我决定创建第二个超小型实例并将两者添加到可用性集中,这样我的服务始终可用,并且通过负载平衡器也可以平衡负载。我的问题是知道数据会发生什么?它会在两者上发生吗?因为我需要两者上都可用的相同数据!例如:
请求1 -> vm1 -> 添加数据 请求2 -> vm2 -> 想要读取最先放在 vm1 上的数据
或者甚至更简单:如果我运行一个 wordpressblog 并添加一个博客,它必须在两者上都可用!
米奇
答案1
每个虚拟机都由自己的 vhd 支持,该 vhd 位于 Azure 存储中的 Page Blob 中。这不是存储需要在多个实例之间共享的任何类型的内容的好地方(并且进程内会话状态也将仅限于该虚拟机的正在运行的实例)。您需要将会话状态和任何其他持久数据存储在两个虚拟机都可以访问的公共位置,但不要不是将内容直接存储在 vhd 的主磁盘或临时磁盘上。
对于会话状态,您可以轻松设置 Windows Azure SQL 数据库(基本上是 sql-as-a-service)并将其用作会话状态提供程序。或者您可以运行 memcached、使用表存储或选择完全不同的东西 - 我将其他想法留给您去想象。
运行 WordPress 也是如此 - 内容需要放在通用数据存储中。由于 WordPress 使用 MySQL,您可以在独立的虚拟机实例中设置 MySQL,或者通过 Azure Store 订阅 MySQL 数据库。
另一种选择是将内容存储在 Blob 存储中,它完全独立于您创建的任何虚拟机,并且非常易于访问。Blob 存储以及表存储具有出色的语言 SDK 支持,这些 SDK 构建在 REST API 之上(目前为 .net、php、java、python、node 和 ruby SDK)。您可以从 Azure 中获取所选的 SDK下载页面。您还可以在github 仓库。