五分钟搞定!Linux平台上用Ansible自动化摆设SQL Server AlwaysOn集群
五分钟搞定!Linux平台上用Ansible自动化摆设SQL Server AlwaysOn集群前言
以下内容是由红帽官方博客整理而成,使用Ansible在Linux平台上自动化摆设SQL Server AlwaysOn集群
不熟悉整个流程的朋友可以先看之前的摆设文章,手动摆设一遍
从DNS设置到Pacemaker摆设:一步步教你在Linux平台上实现AlwaysOn集群
随着RHEL 8.7和RHEL 9.1的正式发布,这些功能已由Red Hat和Microsoft共同支持,作为最新RHEL发行版的一部门,并通过Ansible Automation Hub提供。之前的博客已向您展示了我们所交付功能的范围,而本篇博客将介绍如何使用这些功能。
为了帮助设置和设置,Red Hat通过Github提供了社区支持的脚本,答应您在Azure、裸金属(也实用于在RHEL或OpenShift虚拟化平台上托管的虚拟机)和VMware VSphere摆设中设置SQL Server高可用性组AlwaysOn集群。
在使用这些脚本时,整个安装过程总共分为三个步调:
[*]第一步:在数据库主节点上安装并设置初始SQL Server,并创建好数据库
[*]第二步:在RHEL上安装并设置两个额外的SQL Server数据库节点,以便参加到集群,总共三个数据库节点构成AlwaysOn集群
[*]第三步:这是平台特定的步调,负责自动安装设置AlwaysOn高可用性组和与RHEL高可用性附加组件内里提供的Pacemaker集群服务
脚本内容
整套脚本提供的文件包括:
[*]run.sh :重要驱动脚本,负责调用其他脚本。
[*]create_example_db.j2 :一个示例T-SQL脚本,用于在第1步中创建的SQL Server上创建数据库。
[*]inventory: 一个资产文件,包含我们将在AlwaysOn集群中设置的服务器名称。
[*]step1.yml: 一个playbook脚本,使用Microsoft SQL Server集合在RHEL上设置SQL Server,并通过T-SQL脚本create_example_db.j2创建数据库。
[*]step2.yml: 一个playbook脚本,使用Microsoft SQL Server集合在RHEL体系上设置另外两个SQL Server节点,用于创建三个节点的Always On高可用性组集群。
[*]step3包含的脚本:以下列出的每个playbook脚本使用Microsoft SQL Server Ansible集合设置SQL Server Always On高可用性组,然后使用RHEL角色为高可用性为特定类型的虚拟、物理或云环境设置RHEL高可用性附加组件:
[*]step3-rhkvm.yml - 此示例设置一个设计用于裸金属、RHEL KVM虚拟化、Red Hat虚拟化或Red Hat OpenShift虚拟化的RHEL高可用性集群。
[*]step3-rhvmw.yml - 此示例设置一个设计用于VMware VSphere的RHEL高可用性集群。
[*]step3-rhazure.yml - 此示例设置一个设计用于Microsoft Azure的RHEL高可用性集群。
开始准备
一开始必要设置三台虚拟机,每台虚拟机运行RHEL 8.7和RHEL高可用性附加组件。如果您使用的是RHEL虚拟化和OpenShift虚拟化,它们都支持i63000esb设备。例如,如果您在RHEL上使用虚拟化并通过virt-install工具安装虚拟机,您可以使用以下下令:
# virt-install --name mssql1 --memory 4096 --vcpus 2 --disk size=20 --os-variant rhel8.7 --watchdog i6300esb,action=reset --cdrom=/mnt/isos/rhel-8.7-x86_64-dvd.iso我们还必要按照博客《RHEL体系角色简介》(https://www.redhat.com/en/blog/introduction-rhel-system-roles)
中概述的过程安装和设置ansible-core和rhel-system-roles软件包。完成后,您必要安装Microsoft SQL Server角色,下令如下:
# dnf install ansible-collection-microsoft-sql接下来,修改inventory文件以满意您的环境需求。该文件包含您将要摆设集群的物理主机或虚拟机的名称。inventory文件格式如下:
all:
hosts:
mssql1:
mssql_ha_replica_type: primary
mssql2:
mssql_ha_replica_type: synchronous
mssql3:
mssql_ha_replica_type: witness修改每个主机,以确保名称与您集群中的主机名匹配。此示例使用了三个名为:mssql1、mssql2和mssql3的主机。首先,mssql1将是初始的主节点,而mssql2将是一个同步副本,mssql3将作为仅设置副本。如果希望使用两个同步副本,可以将第三个副本指定为同步副本。
开始摆设
接下来,修改文件step1.yml和step2.yml。在这两个文件中,您可能必要修改以下参数:
[*]mssql_password: 您将在每台服务器上为sa账户设置的密码。
[*]mssql_edition: 您将使用的SQL Server版本,可能的选择包括Enterprise、Standard、Developer或Express(对于仅设置副本)。
在step1.yml文件中,您还必要修改mssql_ha_db_name参数,该参数指定您要参加到AlwaysOn集群的那些数据库的名称。
接下来,修改create_example_db.j2文件。该文件是用T-SQL编写,用于加载一个数据库。您可以创建一个新的数据库,大概从备份中规复一个数据库。无论哪种方式,确保数据库名称与您为mssql_ha_db_name设置的名称匹配。
对于step3.yml,如上所述,根据您将运行的环境,有三种可能的选择。我们将使用RHEL虚拟机,因此我们将按如下方式修改step3-rhkvm.yml文件:
[*]mssql_password: 我们为sa账户使用的密码
[*]mssql_ha_virtual_ip: 用于连接SQL Server的虚拟IP地点。如果发生主机故障,该地点将转移到AlwaysOn可用性组中的其他成员。您可以在操作体系的hosts文件或DNS中为此VIP设置主机名。它将与AlwaysOn的侦听器关联。
[*]mssql_ha_ag_name: AlwaysOn可用性组名称,将表现在如SQL Server Management Studio中。
[*]mssql_ha_db_names: 必要参加到AlwaysOn可用性组的数据库列表。
[*]mssql_ha_master_key_password:数据库主密钥
[*]mssql_ha_private_key_password:数据加密密钥。
[*]mssql_ha_login_password:PacemakerLogin数据库登任命户的密码
[*]ha_cluster_hacluster_password:Pacemaker集群的集群用户密码
在所有这些设置完成后,在Ansible的工作目次(必要将脚本复制到Ansible控制节点目次)开始实行脚本,下令如下:
$ ./run.sh要验证您的设置是否正常运行,在mssql1数据库节点上使用以下下令查看Pacemaker集群状态:
# pcs status如果Pacemaker集群运行正常,这将输出如下内容:https://mmbiz.qpic.cn/sz_mmbiz_png/4btH7yPYCW2PvBich9w659YMXVmVxDoc7VMqW9fQgnzzyBtpRQKmaENZhMvVxKenL5RkicKd3BeiatpUwF1hGHCXA/640?wx_fmt=png&from=appmsg
在这里,我们可以看到有三个节点参加了集群:mssql1、mssql2 和mssql3。所有节点都处于在线状态。当前的虚拟IP资源与mssql1绑定,因为当前mssql1是AlwaysOn的重要副本节点。
要确定AlwaysOn的侦听器正在使用的VIP浮动虚拟地点,可以运行以下下令:
# pcs resource config输出结果将表现您为应用步伐设置的VIP地点,供应用步伐访问:https://mmbiz.qpic.cn/sz_mmbiz_png/4btH7yPYCW2PvBich9w659YMXVmVxDoc7fusgoicSCd826GG6yt0R03jmFpOKq2DlaQ28aTnajDckGTRiccERgLWQ/640?wx_fmt=png&from=appmsg这里我们看到,目标VIP地点是 192.168.200.254。
从下令行,我可以使用以下下令进行连接:
$ /opt/mssql-tools/bin/sqlcmd -S 192.168.200.254 -U sa -P <mssql_password> 其中,mssql_password为SA账户设置的密码。为了验证数据库故障转移是否正常工作,我们可以简朴地通过以下下令关闭重要副本节点:
poweroff #直接关机然后我们只需通过SSH连接到集群中的仍然处于运动状态的节点,并使用以下下令检查其状态:
pcs statushttps://mmbiz.qpic.cn/sz_mmbiz_png/4btH7yPYCW2PvBich9w659YMXVmVxDoc7YO4jFBJR0lYFyLUHibHEiak2ibE8zaLuDk2nbqG4CNRAHSGicqGqOyGPRQ/640?wx_fmt=png&from=appmsg在这里我们看到,mssql2和mssql3处于在线状态。由于我们将mssql3设置为【仅设置副本】,因此数据库无法从mssql3提供服务,所以mssql2将成为重要副本节点。我们看到虚拟IP已经绑定到mssql2上,而mssql1已经停止。我们可以通过再次运行以下下令来验证我们的数据库服务器是否正在运行:
$ /opt/mssql-tools/bin/sqlcmd -S 192.168.200.254 -U sa -P <mssql_password> 验证连接乐成!在典型的环境中,使用Ansible自动化摆设SQL Server Always On可用性组的整个过程大约必要五分钟。Ansible的体系角色中包含了许多验证集群工作正常的最佳实践。
本次摆设演示由Red Hat的Louis Imershein和Microsoft的Amit Khandelwal出现,演示内容包括本文中概述的过程,并展示了在RHEL上与SQL Server一起提供的一些新功能。本次ansible脚本实用于SQL Server 2017到SQL Server 2022版本。
总结
本文介绍了如何使用Ansible在Linux平台上自动化摆设SQL Server AlwaysOn集群。本文提供了社区支持的自动化ansible脚本来帮助在Azure、裸金属虚拟机、VMware VSphere等环境中设置SQL Server高可用性组。整个摆设过程分为三步:安装和设置初始SQL Server、添加额外节点并设置AlwaysOn集群、设置高可用性服务。
文章出处
[*]https://www.redhat.com/en/blog/introduction-rhel-system-roles
[*]https://www.redhat.com/en/blog/automate-microsoft-sql-server-always-availability-groups-red-hat-enterprise-linux
文中的Ansible相干playbook下载地点如下:
[*]https://github.com/redhat-cop/sqlserver-coi/tree/master/ansible/playbooks/SQLclusterPlaybooks
[*]https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux/sql-server
https://mmbiz.qpic.cn/sz_mmbiz_png/4btH7yPYCW2PvBich9w659YMXVmVxDoc7SfJA9neZuRJJNVCjdzxYkMUhRaktLAsiaZHEPzPBJHkX0FIhibGkfEeA/640?wx_fmt=png&from=appmsg
https://img2024.cnblogs.com/blog/257159/202409/257159-20240908204310924-1005667056.png
本文版权归作者所有,未经作者同意不得转载。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]