欢迎加入QQ群(423730487)!4月9日在上海会有一场线下活动,微软AzureStack产品组的专家会和大家分享技术,而且会在QQ群里直播。
加一盆微信(markpah)我拉你到微信群。
为什么要学习AzureStack?因为这是学习Azure最好的工具。
例如,Azure中经典的PaaS服务WebApp是一种在广大人民群众中广受欢迎的服务,许多客户使用它来构建自己的数字营销方案。PaaS服务让我们不再担心日常运维,大大降低了成本。
但是Azure的WebApp背后的原理是什么呢?它是如何工作的?我们不知道。AzureStack可以帮助我们“一窥”其背后的原理,至少基本架构和原理都差不多。
然而,本文不会涉及AzureWebApp的部署。你可以参考以下文件:
https://azurestack.eu/2016/02/enable-PAAs-weB-apps-in-azure-stack-tp1-part-I/
以下是AzureWebApp虚拟机的作用:
我们可以在WebApp的资源提供者管理页面看到这些虚拟机角色。
租户网站流程
除非另有说明,本文指的是名为MarkWebFreeDemo的免费(共享)租户网站。
您可以通过进程监视器监视租户网站的进程行为。
我们可以看到这个进程DWASSVC启动了租户网站进程w3wp。动态WAS服务运行在DWASSVC进程中,被AzureStackWebApp用来替代Windows自带的WAS服务,专门为高并发网站托管服务。
查看它的栈信息可以发现,它调用了RsFilterApi.dll的CreateSandboxProcessW函数来创建沙盒进程,使得租户网站可以运行在同一个WebWorker虚拟机上,但是相互隔离。RsFilterApi.dll也是WebApp独有的,它不是Windows内置的。不知道它和WindowsDocker是什么关系?
然后可以看到租户网站进程w3wp正在尝试访问\10.0.2.101\WebSites上的共享。这里的\10.0.2.101是文件服务器的虚拟机角色,用来存储租户网站的内容。
WebWorker虚拟机上有一个D:\DWASFiles\Sites文件夹,DWASSVC进程用于管理租户网站的配置信息。我们的租客网站MarkWebFreeDemo下面有一个子文件夹,里面保存着租客网站的相关信息。在其下有一个名为“virtualdirectory0”的符号链接,指向文件服务器的共享文件夹路径。
FTP上传租户网站内容
奇怪的是,与之前的WindowsAzurePack(不完全是“前身”)相比,AzureStack的WebApp多了一个FTP虚拟机角色,提供FTP服务。
由于前面提到的博客和官方文档都没有提供FTP配置方法,你可以按照以下步骤。首先打开WebApp资源组(本例中为WebSitesSQL),找到FTP0-1P绑定的公共IP地址,本例中为192.168.133.23。
然后在DNS服务器中添加一条A记录,ftp.web.azurestack.local是192.168.133.23。
接下来,您可以在租户网站页面上设置FTP服务器的访问凭据。
然后就可以在FTP客户端的帮助下访问FTP服务器了,比如FlashFXP。有趣的是,你看到的FTP文件夹并不在FTP服务器上,而是在文件服务器的租户网站内容文件夹里!
可以做一个简单的实验,通过FlashFXP上传一个index.html到文件服务器,然后重启租户网站就可以看到内容了。
免费(共享)租户网站资源配额
在共享模式租户网站中,由于所有租户的网站都运行在同一个WebWorker虚拟机上,默认情况下会施加CPU和内存限制,可以使用ProcessExplorer查看作业对象信息。比如我们可以看到,网站默认使用高达1024MB的虚拟内存。
在AzureStack的门户上,我们可以打开WebApp的资源提供者配置页面,依次输入SKU、所需租户网站模式、特性,可以看到站点内存限制的默认值为1024MB,与之前的作业对象一致。现在改成1500MB保存。
仔细观察SQLServer虚拟机的角色,发现配置数据是写在运行时的MemoryLimitingMB中的。站点策略
重启租户网站,现在可以看到网站的内存限制变成了1500MB。
对了,WindowsJobObject是用来限制一组进程的资源配额的,WindowsDocker采用了类似的方法,而开源的LinuxDocker采用了类似的CGroup技术。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)