2

我正在使用以下连接字符串将 Azure Web-Role 连接到在虚拟机上运行的 SQL 实例。它工作正常!

<add key="VMConnectionString" value="Server=tcp:<mydomain>.cloudapp.net,1433;Database=myDatabase;User Id=myUserID;Password=**********;" />

我的问题是,我应该使用虚拟机的内部 IP 地址(例如 10.1.0.0/16)而不是公共 DNS 来减少延迟吗?我是否需要将 Web 角色和 VM 放在 Azure 中的同一虚拟网络上?我尝试使用门户中所述的 VM 的内部 IP 地址,但它无法连接,尽管端口 1433 完全打开。我应该补充一点,没有虚拟网络。

4

3 回答 3

4

我现在已经设法通过首先在 Azure 门户中创建一个虚拟网络并将一个新的 VM 部署到该网络来引用运行具有内部 IP 10.0.0.4 的 SQL Server 的虚拟机。

使用 web 角色,您无法在通过门户进行配置时指定虚拟网络设置。因此,要将 web-role 带入网络,您需要在 .cscfg 文件中定义它:

<NetworkConfiguration>
  <VirtualNetworkSite name="VirtualNetworkName" />
  <AddressAssignments>
    <InstanceAddress roleName="MyWebRole">
      <Subnets>
        <Subnet name="AppSubnet" />
      </Subnets>
    </InstanceAddress>
  </AddressAssignments>
</NetworkConfiguration>

您现在可以在门户中确定 VM SQL Server 的内部 IP,并将其添加到我的应用程序 web.config 中定义的连接字符串中。将您的应用程序发布到 Azure 并提供您已正确配置端点并打开防火墙它应该可以正常工作。

在运行了一些性能测试之后,通过公共 DNS 使用内部 IP 可以获得利润。我推荐将Web 角色连接到 VM的指南作为一个很好的参考点。

另一件事。在连接字符串中使用 DNS(例如 myvm.cloudapp.net)时,我找不到可预测的方法来知道 Web 角色将从哪个 IP 调用。因此,很难在 VM 上打开端口 1433 以仅允许 Web 角色通过。使用内部 IP,我刚刚打开了整个子网。

于 2013-03-09T18:51:08.273 回答
2

您是否在门户中启用了 VM 的端点?这是一个简单的操作,您只需选择端口和协议。这是一篇文章,解释了如何:

http://www.windowsazure.com/en-us/manage/windows/how-to-guides/setup-endpoints/

我还建议您使用 A 记录 mydomain.cloudapp.net 而不是 vip,因为重新部署时 vip 可能会发生变化。vip 在重启时不会改变。

于 2013-03-09T15:40:37.907 回答
1

您需要使用公共虚拟 IP 地址:Windows Azure 是否为 VM 提供静态 IP?

但是我要问,您为什么要在 Windows Azure 的 VM 上安装自己的 SQL 服务器实例而不使用 SQL Azure?

如果您想托管自己的 SQL Server,在此阶段我建议您使用 Amazon EC2 实例,因为它们具有更多功能,例如永久静态 IP。但是,您还需要将其他所有内容转移到同一个数据中心,因为让一个站点跨不同的数据中心访问 SQL Server 确实很糟糕的延迟明智。

于 2013-03-09T14:00:13.380 回答