这里主要介绍如何规划部署Web服务器。在部署服务器之前首先要了解清楚下面几个问题:
- 账号类型。(本机windows账号(没有访问跨计算机资源的权限)、应用程序池账号(根据应用程序池一对一的创建,可以访问本机资源,但无法跨机器访问资源)、活动目录域账号(可以跨机器访问资源,同时方便域管理员管理));
- Web站点状态数据的存储方式(SQL Server、ASP.NET State Service、Redis Cache): 主要用于多节点系统数据同步。其中SQL的效率最低,应为SQL是直接在数据表上进行操作而其他两种方法是直接在内存上操作,ASP.NET State Service 只能在单机上部署, Redis部署为主从模式成本最高;
- 保证配置和网站内容一致的方式。(通过共享文件夹,分布式文件系统、源码管理系统等方式实现)。
其中涉及一致性的资源主要有:
- Web网站运行账号。
- 访问本地资源的权限和位置。
- IIS配置文件ApplicationHost.config或者Metabase.xml等。
- Web网站内容文件夹。
- .Net Framework配置文件Machine.config。
1 几种常见的部署模型
1.1 负载平衡器和Web服务器的方式
Web服务器没有加入域,访问数据库无法使用Windows的集成安全验证,配置文件和Web站点目录依靠管理员手动复制。
为了规避Web内容不一致的问题,这里可以采用Web Deploy、Robocopy、或git等源码管理工具来执行复制。
1.2 负载平衡器加Web服务器和DFS服务器的方式
使用分布式文件系统服务(DFS),在域内将指定目录下的文件自动且快速的同步到分布式文件系统的其他节点(类似云同步)。这其中要求:全部Web服务器加入同一个域;全部Web服务器配置DFS服务;配置要同步的路径,包括IIS配置文件、Web站点内容路径以及.Net Framework配置文件路径。
1.3 负载平衡加Web服务器和集中存储方式
将IIS配置文件放在文件共享服务器上,然后让其他的Web服务器节点使用共享服务器路径上的IIS配置文件。其中这种方法可以保证IIS服务器配置和Web网站内容的一致性,但文件服务器的故障会引起单点故障,同时共享目录的访问性能不如本地磁盘的访问性能,也不能保证Machine.config配置文件一致性。
2 Azure共有云上的几种部署模型
在了解云计算之前先要明白下面几个概念:IaaS, PaaS, SaaS。在Azure上面部署的主要有Web应用加数据库模型、Cloud Service加虚拟网络模型、虚拟网络部署虚拟机模型。其中前两周相当于是PaaS方式,后一种相当于是IaaS方式。
- IaaS(Infrastructure as a Service)即基础设施即服务。云提供商负责提供物理网络、物理服务器、机架存储和虚拟化等服务,云用户自己管理从 操作系统到应用程序 的全部应用和组件。
- PaaS(Platform as a Service)即平台即服务。云提供商将常用的软件和应用封装成开箱即用的服务提供给云用户使用。(只管理application和数据)
- SaaS(Software as a Service)即软件即服务。服务提供商打破传统的软件许可证的销售方式,将软件硬件组合在一起作为统一的服务提供给 终端用户 使用。
- Web应用加数据库模型 适合部署只有Web网站没有写注册表等安装动作的Web app
- Cloud Service加虚拟网络模型 Cloud Service里面包含虚拟机的安装环境包,在弹性的时候会自动在新拉起的虚拟机上写注册表等操作。
- 虚拟网络部署虚拟机模型 用户需要自行规划子网、在虚拟网络内创建虚拟机、部署IIS数据库等各项服务。(类比搭起整套NFVO系统)(注意主备节点不能在同一块单板(故障域)上)