《Windows Azure Platform 系列文章目录》
首先我们回顾前几章介绍的内容:
1.首先我们新建了预装了SQL Server 2012的Virtual Machine
2.创建完毕后,我们在这个VM里mount disk,分别是F盘(50GB) 和G盘(80GB)
3.然后我们配置SQL Server 2012,将Data,Log, Backups分别指向我们创建的F盘和G盘。将TCP/IP协议设置成Enabled,并且配置防火墙规则,允许访问1433端口。
本章我将给大家介绍,如何设置VM的Endpoint。这样,我们通过本地的SQL Server Management Studio,就直接可以连接到云端创建的SQL Server 服务了。
首先我们先讲一下关于Windows Azure的EndPoints的概念。Windows Azure EndPoints分两种,分别是Public Port和Private Port。
- Public Port。表示这个Endpoint是对Internet开放的。所有从外部发起的访问,都是通过Public Port来进行的。
- Private Port。这个Endpoint不对Inetnet开放,只对Windows Azure 内部开放。如果Windows Azure包含多个实例(multi instance)并行计算,那么实例与实例(instance to instance)的内部访问是通过Private Port来实现的。
- Endpoint使用TCP或者UDP的协议,TCP协议包括HTTP和HTTPS通信。
我们来看下面一张图:
上图中,Public Port是57500,Private Port是1433。
- 当外部的资源想访问Windows Azure服务时,是通过端口号为57500来访问的。
- 然后Windows Azure的Load Balance会将这个请求转发到内部1433端口号,来实现访问。
- 这样的好处是:Private Port可以实现内部消息的相互通信。Public Port可以开放Internet到Windows Azure的访问。两者互不冲突。而且在多实例的时候,可以将Public Port的消息通过负载均衡路由到每个VM,实现请求的自动负载均衡。具体架构如下图:
Azure VM默认情况下,只开启了RDP的端口和PowerShell的端口,其他的端口都是关闭的。
这就意味着,默认情况下,在客户端想访问Azure VM的其他端口,比如IIS 80是不可能的。
只有Azure管理员开启了相应的端口号,即Public Port,才可以正常访问Azure VM的IIS。
那开始我们本次的教学内容吧。
1.首先登陆Windows Azure管理界面https://manage.windowsazure.com/
2.在列表中选择"Virtual Machine",找到之前创建的SQL2012VM1并选中它。
3.选中后,页面会跳转到SQL2012VM1的DashBoard窗口,我们点击Endpoints
我们会发现,默认会有一个RemoteDesktop的端口号,也就是我们的远程桌面连接是通过3389端口连接到SQL2012VM1这台VM上的。
4.然后我们点击窗口最下面的Add Endpoint,如下图:
5.在上图中,直接点击Next按钮。
6.在Add Enpoint窗口里,将Name设置为sqlserver,Protocol选择为TCP,将Public Port设置为57500, Private Port为1433。
这样对于Internet用户来说,访问公网的是57500端口,而这个端口对应的内网端口是1433。这样就做到了端口映射的功能。
7.最后选择保存。
8.保存完毕后,我们可以看到新建的EndPoint
9.我们启动本地的SQL Server Management Studio
10.将创建的DNS Name和端口号(57500)输入Server Name,然后在输入sa的密码。点击Connect
11.这时候,我们连到的SQL Server其实就是之前创建的SQL Server VM。然后我们选择Database,右键, New Database。创建一个新的数据库。比如叫LeiDB。
12.创建完成后,我们通过远程桌面连接,连接到名为LeiSQL2012VM的Virtual Machine上,打开SSMS和资源管理器。可以看到已经创建了名为LeiDB的Database,并且这个Database文件保存在F盘里。
13.这样就实现了运行本地的SSMA,连接Public Port 57500,映射到Private Port 1433,连接到Virtual Machine的SQL Server服务。并且VM中的SQL Server将数据保存在Mount Drive中(实际是Azure Storage的VHD),可以实现数据的持久化。