一键自动化部署工具 SQL Server的AlwaysOn集群和WSFC集群

文摘   2024-10-03 10:02   广东  

编写目的

  1. 通过自动化部署提升部署效率,同时降低人工干预导致的标准不一致风险。

  2. 有效降低重复性工作成本,加快部署速度,部署一套3节点AlwaysOn集群大概只需要5分钟!

  3. 遵循规范 ,从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,针对这两项主要功能,衍生出的周边功能如下:

  1. SQL Server实例安装:根据配置文件安装SQL Serverd FCI群集或单机实例,衍生功能包括:
  • 磁盘初始化:挂载磁盘、分配盘符、磁盘格式化
  • 群集创建:WSFC组件检测及安装、群集环境检测、创建Windows的WSFC群集、添加群集资源(共享磁盘、群集节点)
  • 实例安装:安装环境预检测、安装包版本识别、分版本定制安装脚本、群集及单机实例安装、安装状态判断
  1. 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 工作流说明

  1. 用户先定义配置文件【Configuration_WSFC_AG.csv】。
  2. 根据请求类型(安装实例 or 部署AG),调用Server端启动脚本【Autodeployment_Server_Parallel.ps1】
  3. Server端验证配置文件合法性,并对配置文件进行标准化处理(如群集组只需填写一条记录,标准化处理将对该记录进行拆分)
  4. Server端根据请求类型下发文件到client端(包括脚本文件、安装包文件,目前为单线程下发方式)
  5. Server端创建连接池,创建并行的异步任务到Client端,调用Client端启动脚本【Autodeployment_Client.ps1】
  6. Client端根据上游下发的任务指令调用各功能函数,完成任务后将操作日志返回Server端。
  7. 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《异常排查手册》



需要这个工具的朋友可以加入微信群索取


数据库实战派
泰莱大学人工智能专业硕士,专注数据库技术解析,涵盖主流数据库的优化、运维与开发技巧。分享最新技术趋势、实用工具和最佳实践,助力从业者提升专业能力。
 最新文章