【发布时间】:2013-09-30 19:35:43
【问题描述】:
我正在尝试在 Windows Azure 中设置一个虚拟网络并使用它来避免在我的 (CUSTOM) SQL Server 虚拟机上打开一个公共端点。但是,当我尝试通过云服务的 URL 访问我的 Web 应用程序时,我不断收到与网络相关的错误,指出 SQL Server 不会及时回复。
我在网上寻找了有关如何连接到自己的自定义创建的 VM 而不是 Windows Azure 的预配置虚拟机之一的教程,但发现几乎没有什么用处。我发现的所有建议我都试过了。
我在 Windows 7 中工作,使用安装了 Windows Azure SDK SP1 的 Visual Studio 2010。
以下是我尝试做的一些无济于事的细节。
我有:
- 使用
- 创建了虚拟网络
- 自己的亲和组
- 单个子网
- 向其中添加了虚拟机
- 确保将其与我为 VNet 创建的关联组放在同一个关联组中
- 已安装 SQL Server
- 按照this tutorial 配置 SQL Server
- 添加了我的数据库,并且我已验证的登录名可以访问该数据库
- 两者:
- 将现有的 Asp.NET 网站转换为 Web 应用程序并添加了 Azure 部署包事物 see here for the tutorial I followed
- 我为此使用了
r-click->Publish to Azure/Publish,配置为使用我已经部署在带有 SQL VM 的 VNet 中的现有云服务,并确保它与 VM 位于同一子网中。 - 还值得注意的是,此应用程序确实通过在端口 1433 上打开公共端点并使用公共 IP 地址连接到部署在虚拟网络外部(仍在 Azure 中)的类似 VM。李>
- 我为此使用了
- 在按照this tutorial (the first one I mentioned) 配置的全新 Azure 云服务项目中使用了转换后的 Web 应用程序代码
- 我尝试了两种发布方式:
r-click->Publish to Azure/Publish-
r-click->Package并将其上传到 Azure 门户
- 在这两种情况下
- VNet(和子网)中的现有云服务
- 以及在 VNet(和子网)中创建的全新云服务,并在创建过程中上传包或在启动后立即发布到服务。
- 我尝试了两种发布方式:
- 将现有的 Asp.NET 网站转换为 Web 应用程序并添加了 Azure 部署包事物 see here for the tutorial I followed
-
仔细检查了我经历过的所有云服务和虚拟机都在 VNet 中,并且在同一个子网中。
-
My Cloud 服务通常位于内部 IP 10.4.2.5,VM 位于 10.4.2.4。我的连接字符串与the first tutorial I mentioned 相同,只有正确的身份验证和我的VM 的内部IP 指定。连接字符串如下:
<add name="SQLServerinWAConnection" connectionString="Data Source=tcp:SQLVMInternalIPAddress;Initial Catalog=MyTableName;User ID=loginName;Password=thepassword;Encrypt=true;Trusted_Connection=false;TrustServerCertificate=true" providerName="System.Data.SqlClient" />- 我也试过指定
Trusted_Connection=true
- 我也试过指定
-
无论我如何尝试,我都无法让此应用程序连接到该 VM 上的 SQL Server 实例。我什至在端口 1433 向 VM 添加了一个公共端点,并尝试使用其公共 IP 和私有 IP,但无济于事。那是我的后备力量,所以现在我损失惨重。
一些可能有也可能没有任何影响的实现细节:
- SQL Server 实例是命名的,而不是默认的,因此在 SQL Server Management Studio 的对象资源管理器中,它不仅仅是“SQLServerVM”,而是“SQLServerVM\SQLServerDB”。
- 我在 VM 的防火墙上为任何 IP 范围和任何用户打开了端口 1433
我会根据要求添加任何其他详细信息(如果您不想阅读整个教程来弄清楚我做了什么)。
根本没有可用的清单来说明 Web 角色或网站需要执行哪些操作才能连接到其虚拟网络中的虚拟机?这将大大简化故障排除。
任何建议将不胜感激。我非常希望能在一天结束前完成这项工作。
【问题讨论】:
-
Windows Azure Platform Training Kit 有一个动手实验室,其中网站部署到 PaaS 云服务中,SQL Server 部署到 IaaS 云服务中。两种云服务都在同一个 VNET 中 - 尽管不是同一个子网 - 允许网站通过 VNET 而不是公共端点连接到 SQL Server。
-
所以我从中得到的是,VNET 中的 2 个服务必须位于单独的子网中,以便在没有公共端点的情况下相互连接。那是对的吗?因为这在逻辑上没有意义。我现在正在查看链接。
-
我不知道它们是否必须位于不同的子网中 - 但这样做可能会让您的生活更轻松。
标签: sql-server azure azure-web-roles azure-virtual-machine azure-virtual-network