编写目的
通过自动化部署提升部署效率,同时降低人工干预导致的标准不一致风险。
有效降低重复性工作成本,加快部署速度,部署一套3节点AlwaysOn集群大概只需要5分钟!
遵循规范 ,从Code as Standrad 这个理念出发,目的是减少对部署规范文档的依赖,通过编码来固定部署规范。如果你使用这套工具进行部署,那就相当于满足了交付运维规范。现在很多的自动化部署工具ansible、saltstack、Terraform也是采用类似理念,也就是 基础设施即代码 (IaC)
适用范围
适用于在Window环境中部署SQL Server实例及AlwaysOn Availability Group(以下简称“AG”)。目前支持的版本:
操作系统:Windows Server 2012 R2、Windows Server 2016、Windows Server 2019 数据库系统:SQL Server 2012、SQL Server 2014、SQL Server 2016、SQL Server 2019
注:SQL Server各版本安装时需首先符合官方约定的安装软硬件条件。Windows 2012 R2 + SQL Server 2016(或2017)在部署上有更为严格的前置条件,详见 https://docs.microsoft.com/zh-cn/sql/sql-server/install/hardware-and-software-requirements-for-installing-sql-server?view=sql-server-ver15
功能描述
主要功能为自动部署SQL Server实例及AG,针对这两项主要功能,衍生出的周边功能如下:
SQL Server实例安装:根据配置文件安装SQL Serverd FCI群集或单机实例,衍生功能包括:
磁盘初始化:挂载磁盘、分配盘符、磁盘格式化 群集创建:WSFC组件检测及安装、群集环境检测、创建Windows的WSFC群集、添加群集资源(共享磁盘、群集节点) 实例安装:安装环境预检测、安装包版本识别、分版本定制安装脚本、群集及单机实例安装、安装状态判断
SQL Server AG部署:根据配置文件部署SQL Server AG,衍生功能包括:
SQL Server AG环境预检测、开启AlwaysOn功能、创建镜像端点、创建AG数据库、备份AG数据库并恢复到辅助副本、创建AG、添加辅助副本到AG、连接辅助副本AG数据库、创建侦听器
架构描述
4.1 架构说明
本脚本采用星型部署,即一个Server+N个Client的架构。 虽然脚本中已经对Server功能的限制尽可能做了规避,但仍建议Server应独立于Client。
【部署架构图】
4.2 工作流说明
用户先定义配置文件【Configuration_WSFC_AG.csv】。 根据请求类型(安装实例 or 部署AG),调用Server端启动脚本【Autodeployment_Server_Parallel.ps1】 Server端验证配置文件合法性,并对配置文件进行标准化处理(如群集组只需填写一条记录,标准化处理将对该记录进行拆分) Server端根据请求类型下发文件到client端(包括脚本文件、安装包文件,目前为单线程下发方式) Server端创建连接池,创建并行的异步任务到Client端,调用Client端启动脚本【Autodeployment_Client.ps1】 Client端根据上游下发的任务指令调用各功能函数,完成任务后将操作日志返回Server端。 Server端根据任务返回结果逐步关闭线程,直到全部任务结束。
【工作流架构图】
关于数据库文件路径:这里的路径不需要提前创建,脚本会自动挂载磁盘并格式化分配盘符,但目前的盘符顺序是固定的。以size作为评判标准,最小的为【Q】盘,一般是群集的仲裁盘 第二小的为【S】盘,一般是作为日志盘 数据和备份分别从最大的开始排列,为【R、U、L、M、N、X、Y、Z】
4.5. 日志文件说明
志命名 Server端:PSSQLServer_AutoDeploy_ServerLog_【机器名】_【日期】_【序号】.log Client端:PSSQLServer_AutoDeploy_ ClientLog _【机器名】_【日期】_【序号】.log 日志结构 【服务器名】【日期&时间】:【步骤状态】【步骤内容】
部署环境
硬件要求
Server端:4Cores、8G内存可满足20线程以内的并发部署(本脚本为异步远程调用,对CPU、内存压力较低) C盘空闲空间不低于10G(含3个版本安装包需要下发到client端)
Client端:C盘空闲空间不低于10G(含1个安装文件,不包含SQL Server安装所需的空间) 满足SQL Server安装、AG部署的官方硬件要求
软件要求
Server端:安装WSFC群集管理器 建议安装Powershell 5.0
Client端:所有服务器加入域环境(暂不支持无域环境部署) 关闭防火墙、UAC 保持Windows Remote Management(WS-Management)winrm服务开启(默认开启) 安装SQL Server 2012、2014实例需提前部署.net Framework 3.5 满足SQL Server安装、AG部署的官方软件要求
对Windows Server 2019,如创建WSFC群集需手动安装Cluster Feature,因为从Windows2019开始安装WSFC集群需要重启系统,本工具的InitClust重启之后无法继续执行,需要用户手动安装WSFC集群
其他要求
为避免对已上线运行的服务器产生影响(如在生产环境新增服务器,但配置表可能因误操作导致存在已上线运行的服务器),安装SQL Server实例前将验证是否存在未初始化且脱机的磁盘。如所有磁盘均online,则检测部分将认定当前服务器无可用磁盘并退出脚本运行。对非Administrator的部署账号,需要以管理员方式运行PowerShell,请在Server端以部署账号开启powershell窗口后,执行以下语句切换为管理员方式 Start-Process PowerShell -Verb runas 执行后将开启管理员模式PowerShell窗口(窗口提示栏显示“管理员:Windows PowerShell”)
调用示例
仅部署Windows Cluster,就是WSFC集群(从磁盘初始化开始,至Windows Cluster创建完成止) 如脚本放置路径为【c:\autodeployment】 cd c:\autodeployment .\Autodeployment_Server_Parallel.ps1 -Operation_type InitClust 仅安装SQL Server实例,就是安装SQL单实例(从验证Windows Cluster开始,至SQL Server实例安装完成止) 如脚本放置路径为【c:\autodeployment】 cd c:\autodeployment .\Autodeployment_Server_Parallel.ps1 -Operation_type InstallSQL 自动安装SQL Server实例,就是安装WSFC集群和安装SQL单实例(从磁盘初始化开始,至SQL Server实例安装完成止) 如脚本放置路径为【c:\autodeployment】 cd c:\autodeployment .\Autodeployment_Server_Parallel.ps1 -Operation_type AllinOne 部署SQL Server AG(从验证SQL Server实例开始,至SQL Server AG部署完成止)
如脚本放置路径为【c:\autodeployment】 cd c:\autodeployment .\Autodeployment_Server_Parallel.ps1 -Operation_type CreateAG 如需要按组独立调用,亦可增加-Group_id参数,如 .\Autodeployment_Server_Parallel.ps1 -Operation_type AllinOne -Group_id 1 .\Autodeployment_Server_Parallel.ps1 -Operation_type CreateAG -Group_id 1
如需要同时调用多组,可以指定-Group_id参数为多个组号,如 .\Autodeployment_Server_Parallel.ps1 -Operation_type AllinOne -Group_id 1,2,3 .\Autodeployment_Server_Parallel.ps1 -Operation_type CreateAG -Group_id 1,2,3
异常排查
在Server端检查 \Log\Client\ PSSQLServer_AutoDeploy_ClientLog_All****.log日志,判断异常发生点; 根据异常发生点位置,执行回滚操作,检查回滚状态后再根据《异常排查手册》分别执行。具体排查动作见附件1《异常排查手册》
需要这个工具的朋友可以加入微信群索取