作者 王枫 发布于 2014年4月5日

企业内部应用转换为在线服务

Windows Azure已经成为众多IT服务提供商们热议的话题,其中,有的认为只有提供互连网用户服务的应用才适合放在公有云环境内运行。然而,事实上,在当前Windows Azure环境上,有许多企业也把企业内部的应用放在公有云上,它们包括:

Web/Brower架构。Web服务器直接放在Windows Azure环境中,方便企业内员工通过HTTPS方式连接到企业内网或互联网访问。特别在跨国企业环境中,这样做可减少公司内部不同国家的办公室之间网络流量。

Client/Server架构。应用服务器放在Windows Azure环境中,用户端的应用可以部署在PC或移动设备上,方便用户访问。如果考虑网络安全,还可以加上VPN或其他安全保护机制。

本文主要介绍某个企业将原本在企业数据中心的应用的迁移到Windows Azure上部署的案例。在该企业的数据中心里,该应用是让企业购买软件后自行部署到物理机的,企业要安排IT人员到客户端去协助维护与更新软件。迁移到Windows Azure中部署成在线服务之后,可以节省原本要另外购买服务器硬件的成本,同时也减少了IT对客户服务的工作量,以后升级及维护的工作可以通过脚本直接在Windows Azure环境中对所有虚拟机和软件进行配置。本文主要内容有:对迁移前的应用架构的关键点分析、部署过程中需要调适的配置、可能的不同部署方式等。Windows Azure应用部署原则按照应用实际运行的最佳环境需求设计。

以下内容先介绍针对要迁移的应用的架构环境进行调研,然后介绍迁移到Windows Azure的过程。调研工作主要从从硬件、网络、存储、应用等四个方面进行,了解原有环境存在的缺点与客户期望的改进。然后说明迁移到Widnows Azure后的优点以及实现了哪些改进。

原有应用架构环境调研

服务器

对于传统数据中心,用户通过互联网访问服务器上安装的应用,合作伙伴直接开发新的插件上传到服务器并与现有应用集成。每个客户的基本配置是一台网站服务器和一台数据库服务器。企业的传统数据中心环境都采用直接提供物理机的方式,或者由客户自行准备物理机来安装应用。

迁移到Windows Azure虚拟机环境后可以提高服务器的硬件资源使用效率。

网络环境

默认情况下,网络环境应该把不同客户的虚拟机网络都隔离开来,可以使用Vlan ID在同交换机上隔离网络通道。但是因为需要在所有服务器上打补丁(应用本身的补丁与Windows Server, SQL Server的补丁),所以必须与管理服务器连接,这在物理交换机上很容易实现。但是,迁移到Windows Azure环境里之后,就只能使用Azure本身的Virtual Network来做,解决方案会在后面详述。

存储

在传统数据中心里,所有的虚拟机文件都是放在物理服务器外部的共享存储中,通过集群解决无理解故障,故障时处理逻辑可以自动迁移到其他物理机上,重启后继续运行。正在使用的服务将会中断,也会存在少量数据丢失的可能,通过数据库回滚技术可以继续正常工作。但是对客户来说,服务质量还需进一步加强。因为成本的限制,共享存储内的数据并没有同步拷贝到其他数据中心。

应用

该企业准备迁移的应用属于三层架构,为了简化安装与运营的维护要求,网站与应用被安装在同一台网站服务器内,只有数据库独立安装于一台虚拟机中。应用层已经具备了扩容的功能,可以建立网站服务器资源池,并配置硬件负载平衡器,只要在网站资源池内新增网站服务器然后执行配置更改的脚本就可以提供多台服务器共同提供服务。后端的数据库服务器没有设计为数据水平分散的架构,在硬件的数据库服务器没有做到扩容的功能。

调研结果

这是典型的符合从物理机转换到虚拟化环境然后再迁移到Windows Azure的场景。本文主要讨论如何使用Windows Azure解决方案满足客户的期望。以下是四个方面是主要且常见的需求:

  • 物理机资源使用率提高与虚拟机容错
  • 网络可以隔离,但是管理环境的网络必须连接到每一部服务器
  • 数据存储高可用性提升
  • 应用与数据库扩容

迁移到WINDOWS AZURE

物理机资源使用率提高与虚拟机容错

在Windows Azure环境里不需要去考虑物理机硬件,因为物理机的管理已经由Azure完全负责。

虚拟机的容错在Azure的环境里是默认存在的,只要选取就行。

网络可以隔离,但是管理环境网络必须透通

Azure环境里配置不同的虚拟网络并把不同的客户虚拟机指派到隔离的虚拟网络就可以隔离虚拟机,管理服务器虚拟机则是通过Azure默认提供给每一台虚拟机的公网IP地址来推送补丁即可。此种作法比较简单,直接用原有功能配置即可。但是有以下几点状况必须考虑:

  • 客户数量增加时,虚拟网络的数量管理变得复杂
  • 实际压力测试结果,当虚拟机数量增加时,通过公网在所有虚拟机上打补丁会影响到客户用公网连接网站服务器的效能
  • 考虑上面两点,在此环境的最佳作法是
  • 减少虚拟网络数量,依照打补丁虚拟机群的设计区分虚拟网络(并非隔离)。在虚拟网络之下新增子网络数量,不同客户的虚拟机放在不同的子网络(仍未隔离)。虚拟机服务器隔离的配置是在增加新的虚拟机时执行配置脚本,用Windows虚拟机本身的防火墙配置开启相同客户的服务器还有管理服务器连接同时阻绝其他的服务器
  • 因网络层并未隔离,所以打补丁可以走虚拟网络完成工作,不会影响公网的客户连接

数据存储高可用性提升

此项目在不同城市的数据中心设置了两个Windows Azure的存储帐号,并把客户的数据在两个Azure数据中心同步,以满足基本的高可用性需求。

除了这种做法之外,还有其他作法

  • 比较安全的作法是把数据放在公司网络,网站与应用服务器放在Azure,中间通过Azure的Connect功能建立VPN连接保护资料传输。这种作法安全性高,但是降低了网络效率。
  • 数据拷贝一份到Azure的存储,部署到Azure里的数据库虚拟机里设置为只读,仅提供查询。要写入的数据仍然导向VPN连接到公司网络的数据库服务器上处理。此种方法应用代码修改多,数据更新稍慢。

应用与数据库扩容

此部分是此项目进行中最精华的部分。原有应用已经有了负载均衡功能,但关键是要有网络硬件的负载平衡器来分配多并发的连接要求,在Windows Azure默认的部署方式默认支持公网IP地址负载平衡,只要在加入新的虚拟机时选取,可取代原有环境中的硬件负载平衡器。

图为原有环境中使用WCF服务器的负载平衡,但是如果内部虚拟网络IP地址也有负载平衡的需求,则可以在修改应用代码让网站应用本身去选择连接多部后端服务器。虽然Web Role与Worker Role能够通过虚拟网络内的通道直接进行通讯,但Windows Azure在内部虚拟网络的环境中没有提供负载平衡的功能。要做到内部网络IP地址也能有负载平衡,我们可以自行编写代码完成,

举例说明:端口10101对应第一个实例,端口10102对应第二个实例,依此类推。Windows Azure SDK 1.7版本内有一个功能——InstanceInput,这个功能可以让用户端应用(或前端网站服务器)直接连接到后端的服务器实例(任选Web Role或是Worker Role)。以下是完整的InstanceInput功能导览:

  1. 用Administrator帐号启动Visual Studio
  2. 建立一个新的”Cloud Service”后,建立一个WCF服务的Web Role命名为WCFServiceRole
  3. 用以下的代码建立一个角色实例
    public string GetData(int value)
    {return string.Format("From {0} - You entered: {1}", RoleEnvironment.
    CurrentRoleInstance.Id, value);
    }
  4. 然后,在服务部署的地方加代码来关闭地址过滤功能
    [ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]

    因为默认的环境下已经建立的服务会连接特定的端口配置,此代码的作用是停用连接特定端口,所以才能另外配置端口

  5. 在此Solution内部新建一个控制面板命名为”WCFClient”
  6. 按 Ctrl+F5来运行一次这个Solution
  7. 在WCFClient上右单击后点选Add Service Reference…
  8. 在Add Service Reference的对话框内输入服务地址http://127.0.0.1/Service1.svc,然后单击Go,再接着单击ok
  9. 把下方代码加到Main方法,解决命名空间的解析:
    Service1Client client = new Service1Client();
    Console.WriteLine(client.GetData(100));
    client.Close();
    Console.ReadLine();
  10. 右单击WCFClient后点选Debug->Start new instance客户端应该显示From WCFServiceRole_IN_0 – You entered: 100。在控制台窗口中按[Enter],停止客户端。

    以上步骤只是基本的WCF客户端服务器方案而已,接下来要把InstanceInput端口加入。

  11. 关闭浏览器来停止云服务实例。
  12. 在云服务项目内,双击WCFServiceRole令其弹出属性页。
  13. 点击Endpoint选项卡,然后单击”添加“来添加一个端点。更改端点类型为InstanceInput,再把Private Port改为80,Public Port保留为默认值。这些端口设置可以有所不同。使用此端口范围,以便对应个别实例 -第一个值对应第一个实例,第二个值对应第二个实例,等等。
  14. 点击Configuration选项卡,并更改实例计数为2。
  15. 部署到Azure Cloud Service。
  16. 等到Cloud Service部署完成后,在WCFClient中编辑app.config文件,把客户端复位向到新的服务端点
    <endpoint address="http://{your application}.cloudapp.net/service1.svc"binding="basicHttpBinding"bindingConfiguration="
    BasicHttpBinding_IService1" contract="ServiceReference1.
    IService1"name="BasicHttpBinding_IService1" />
  17. 右单击WCFClient,然后选择Debug->Start new instance客户端应该像步骤10一样运行。如果多运行客户端几次就可以发现,请求会由不同的角色实例接受。
  18. 在上述端点配置修改地址,并使用不同的公共端口InstanceInput端点,以对应到指定的实例。例如,如果公共端口范围为10105至10109,然后http:// {您的应用程序}。cloudapp.net:10105/service1.svc可解析到第一个实例,http:// {您的应用程序}。cloudapp.net:10106/service1.svc可解析到第二个实例。

小结

直接使用Windows Azure的功能就可以快速将企业内部应用迁移到公有云环境。Windows Azure SDK提供了方便好用的代码修改与直接部署应用的环境。

本文转载自:http://www.infoq.com/cn/articles/enterprise-applications-deployment-in-windows-Azure-cloud

转载于:https://www.cnblogs.com/wuwa/p/6191873.html

在Windows Azure公有云环境部署企业应用相关推荐

  1. SAP应用在华登陆Windows Azure公有云

     2014 年 7 月 11 日,北京--SAP 中国与微软(中国)公司宣布,将在中国展开深入合作,利用由世纪互联运营的 Windows Azure 公有云平台为 SAP 用户应用提供可靠的公有云 ...

  2. Azure China (6) SAP 应用在华登陆 Windows Azure 公有云

    <Windows Azure Platform 系列文章目录> 2014年07月11日 由世纪互联运营的 Windows Azure 为 SAP 应用提供公有云平台 2014 年 7 月 ...

  3. Windows Azure公有云服务相关方案

    http://www.cnblogs.com/sennly/p/4139675.html 1.公有云平台服务简介 Windows Azure 是一个灵活而开放的云平台,通过该平台,您可以在数据中心快速 ...

  4. 微软的服务器图片,微软公有云平台部署CNNIC服务器证书

    6月7日消息,中国互联网络信息中心(CNNIC)近日宣布,云平台Windows Azure与CNNIC合作,在平台所有服务器上均部署了CNNIC服务器证书(SSL证书). 据了解,随着互联网应用的聚变 ...

  5. 公有云环境下应用程序的自动化部署与水平扩展问题

    先介绍了一下公有云计算环境下的一些特点,再根据这些特点探讨一下作为云计算用户而言,如何对应用程序做好自动化部署和水平扩展(弹性计算)的问题.阅读本文需要有一定的云计算知识.开发运维知识. 公有云环境的 ...

  6. 部署docker swarm(解决公有云环境网络问题)

    文章目录 swarm部署 一.节点docker环境安装 二.swarm环境安装 1. swarm 管理节点初始化 2. slaver1节点加入swarm集群 3. 服务发布 4. 管理命令 5. 网络 ...

  7. 如何将你在公有云环境中的漏洞找出来?

    渗透测试可以帮助企业将他们在公有云环境中的漏洞找出来.但是针对AWS.谷歌和Azure的测试需求有什么不同呢? 很多企业IT部门使用云渗透测试来确定和解决他们在云计算环境中的潜在安全缺陷.但是,在公有 ...

  8. Azure公有云对接事项(二)

    1.如果需要对接Azure,那么需要保证云管所在的服务器开通外网,Azure和阿里云.腾讯云等公有云不一样,如果不开通外网,所有的参数填写正确,也会导致账号校验无效. 报错如图所示: 2.对接了Azu ...

  9. php mysql 星外_教程|ZKEYS公有云系统部署星外迁移程序

    本文有关部署星外迁移程序主要分为三大部分:部署迁移程序.平台数据割接.受控虚拟主机服务器数据割接,一起看下去吧! NO1部署迁移程序 (1)程序部署准备 ? 一台Window2012服务器(用于部署程 ...

最新文章

  1. 企业千人千面管理模式_零售企业该如何打造“千人千面”的差异化营销?
  2. 【原】a.class与a .class的区别
  3. 【重磅】中国AVS2标准被国际超高清联盟UHD Forum采纳,推荐给全球视频服务商
  4. 什么是区块链?什么是比特币?一文轻松看懂!
  5. .NET Core 实现定时抓取博客园首页文章信息并发送到邮箱
  6. JS prototype作用
  7. Storm程序的并发机制原理总结
  8. Eclipse is running in a JRE, but a JDK is required
  9. svn linux客户端使用教程,linux svn 客户端安装配置
  10. java坦克大战项目
  11. 2012-2013考研英语词汇
  12. mac php fpm 502,nginx+php-fpm出现502(Bad Gateway)错误的分析与解决 | linux系统运维
  13. 打开lol一直连接服务器失败怎么回事,LOL英雄联盟连接失败无法连接服务器解决办法...
  14. 笔记本电脑计算机的配置表,笔记本组装配置清单_笔记本电脑配置单及价格
  15. 【科创人】DCloud崔红保:uni-app和HBuilder背后的男人,让天下没有难做的开发
  16. 图像金字塔、特征金字塔(FPN)
  17. LeetCode:390.消除游戏
  18. 超级计算机开采金矿,地球内部有4亿亿吨黄金,人均550万吨,为何无人敢开采?...
  19. 免费C++库 - Emacser
  20. asp连接access数据库代码(包含.mdb和.accdb两种格式)

热门文章

  1. Docker Compose 配置文件详解
  2. nodejs渐入佳境[27]-express+mongodb+middleware实现密码哈希
  3. oracle菜鸟学习之 分析函数-排序
  4. 拜读及分析Element源码-alert组件篇
  5. 懂你,从选择内裤开始
  6. Callable、Future阻塞队列阻塞栈
  7. 深入JVM锁机制2-Lock
  8. 绝对路径与相对路径的区别【2】--release和debug这两种情况下对本地文件操作不一致的问题...
  9. MySQL/MariaDB基础及简单SQL语句
  10. binlog日志的三种模式