在Windows Azure中使用自己的域名

       请参考:http://blog.smarx.com/posts/custom-domain-names-in-windows-azure

       本文是对这篇文章部分解释和补充。

       并请记住,此博客总是能给你在Windows Azure的开发中带来帮助。

 

域名解析机制浅析

       域名解析,本是个很简单的事情:我们如若想将我们的域名指向某个网站提供的二级域名,只要设置cname记录;如果我们知道服务器的ip,直接设置A记录即可。在Azure的使用中,却总是有些人有点疑惑。

 

       这里我们首先要弄清楚DNS解析域名的过程,记住,只要是通过域名解析设置的(不是通过页面重定向技术实现的),不管中间经历多少域名的转换,从用户在浏览其中输入域名地址,DNS返回给浏览器的一定是最终服务器的IP地址,中间所有域名解析对于浏览器来说不可见。

       事实上,请求者不需要知道这些细节,DNS的作用在于你给我一个域名,我尽其所能找到这台服务器的IP地址。因为,互联网本是基于IP的,但是为了好记忆才添加了一个DNS应用层,在用户看来,一个域名始终指向一个IP,一个IP可能被多个域名指向。

       并且对于开发者而言,除了重定向外,通过DNS发过来的请求,其HTTP请求的Host部分,一定是最初用户输入的地址,不管中间经历什么其他的域名。

       所以,这样提示我们开发者,应该根据Host来区分用户输入的域名地址,以及做相关的导航控制,不应该依赖于某个绝对路径。

 

几种均衡负载方式

       Azure的域名解析问题可能主要来自多个Instance,每个instance是一个虚拟服务器,那这样IP地址怎么确定?

       这里我们首先来分析,均衡负载有几种方式,可以参阅《构建高性能网站》,最简单的莫过于重定向,但是这样会改变浏览器中用户输入的域名,可能给里面的内容导航带来混乱;其次可以通过DNS来设置,可以为一个域名配置几个IP,这样DNS可以根据一定的算法分配到不同的IP地址;第三种方法是通过硬件来实现,市场上也有许多相关的产品,其实思路很简单,由交换机内部实现将处理分配至不同的内部服务器或者应用程序,这样每个内部服务器不需要分配固定IP,这样的方式,服务对外而言,始终拥有固定的IP。

 

Hosted Service的IP实验

       注意,本部分是根据笔者实验推断,有部分可能不是真实情况,仅仅作为参考!

       Windows Azure的均衡负载通过硬件来实现,所有请求和虚拟服务器都由Fabric集中管理,所以每一个Hosted Service,不管里面真正的应用程序或者数据存储在那个虚拟服务器或者有多少个instance来均衡负载,每一个Role对外都只有一个IP,并且Azure为每一个处于Production状态的Role提供一个二级域名,如:http://egyee.cloudapp.net。

       但是注意这里的IP,不是固定IP,因为一个Role重新部署之后会分配不同的IP,所以应该绑定其提供的二级域名,而不应该对其IP有任何打算。很简答,Azure不认识任何Role,每一次部署都会分配IP,不可能帮你记住某个Role上一次分配的IP,看下面截图:

001

       由上图可知,我在同一个Hosted Service中两次部署同一Role,得到的IP分别是:111.221.92.83和111.221.92.89。虽然两者都对应二级域名http://egy.cloudapp.net,但是两次部署却分配两个不同的IP。

       Windows Azure保留IP的分配权,及同一Hosted Service会分配不同的IP地址,所以,其在上提供了一个二级域名,使用户在使用的时候,针对同一个Hosted Service有相同的访问路径,因此,在Windows Azure中,我们只能相信二级域名,而不能依赖IP地址。

       Windows Azure保留动态的域名还使得应用程序存放和执行位置的更改变得容易,比如,你指定应用程序只在亚洲的数据中心执行,那么IP地址是分配到亚洲某个数据中心的某个交换机,如果你改为在北美洲,那么IP地址则会分配到北美数据中心的IP地址之一。通过这样来使得应用程序执行场所以及数据存放地点离用户最近,以减少网络传输延迟。

       值得注意的是,减少网络传输延迟有几种方式,如缓存,CDN,以及将服务器处理靠近用户,这些都是云计算带给开发者的好处,我们自己架设服务器不可能得到这些好处。

       同时另外值得注意的是,在一个Role部署之后,如果不做任何修改,比如地点等,IP地址理论上不会发生改变,不过未经验证,总之我们不应该关注IP。

       域名解析的配置方法也很简单,只需要在域名管理里增加一个CNAME记录即可。

 

在多服务器负载情况下的开发注意事项

       如果,应用程序可能被不同的域名指向,那么我们的应用程序不应该依赖于任何绝对路径,包括导航。如果你想要在某个导航写上全路径,则Host部分应该取自HTTP请求的Host,而不是自己假设的某个域名,事实上,我们应该始终这样做,不管应用程序被什么域名解析,始终保证不会出现问题。

       相反,利用页面重定向的方式实现的均衡负载,前面已经分析,实际上应用程序接收到的Host并不代表用户输入的域名,所以这种情况下,可能会导致某些混乱的情况。

       事实上,重定向是服务器向浏览器返回一个3XX的响应代码,根据HTTP协议规则,浏览器应该向新的URI地址发送请求,本来这不会打乱我们上面的原则,但问题是,页面重定向针对Uri设置,所以不能保证一个域名下的所有Uri都被正确重定向,结果导致一个域名下的各个资源路径可能不在同一个域中。而域名的解析式针对一个域名,它能保证所以Uri都处于同一个域。

       总之,要小心使用重定向,重定向的页面中可能包含一些相对路径,从而使得这些路径对于原来的请求路径处于不同的域中。

       云计算中的数据一般不会存储在本地服务器内,都是通过比如REST的方式读取和修改数据,因此是不依赖于任何服务器的。

       在架设分布式服务或者网站或者存储的时候,这些情况都是必须考虑的,一定要准备好相关的方案!

 

总结:

       像我之前的一些文章一样,我不对文章内容负责,因为我写的东西一般都是基于自己思考,不会随便去抄一个MSDN或者什么之类。这样由于笔者水平有限,可能导致某些思想错误,因此,这里的东西都是只能作为理解过程中的参考,千万不能当真!

转载于:https://www.cnblogs.com/hielvis/archive/2010/11/22/1884699.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用autotools工具

autotools是系列工具,读者首先要确认系统是否装了以下工具(可以用which命令进行查看)。 autoscanaclocalautoheaderautomakeautoconf 使用autotools主要就是利用各个工具的脚本文件以生成最后的Makefile。其总体流程是这样的: 使…

LSGO软件技术团队2015~2016学年第十五周(1207~1213)总结

团队简述: LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为大数据处理与机器学习。成立几年来为学校…

python代码太长_Python 太糟糕了?开发者总结了 8 大原因

作者对每一项“缺点”都进行了分析,全文洋洋洒洒,概括起来 8 个原因分别是: 1、版本不兼容 Python 3 与 Python 2 不完全兼容。作者以 Perl 语言和创造了世界上早期个人电脑的 Commodore 为例,分析了缺乏向后兼容性和分离版本是如…

Tomca安装

下载 官网: http://tomcat.apache.org/ 2.安装 默认 3.安装成功

知其所以然(续)

查了一下,上篇知其所以然(以学习算法为例) 是08年7月写的,现在已经是10年11月,过去了两年零4个月,这说明了三件事情:1,一个问题其实你可以一直放在脑子里面,利用暗时间 对…

python中的引用怎么理解_Python函数通过引用调用

基本上有三种函数调用:通过价值 通过引用传递 通过对象引用传递 Python是一种PASS-BY-OBJECT-REFERENCE编程语言。 首先,重要的是要理解一个变量,变量(对象)的值是两个独立的东西。变量指向对象。变量不是对象。再次&a…

ELF动态库加载技术

库用于将相似函数打包在一个单元中。Linux支持两种类型的库:静态库(在编译时静态绑定到程序)和动态库(在运行时绑定到程序)。Linux系统使用的动态库是ELF格式,后缀名为so。 1 加载 动态库内部划分为段&a…

geoserver安装(war安装+exe安装)

下载 官网:http://geoserver.org/ 方法一 当前只有war版本的 下载结果 tomcat安装最好不要使用exe版本的,因为会出现问题,页面加载不出来,所以大家只需要下载下来解压即可 然后将geoserver安装包中的war文件放到webappx下 然后…

LSGO软件技术团队2015~2016学年第十六周(1214~1220)总结

团队简述: LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为大数据处理与机器学习。成立几年来为学校…

与大家分享一下2010我的找工作历程!真累啊!不过都已经结束了!

经常看到网上别人把找工作的过程与别人分享,这次俺也写下我的一点经历来与大家分享。 大三结束就准备找工作了,因为感觉在学校待着实在没意思,还是出去混混吧。 记得在暑假,想找份实习的,投了些简历,也不知…

LSGO软件技术团队2015~2016学年第十七周(1221~1227)总结

团队简述: LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统;研究方向为大数据处理与机器学习。成立几年来为学校…

postgresql+postgis安装

下载 官网https://www.postgresql.org/ 作者的电脑为win 下载结果为 postgis要选择下载对应版本的 官网http://www.postgis.org/ 以下安装最好装到除c盘之外的,否则有些安装需要权限,一般为d盘 用户名和密码都设置为postgres postgis安装教程 之前设置过…

话说Python:非主流编程语言

【编者按】Python编程语言广受开发者的喜爱,并被列入LAMP (Linux, Apache, MySQL 以及Python/Perl/PHP)中。尽管它在一段时期曾引领了动态语言,但这门颇受好评的编程语言却又从未大红大紫过。是什么让它在开发领域尤其是Web应用开发方面如此受宠呢&#…

把共享库(SO)加载到指定的内存地址

一位朋友最近遇到一个棘手的问题,希望把共享库(SO)加载到指定的内存地址,目的可能是想通过prelink来加快应用程序的起动速度。他问我有没有什么方法。我知道Windows下是可以的,比如在VC6里设置/base的值就行了,所以相信在linux下也…

aop实现原理_SpringAOP原理分析

目录Spring核心知识SpringAOP原理AOP编程技术什么是AOP编程AOP底层实现原理AOP编程使用Spring核心知识Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述…

欧盟无条件批准甲骨文收购Sun

北京时间1月21日消息,据国外媒体报道,甲骨文以70亿美元的价格收购Sun的交易今天获得了欧盟无条件批准。 这笔交易将改变科技产业的格局,这意味着全球第二大商用软件提供商甲骨文进入了硬件产业。在规模达170亿美元的高端计算机服务器市场&…

如何高效的访问内存

影响内存访问速度的因素主要有: 1.内存带宽:每秒读写内存的数据量,由硬件配置决定。 2.CACHE高速缓冲:CPU与内存之间的缓冲器,当命中率比较高时能大大提供内存平均访问速度。 3.TLB转换旁视缓冲:系统虚拟地…

初学者怎样看懂python代码_入门编程(初学者怎样看懂代码)

你既然喜欢编程,就应该认认真真的学习一门语言,学习微软的就先从vb开始,vb是比较好的入门语言,可视化的,比较简单,是非常好的入门语言。书籍最少应该准备两. 先认认真真的学习一门语言,学习微软…

MAVEN安装和配置

maven官网下载 https://maven.apache.org/download.cgi