博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Azure Stack PaaS-网站(WebApp)背后是什么原理?
阅读量:5992 次
发布时间:2019-06-20

本文共 2291 字,大约阅读时间需要 7 分钟。

欢迎加入QQ群(423730487)!4月9日在上海有一场线下活动,盆盆还有微软Azure Stack产品组专家会和大家一起分享技术,届时会在QQ群里直播哈。

添加盆盆的微信(markpah),我会把您拉到微信群。

为什么要学习Azure Stack?因为这是学习Azure的最佳工具。

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

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

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

以下是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管理页面里看到这些虚拟机角色。

租户网站进程

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

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

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

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

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

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

FTP上传租户网站内容

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

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

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

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

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

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

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

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

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

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

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

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

转载地址:http://tevlx.baihongyu.com/

你可能感兴趣的文章
一句话说清楚cache和buffer
查看>>
C语言 · 核桃的数量
查看>>
第一百五十六节,封装库--JavaScript,延迟加载
查看>>
ssh: connect to host github.com port 22: Connection timed out
查看>>
Win10怎么设置点击任务栏上文件夹图标直接打开“我的电脑”?
查看>>
吃透css3之3d属性--perspective和transform
查看>>
VB的程序如何破解
查看>>
weblogic学习笔记:域创建+应用部署
查看>>
CentOS6.5下Ambari安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)...
查看>>
Vmware 设置NAT模式
查看>>
mvel2.0语法指南
查看>>
什么是pear的channel?
查看>>
CentOS7.2 切换成iptables规则
查看>>
javascript数据结构与算法---二叉树(查找最小值、最大值、给定值)
查看>>
idea 高级调试技巧
查看>>
[ZZ]新手学 appium-合集第一季度
查看>>
(六)SSO之CAS框架扩展 改动CAS源代码实现与ESS动态password验证对接
查看>>
boost.asio学习笔记一、linux下boost库的安装
查看>>
在那江南烈日与阵雨中-江南100赛记
查看>>
秒懂单链表及其反转(reverse)
查看>>