新版Windows Azure 中有许多非常有用的新特性。上一篇文章,我简单介绍了一下以远程桌面访问Windows Azure虚拟机。本文中我会讲到另外一个非常酷的特性 - Windows Azure Connect.

什么是 Windows Azure Connect

以下是MSDN中,对于Windows Azure Connect 的定义。

有了Windows Azure Connect,您可以使用简单的用户界面来配置您公司内的本地电脑或虚拟机与Windows Azure内role之间的IP-sec连接。IP-sec利用密码安全服务来保证IP网络上通信的安全性。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

上图可以看到,使用Windows Azure Connect, Worker Role 1 和 Web Role 1 连接至开发用电脑和数据库服务器,它们有一些是位于公司内,有一些则不是。

有了Windows Azure Connect,部署在云端的各种role实例都可以使用公司内部网或者其他任何地方的资源了。这意味着role实例可以连接本地数据库,访问本地共享资源,文件夹和打印机等等。 

Windows Azure Connect与Windows Azure AppFabric的区别

Windows Azure Connect 所提供的功能似乎与Windows Azure AppFabric有所重叠。它们都是为了解决云端和本地资源的相互通信而生的。下表列出了我所认为的区别。

 

Windows Azure Connect

Windows Azure AppFabric

目的

本地机器与Windows Azure role的IP-sec 连接

运行于云端的应用服务

连接性

IP-sec,Domain-joint

Net Tcp,Http,Https

组件

Windows Azure Connect Driver

Service Bus, Access Control, Caching

用途

Windows Azure role 连接本地数据库服务。

Windows Azure role使用本地共享文件,文件夹和打印机等。

Windows Azure role加入本地AD。

向互联网暴露本地服务。

将授权服务置于云端。

与现有的身份认证服务相结合,例如Live ID,Google ID等等。

使用分布式缓存。

 

以下是一些可以使用的场景:

场景

Connect

AppFabric

希望互联网上的用户能够访问到公司内部网部署的服务

 

Y

在Windows  Azure内部署了一个网站,该网站需要使用到公司内部的数据库。我不希望将数据库暴露给互联网。

Y

 

公司内部网部署了一个服务,其使用AD授权方式,同时Windows Azure内部署了一个网站,要使用该服务。

Y

 

公司内部网部署了一个服务,互联网上的用户需要通过验证和授权才能使用该服务。

 

Y

公司内部网部署了一个服务,Windows Azure内部署了一个网站。互联网用户可以使用该服务。而通过AD授权,用户可以在网站上获得更多功能。

Y

Y

 

如何开启Windows Azure Connect功能

我们谈论了许多 Windows Azure Connect 与Windows Azure AppFabric之间的区别。我们看一下如何开启并使用Windows Azure Connect。首先,这些新特性都处于CTP 阶段,我们需要先申请才能使用。访问Windows Azure Portal ,如下找到Windows Azure Connect。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

在该页,您可以发送加入Beta项目的申请。几天后,微软会向您发送一份邮件(您Live ID的邮件地址)。

之后,我们可以到 Windows Azure Connect 已经被激活了,我们点击顶部的Connect按钮,或者点击左边导航栏的Virtual Network 项。

如果我们首次进入Connect页面,我们必须开启Windows Azure Connect。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

在页面上,我们可以看到一些Windows Azure Connect 的信息。

 通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

将本地机器加入Windows  Azure Connect

Windows Azure Connect可以在本地机器和Windows Azure role之间搭起一条 IP-sec 连接。所以首先需要将一台本地机器加入我们的Windows Azure Connect。点击页面顶部Install Local Endpoint 按钮,网站会给出一个URL。在需要被加入Connect的机器上打开该网址,并下载软件。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

安装完之后,任务栏右下角会出现一个托盘图标,表明当前机器已经加入了Connect。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

该软件每5分钟便会刷新一次,得到当前的连接信息。当然我们也可以手动刷新。在portal页面选择Activated Endpoints 节点,在Windows Azure Portal  中我们已经可以看到该机器了。

 通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

将Windows Azure Role 加入Windows  Azure Connect

在Visual studio中创建一个简单的ASP.NET web role,右击该项目,打开其属性(properties)页面,在Virtual Network 标签页内,勾选Activate Windows Azure Connect选项。

下一步,从Windows Azure Portal 上获得激活令牌。在相同的页面,点击Get Activation Token按钮。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

将该令牌复制到Visual  Studio先前的Connect标签页中。如下图:通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

 

之后,将该应用部署至Windows Azure。 在完成部署之后,我们可以在Windows Azure Portal - Virtual Connect看到role实例。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

 建立连接组

最后一步,我们需要创建一个连接组,包含上文的本地机器和role实例。

直到我们为其创建连接组,本地机器和实例默认都不会进行连接。机器和实例可以被用于多个连接组。

在Virtual Connect 页面,在左导航栏点击Groups and Roles 节点, 在顶部点击Create Group 按钮。接着会出现一个对话框,我们需要指定连接组名称,备注,并将本地机器和role实例选入该组内。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

在Windows Azure更新完 连接组设置后,我们可以在该页面看到连接组和端点。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

我们回到本地机器的界面,会发现托盘图标已经改变了,状态也变为Connected了。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

Windows Azure Connect 每5分钟便会更新一次连接组信息。如果你发现状态仍然为Disconnected 状态,右键点击托盘图标,点击刷新按钮,让软件取得最新的连接组信息。

 

测试本地机器和Windows Azure实例之间的 Windows  Azure Connect

现在本地机器和Windows Azure role 实例已经连接上了。这意味着它们已经可以在IP级别进行相互通信了。举例,我们可以打开本地SQL Server 端口,让role通过机器名或者IP地址来连接该 SQL Server。

Windows Azure Connect 使用 IPv6 连接本地机器和role实例。您可以在Windows Azure Portal Virtual Network选中该端点,可以查看其IP地址。

下面我会进行2个简单的试验。第一个是PING。

当本地机器和role实例连接好之后,在防火墙设置中打开ICMP协议后,我们便能PING到它们。在本地机器和role实例内分别打开命令行窗口,执行如下命令:

netsh advfirewall firewall add rule name="ICMPv6" dir=in action=allow enable=yes protocol=icmpv6

感谢 Jason Chen, Patriek van Dorp, Anton Staykov 和 Steve Marx,它们帮助我开启了ICMPv6 设置。 完整的讨论在这里 。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

使用Remote Desktop Access 特性,登录Windows Azure role 实例。可以参考前一篇文章 。

我们现在可以通过机器名来PING本地机器或者role实例了。如下是我在Windows Azure  role实例内PING我的本地机器。

通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

我们也可以使用IPv6地址来PING 对方。下图是我在本地机器上使用IPv6地址来PING  role实例。

 通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

另外一个试验便是文件夹共享。在本地我共享了一个文件夹,如果登录到role实例上,我们可以在文件管理器内看到该共享目录。

 通过Windows Azure Connect ,实现本地机器与Windows Azure 虚拟机的相互连接(转+译)

总结

本文我介绍了另外一个新特性- Windows Azure Connect。利用该新特性 ,我们本地资源和role实例可以进行相互连接。这样,Windows Azure应用便可以使用我们本地资源了。例如数据库,打印机等,且无需向互联网暴露这些资源。

 

 

本文翻译自:http://geekswithblogs.net/shaunxu/archive/2010/12/16/communication-between-your-pc-and-azure-vm-via-windows-azure.aspx