服务模板示例工具包 (STEK) - 常规 Web 实验室
在此处下载 STEK。
在这个不断进行发布的博客系列的本篇文章中,我们将介绍一些服务模板的实际示例以及如何开始使用这些模板。应用程序管理的其中一个更具挑战性的方面是以可重复且可靠的方式快速部署实验室。因此,我想利用标准资源创建一组基本模板,还要创建一个方法,通过该方法可以快速利用这些模板创建虚拟环境。我的计划是使用这些服务开发、QA 或测试 1、2、3 层 Web 应用程序。它们还可以用作打造生产服务部署模型的基本模板。
由于绝大多数现有及新业务线应用程序都是 Web 应用程序,因此第一组服务模板示例是基于多个 Web 应用程序体系结构设计的。在这 4 个示例中,第一个示例是不含自定义项的独立服务器,随后我用它创建了第二个示例,后者是一个使用 Microsoft NLB 实现负载平衡的 Web 服务器。这两个示例可用于没有中间层,并且数据库不存在或者已经部署到数据库场的应用程序。第三个示例将它自己的独立 SQL 2012 服务器添加到 Web 服务器,最后一个示例是一个三层 Web 应用程序,其中的一个 Web 服务层充当中间 SOAP 服务层。这些示例实际上会变成我的其余大多数服务模板的基础。您可以方便地修改其中任意示例以满足您的需要,在以后的博文中,我会提供一些应用程序示例,这些应用程序包含有来自 MSDN 库(例如 BlogEngine 和 DotNETnuke)的示例。只需添加应用程序和 SQL 数据库然后部署即可。
我们来看看我选择的一些基本惯例。选择这些惯例是为了实现简单性和易用性,但您可以根据需要和资源能力更改这些惯例。对于负载平衡,我使用 Windows NLB,这是我唯一的选择,因为我的环境中没有其他负载平衡器。OS 是 WS 2012,SQL 是 SQL 2012。我使用 Convert-WindowsImage.ps1创建了两个经过 sysprep 的 VHD,对于 SQL sysprep,我遵循了此处提供的说明。对于许多服务器自定义项,我创建了可用于所有模板的脚本。我只创建了一个标准资源文件夹来存放我使用的大部分脚本。我将创建单个服务所需的任何专用脚本并附加到服务模板本身。有些情况下,为了简化操作,我甚至可以将我的标准脚本(例如代码段)添加到这些专用脚本中。对于开发和 QA 实验室,您可以为用作实验室服务的模板设置供开发团队使用的单独的虚拟网络、活动目录或 DNS 服务器。
在本博文中,我包含了一个压缩文件夹,其中包括我当前使用的标准脚本以及 4 个可导入您的 Virtual Machine Manager 控制台的基本服务模板 XML 文件。在将来的博文中,我将更详细地介绍标准脚本,对于本博文,我只想说,对通用命令执行 (GCE) 脚本使用一个自定义资源文件夹会使事情变得更加简单。
下载
可从此处的库中下载这些文件:http://gallery.technet.microsoft.com/Virtual-Machine-Manager-a570ccc6
下载的压缩文件夹 (ServiceTemplateExamples04062013.zip) 包含以下文件:
· ReadMe.docx– 示例模板说明和用户指南。
· 1-tier Single Server.Base v1.xml– 不含自定义项的单个 WS 2012 数据中心服务器的服务模板。它是可部署的。
· 1-tier Scalable Web Server.Base v1.xml– 可扩展 WS 2012 数据中心 Web 服务器的服务模板。包含用于承载基本 .NET 4.5 Web 应用程序和基于 NLB 的负载平衡的功能及角色。
· 2-tier Scalable Web Server w SQL.Base v1.xml– 以 1 层可扩展 Web 应用程序模板为基础,并添加了 SQL 2012 数据库层。
· 3-tier Scalable Web Server w SQL.Base v1.xml– 以 2 层可扩展 Web 应用程序模板为基础,并添加了无法扩展的中间 Web 层以充当 Web 服务中间层服务器。
· Standard_Scripts\Standard04062013.cr– 包含上述模板使用的所有标准脚本的自定义资源文件夹。
从这些文件,您可以创建具有不同的可用资源(如内存和 CPU)的黄金级、白银级和白金级服务模板。您可以修改各个层以托管不同类型的应用程序,例如 SQL 的不同版本。
我包含了以下脚本以允许在部署时进行一些基本更改。在这些脚本中,我记录到位于虚拟机上 %windir%\temp 目录下一个名为 Output.log 的集中日志中。我还明确设置了退出代码,因此如果出现逻辑性错误(例如没有必需的参数),您可以在服务模板中采取单独的操作。
Add_Account_to_LocalAdmins.cmd | 参数:<域\用户> |
AddEntryToDns.ps1 | 参数:<DNS 服务器的 FQDN> <服务器名称的别名> [指向的 IP 地址] 用法:向 DNS 中添加一个条目。IP 地址是可选的,如果留空,脚本将使用适配器 1 上的第一个 IP。(正确的使用情形是为 SQL 服务器添加一个“A”记录以指向您的连接字符串) |
EnablePowerShellScripts.cmd | 参数:无 |
Mod_DefaultWebSite.cmd | 参数:<网站名称> 用法:删除“默认网站”并在 wwwroot 中创建一个新文件夹,然后使用端口 80 和 DefaultAppPool 的绑定创建用该参数命名的新网站。 |
Mod_DefaultWebSite_AppPool.cmd | 参数:<网站名称> 用法:删除“网站默认”并在 wwwroot 中创建一个新文件夹,创建新应用程序池,然后使用端口 80 和新应用程序池的绑定创建用该参数命名的新网站。 |
Mod_FolderPermissions.cmd | 参数:<网站名称> 用法:将 c:\inetpub\wwwroot\<网站名称> 的文件夹权限更改为所有人。当新网站需要新的读写访问权限时的权限脚本的用法示例。 |
注意:<> 表示必需参数,[] 表示可选参数
用法
您需要将 Standard 文件夹复制到您的库中,并确保在尝试导入模板之前先刷新库。刷新后,您可以一次导入一个模板并重新映射任何必需的资源。您必须重新映射的一些基本内容是用于每个模板的 VHDX 文件和我使用的任何运行身份帐户(您没有这些帐户),当然网络和负载平衡器也需要重新映射。在导入模板之前,需执行此处的一些基本步骤。
1.Windows Server 2012 Data Center VHDX 已经过 sysprep 并且位于库中
2.使用上面的 VHDX 准备一个 SQL Server 2012 映像以进行 sysprep。必须记住虚拟机中的实例名称和 SQL 安装文件的本地目录。(注意:用于开发实验室时应安装所有 SQL 功能,包括 Management Studio;用于生产环境时应根据需要限制功能)
3.为负载平衡器创建 VIP 模板(注意:按照此处的说明在 VMM 中设置 NLB)
4.创建您将使用的任何运行身份帐户。例如,用于在部署期间加入域的运行身份。
下面是导入 3 层模板的视图。这需要重新映射 5 个资源。两个 VHDX 文件、服务运行时使用的一个 SQL 帐户、一个用于 NLB 负载平衡的 VIP 模板和 VM 网络。(注意:此屏幕截图与存在的 5 个资源并不完全相同,因此它们不会如您所愿在每个资源旁边显示 图标)
除了上述资源重新映射外,还需要将模板内的某些基本更改映射到您的环境。右键单击导入的模板,然后打开设计视图。
所有层 - 硬件配置: - 选择网络适配器 (注意)负载平衡层需要池中的静态 IP 和 MAC 地址欺骗 | |
所有层 - OS 配置: - 更改要加入的域和用于加入域的帐户。 - 添加本地管理员密码。默认值为 Pass@word1 | |
SQL 层 – SQL Server 配置 - 正确的实例名称 - 更改“介质源” - 更改 SQL Server 管理员或向其添加用户 (注意:所有设置均基于准备好的 SQL 设置。) | |
可选的所有层: | |
在可扩展 Web 层上添加或确认负载平衡器: - 选择“添加负载平衡器”并映射到网络(注意:若要创建 VIP 模板,请参见上面的步骤 3) | |
若要部署,请执行以下操作: - 为安装前脚本使用的必需参数提供网站名称 (注意:这将在 wwwroot 文件夹下创建一个与网站同名的目录) - 为安装前脚本使用的参数提供 VMM 服务器服务帐户。(注意:这是 NLB 备份必需的) |
视频:导入和配置
在即将发布的博文中,我们将深入探讨脚本和故障排查以及一些示例应用程序,同时还将探讨如何在服务模板中准备正在运行的网站以便部署。