开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Azure Stack PaaS-网站(WebApp)背后是什么原理?

简介:
+关注继续查看

例如Azure里的经典PaaS服务WebApp,是一款广大人民群众喜闻乐见的服务,很多客户用来搭建自己的数字化营销方案。PaaS服务让我们不再困扰于日常的运维,极大地降低了成本。


但是Azure的WebApp背后是什么原理?它是怎么运作的?我们不得而知。而Azure Stack则能帮助我们“管窥”其背后的原理,至少基本架构和原理是差不多的。


不过本文不会涉及到Azure WebApp的部署,您可以参考以下的文档:

https://azurestack.eu/2016/02/enable-paas-web-apps-in-azure-stack-tp1-part-i/


以下是Azure WebApp虚拟机角色的作用:

  • Web Worker– 特殊版本的IIS Web服务器,用来处理来自客户端的Web请求

  • Front End– IIS Web服务器,接受来自客户端的请求,并把请求转交给Web Worker,以及把Web Worker的响应回送给客户端

  • Publisher– 给FTP客户端提供内容发布,还有类似GIT等机制(目前并不支持)

  • Database– Azure Stack WebApp的配置数据

  • File Server - 存放租户的网站内容 

  • Controller–  创建和管理其它WebApp的角色

  • Management- REST API 服务器


我们可以在WebApp的Resource Provider管理页面里看到这些虚拟机角色。

wKiom1byASvh0CLJAAKhG3rEmRc323.jpg


租户网站进程


如果未作特别说明,本文特指免费(共享)模式的租户网站,名称为MarkWebFreeDemo


可以通过Process Monitor来监控租户网站的进程行为。


我们可以看到DWASSVC这个进程启动了租户网站进程w3wp。DWASSVC进程里运行着Dynamic WAS Service,这是Azure Stack WebApp用来替代Windows自带的WAS服务,专门为高并发的网站托管服务。

wKioL1byAsTBvIpRAALB_T7zIhE466.jpg


查看其堆栈信息,可以发现其调用RsFilterApi.dll里的CreateSandboxProcessW函数创建沙盒进程,这样租户网站虽然可以运行在同一个Web Worker虚拟机上,但是彼此之间是隔离的。同样RsFilterApi.dll是WebApp里特有的,也不是Windows里自带的,不知道和Windows Docker之间存在什么关系?

wKioL1byAxyDqJhMAAH262F2yOQ334.jpg


然后可以看到租户网站进程w3wp尝试访问\\10.0.2.101\WebSites上的共享。这里的\\10.0.2.101就是File Server这个虚拟机角色,用来存放租户网站的内容。

wKioL1byAzHiKdAOAAYlqS_QkQ4174.jpg


在Web Worker虚拟机上有个D:\DWASFiles\Sites文件夹,DWASSVC进程用来管理租户网站的配置信息,我们的租户网站MarkWebFreeDemo则在其下有一个子文件夹,里面保存着该租户网站的相关信息,其下有一个名为“VirtualDirectory0”的符号链接,指向File Server的共享文件夹路径,其中保存着该租户网站的内容。

wKiom1byDI6gLjxQAAUkS94AlOM695.jpg


FTP上传租户网站内容


比较奇怪的是,和前任Windows Azure Pack(确切来说并不算"前任")相比,Azure Stack的WebApp多出一个FTP的虚拟机角色,用来提供FTP服务。


由于前面所述的Blog以及官方文档里没有提供FTP的配置方法,所以可以按照以下步骤进行。首先打开WebApp资源组(本例是WebSitesSQL),找到FTP0-1P所绑定的公网IP地址,本例是192.168.133.23。

wKioL1byD4mi_1EoAAV2bBuD7gE746.jpg


然后在DNS服务器里新增一个A记录,ftp.web.azurestack.local为192.168.133.23。


接下来即可在租户网站页面上设置FTP服务器的访问凭据。

wKiom1byDyii1DiXAAO3-DIHuzA845.jpg


然后就可以借助FTP客户端,例如FlashFXP等,即可访问到该FTP服务器,而有趣的是,所看到的FTP文件夹,并不在该FTP服务器上,而是在File Server的租户网站内容文件夹里!


可以做一个简单的实验,通过FlashFXP上传一个index.html到文件服务器上,然后重启租户网站,即可看到内容。

wKioL1byD9az8SnhAACGYnbP7sQ832.jpg


免费(共享)租户网站资源配额


在共享模式租户网站里,由于所有租户的网站都运行在相同的Web Worker虚拟机上,所以会默认加以CPU和内存限制,可以用Process Explorer查看其Job Object信息。例如我们可以看到其中该网站默认使用最多1024MB的虚拟内存。 

wKioL1byEC6xa7JyAAGMeDcZYtU634.jpg


我们可以在Azure Stack的Portal上,打开WebApp的Resource Provider配置页面,依次进入SKUs、所需的租户网站模式、Features,可以看到Site Memory Limit默认是1024MB,这和前面的Job Objects一致。现在将其改为1500MB,并保存。

wKiom1byD7bx1g-eAAMdLn12RAo452.jpg



仔细查看SQL Server虚拟机角色,发现该配置数据写在runtime.SitePolicy的MemoryLimitinMB。

wKiom1byEI3Btes1AASz2bA9SJU363.jpg


重启租户网站,现在可以看到网站的内存限制变成了1500MB。

wKioL1byET6QKnYvAAGMjptIOh4335.jpg


顺便说一下,利用Windows的Job Object来限制一组进程的资源配额,Windows Docker也是采用类似方法,而开源的Linux Docker,则采用类似的CGroup技术。




本文转自 ahpeng 51CTO博客,原文链接:http://blog.51cto.com/markwin/1754235,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Serverless 带给 web 开发的改变
Serverless 带给 web 开发的改变自制脑图
0 0
Serverless 时代,这才是 Web 应用开发正确的打开方式
如同 iPhone 当年颠覆了诺基亚,Serverless 的出现也带来了一种全新的、颠覆式的云开发架构模式。
0 0
KubeVela: 如何用 100 行代码快速引入 AWS 最受欢迎的 50 种云资源
本文提供了一个方案,用不到 100 行代码快速引入 AWS 前 50 最受欢迎的云资源。
0 0
独家探秘微软混合云Azure Stack
独家探秘微软混合云Azure Stack
0 0
云APP,virtual appliance:unikernel与微运行时的绝配,统一本地/分布式语言与开发设想
本文关键字:云时代没有软件,只有服务,虚拟app,虚拟OS,虚拟APP开发,metarootfs as service,container as service,virtual appliance,可devops编程os,Redox OS,融合app
0 0
Cloud Native 是未来开发应用的趋势
目前,越来越多的企业已经在大规模开始拥抱云,在云环境开发应用、部署应用、发布应用。Cloud Native(云原生)是以云架构为优先的应用开发模式。那么,为什么说 Cloud Native 是未来开发应用的趋势呢?本文一一解答。
6858 0
移动云Apsara Mobile震撼发布!推出Cloud Native App全新研发范式
通过移动云平台,我们期望无论规模多小的企业,创业团队,都能基于阿里巴巴的服务快速、便捷地拥有与手机淘宝、支付宝一样完善的移动基础设施,都能更低成本地拓展企业在各自商业场景中的想象空间,实现技术与商业的最佳平衡。
2627 0
阿里宣布开源Weex,用Web方式开发Native性能体验应用
4月21日,阿里巴巴今天在Qcon大会上宣布跨平台移动开发工具Weex开放内测邀请。Weex能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS、安卓、YunOS及Web等多端部署。
11448 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
小团队能做大系统 Cloud Native云原生架构实践
立即下载
移动App研发加速—跨平台解决方案
立即下载
移动App研发加速-跨平台解决方案
立即下载