百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

只需简单5步,Ansible脚本自动搭建AlwaysOn集群

gudong366 2025-06-03 22:15 7 浏览

之前已经介绍过这套脚本,请看下面↓ 一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019

注意:

这套ansible脚本不支持RHEL 7.X 和CentOS7.X系统!

这套ansible脚本不支持RHEL 7.X 和CentOS7.X系统!

这套ansible脚本不支持RHEL 7.X 和CentOS7.X系统!

使用RHEL 7.X 和CentOS7.X系统是完全无问题的,但是只能自己手动搭建AlwaysOn集群了


具体搭建流程

搭建所需时间取决于网络环境,需要从微软源拉取安装包,操作系统可以使用CentOS 8.X 或者CentOS 9.x,本次实验使用的操作系统是CentOS 9.2

节点信息如下:

ip

主机名

角色

ansible角色

192.168.22.71

wwwmssql71

从库

既是ansible控制机又是被控机

192.168.22.73

wwwmssql73

从库

被控机

192.168.22.76

wwwmssql76

主库

被控机

192.168.22.99

yahaha_listener

侦听器



1、在所有数据库节点上执行,创建shell脚本并执行shell脚本

vi abc.sh


#!/bin/bash
yum install -y epel-release
yum install -y  ansible
yum install -y ansible-collection-microsoft-sql rhel-system-roles
yum config-manager --set-enabled highavailability
yum install -y  fence-agents-all resource-agents 
yum install -y bind-utils


cat <<EOF >> /etc/hosts
192.168.22.71  wwwmssql71
192.168.22.73  wwwmssql73
192.168.22.76  wwwmssql76
192.168.22.99  yahaha_listener
EOF


2、在192.168.22.71节点上执行,创建清单文件

cat <<EOF >> hosts.yml
all:
  hosts:
    192.168.22.71:
      ansible_user: root
      ansible_ssh_pass: "你的密码"
      mssql_ha_replica_type: primary
      ha_cluster:
        node_name: wwwmssql71
        pcs_address: wwwmssql71
        corosync_addresses:
          - 192.168.22.71
    192.168.22.73:
      ansible_user: root
      ansible_ssh_pass: "你的密码"
      mssql_ha_replica_type: synchronous
      ha_cluster:
        node_name: wwwmssql73
        pcs_address: wwwmssql73
        corosync_addresses:
          - 192.168.22.73
    192.168.22.76:
      ansible_user: root
      ansible_ssh_pass: "你的密码"
      mssql_ha_replica_type: synchronous
      ha_cluster:
        node_name: wwwmssql76
        pcs_address: wwwmssql76
        corosync_addresses:
          - 192.168.22.76
EOF


3、在192.168.22.71节点上执行,测试被控机器的连通性

ssh root@192.168.22.71
ssh root@192.168.22.73
ssh root@192.168.22.76
ansible all -i hosts.yml -m ping

4、在192.168.22.71节点上执行,创建Playbook文件,自动安装SQL Server 企业版然后部署AlwaysOn,Playbook文件执行下面的任务:

(1)安装SQL Server数据库并设置好数据库。

(2)验证SQL Server和数据库工具是否正确配置。

(3)创建必要的数据库端点和证书,并将证书复制到所有副本中,用于Always On可用性组(AG)端点身份验证。

(4)在所有SQL Server副本中创建Pacemaker数据库登录用户。

(5)创建pacemaker集群资源:ag cluster-clone和virtualip 。

(6)打开用于健康检查探测的防火墙端口,AG端点(5022)和SQL Server端口(1433)。

(7)最后,为AG创建一个AG侦听器。

创建playbook.yaml文件 vi playbook.yaml

- hosts: all
  vars:
    mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
    mssql_accept_microsoft_odbc_driver_for_sql_server_eula: true
    mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
    mssql_accept_microsoft_sql_server_standard_eula: true
    mssql_version: 2022  # 数据库版本
    mssql_password: "p@55w0rD"# sa 用户密码
    mssql_edition: 2Q48Q-PB48J-DRCVN-GB844-X2H4Q  # 设置产品密钥
    mssql_datadir: "/data/mssql/1433/database/"# 设置数据库默认路径
    mssql_logdir: "/data/mssql/1433/database/"# 设置数据库日志路径
    mssql_manage_firewall: false
    mssql_run_selinux_confined: false
    mssql_ha_configure: true
    mssql_manage_ha_cluster: true
    mssql_ha_prep_for_pacemaker: true
    mssql_ha_ag_cluster_type: external
    mssql_ha_endpoint_port: 5022
    mssql_ha_cert_name: ExampleCert
    mssql_ha_master_key_password: "p@55w0rD1"
    mssql_ha_private_key_password: "p@55w0rD2"
    mssql_ha_endpoint_name: Example_Endpoint
    mssql_ha_ag_name: ExampleAG     # alwayson可用性组名称
    mssql_ha_login: pacemakerLogin
    mssql_ha_login_password: "p@55w0rD3"
    mssql_ha_virtual_ip: 192.168.22.99   #虚拟IP
    ha_cluster_cluster_name: "{{ mssql_ha_ag_name }}"#pacemaker集群名称
    ha_cluster_hacluster_password: "p@55w0rD4"
    ha_cluster_cluster_properties:
      - attrs:
          - name: cluster-recheck-interval
            value: 2min
          - name: start-failure-is-fatal
            value: false
          - name: stonith-enabled
            value: false
    ha_cluster_resource_primitives:
      - id: ag_cluster
        agent: ocf:mssql:ag
        instance_attrs:
          - attrs:
              - name: ag_name
                value: "{{ mssql_ha_ag_name }}"
        meta_attrs:
          - attrs:
              - name: failure-timeout
                value: 60s
      - id: virtualip
        agent: ocf:heartbeat:IPaddr2
        instance_attrs:
          - attrs:
              - name: ip
                value: "{{ mssql_ha_virtual_ip }}"
        operations:
          - action: monitor
            attrs:
              - name: interval
                value: 30s
    ha_cluster_resource_clones:
      - resource_id: ag_cluster
        promotable: yes
        meta_attrs:
          - attrs:
              - name: notify
                value: true
    ha_cluster_constraints_colocation:
      - resource_leader:
          id: ag_cluster-clone
          role: Promoted
        resource_follower:
          id: virtualip
        options:
          - name: score
            value: INFINITY
    ha_cluster_constraints_order:
      - resource_first:
          id: ag_cluster-clone
          action: promote
        resource_then:
          id: virtualip
          action: start
  tasks:
   - name: Run on all hosts to configure HA cluster
     include_role:
       name: microsoft.sql.server


5、在192.168.22.71节点上执行,运行Playbook文件

ansible-playbook  -i hosts.yml   playbook.yaml  --flush-cache

注意: 如果要多次运行playbook文件,需要先删除pacemaker集群,才能再次运行playbook

--删除所有pacemaker集群
pcs cluster destroy --all


6、搭建完成,在SQL Server Management Studio(SSMS)中查看AG及其仪表板,然后查看已创建的集群资源

pcs status

这套脚本的小缺陷:无法预先创建数据库并加入到可用性组,需要在搭建完成之后,手动添加数据库到可用性组



只安装数据库,不部署AlwaysOn集群

如果只需要单独安装数据库,playbook书写如下即可

vi playbook.yml

---
- hosts: localhost
  vars:
    mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
    mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
    mssql_accept_microsoft_sql_server_standard_eula: true
    mssql_password: 'RedH@123!'
    mssql_edition: 'Developer'
    mssql_enable_sql_agent: true
    mssql_install_fts: false
    mssql_install_powershell: true
    mssql_tune_for_fua_storage: true
    mssql_datadir: "/data/mssql/1433/database"
    mssql_logdir: "/data/mssql/1433/database"

  roles:
    - microsoft.sql.server
 

相关推荐

U盘文件被删怎么简单恢复(u盘里的文件被误删了怎么找回)

现在这个社会不是靠关系靠路子,主要还是靠实力。刘强在机关工作,人长得帅气,工作能力又强。唯独一样不好,脾气太大,动不动就发火,因为小事常和同事发生口角。一次他火大的差点把办公桌给掀翻了,领导见他野蛮的...

不小心删除了一些文件?9 个最佳免费硬盘恢复软件

恢复您曾经无意或意外删除的所有文件和数据。您是否曾经错误地删除了一个对您的工作至关重要并导致您丢失所有进度的文件?我们为您提供了一些最好的免费硬盘恢复软件,以帮助您恢复意外删除的文件,以解决您的文件删...

Studio 中文版:数据救援神器,误删 / 分区损坏 / RAID 恢复一键找回

Studio中文版:数据救援神器,误删/分区损坏/RAID恢复一键找回当文件意外删除、分区损坏,或RAID阵列崩溃时,一款可靠的数据恢复工具往往能挽回关键损失。R-Studio中文版...

你值得拥有的11款Linux数据恢复工具

如果你使用的是Linux操作系统,那么你一定想知道一旦硬盘崩溃的话又该如何保存和恢复数据。其实,现在有很多Linux数据恢复工具可以让我们摆脱数据安全的困扰。小编已经为各位准备好了一些最好的Linux...

误删文件内容怎么恢复(误删文件内容怎么恢复回来)

  在日常使用电脑的过程中,误删文件的情况时有发生。无论是由于操作失误还是病毒攻击,误删文件都会给我们带来不小的困扰。幸运的是,随着技术的发展,误删文件恢复已不再是难题。本文将介绍几款国内外知名的误删...

u盘如何恢复删除的文件?推荐5款u盘数据恢复软件!

在日常生活与工作中,U盘作为便捷的数据存储载体,频繁用于传输和保存各类重要文件。然而,误删文件的情况却时有发生,无论是珍贵的照片、重要的工作文档,还是精心制作的视频,一旦删除,都可能带来不小的麻烦。...

怎么恢复删除的数据?5种有效的数据恢复方法汇总!

在数字化办公与生活的时代,电脑里的每一份数据都承载着重要信息。然而,一个误操作就可能导致数据被删除,无论是尚未保存的重要文档,还是珍藏多年的照片,都可能瞬间“消失”。但其实,数据删除并不意味着永久丢...

u盘删除文件怎么找回?5个数据恢复工具汇总,助你巧妙恢复数据!

在日常使用U盘的过程中,误删文件的情况时有发生,重要的工作文档、珍贵的照片视频一旦消失,难免让人焦急万分。别担心,只要选对数据恢复工具,被删除的数据仍有找回的可能。下面就为你汇总5款实用的数据...

Linux下恢复误删文件:思路+实践(linux删除如何恢复)

周五篮球群里有人问误删文件了怎么恢复,得知是ext4文件系统之后我推荐了ext4magic这个工具,然后又有人提到了xfs的话怎么办,正好前几天看到DaveChinner在邮件列表里提到了这个问题,...

苹果放大招!不用虚拟机了,Mac直接跑Linux容器,开发者效率翻倍

苹果这次真给开发者送福利了!今天凌晨(6月10日),苹果在官宣的Containerization框架直接炸了技术圈——Mac现在能原生运行Linux容器镜像了!这可不是虚拟机那种“套娃”方案,而是基...

7 款老牌经典软件,值得收藏(经典老歌软件)

Calibrehttps://calibre-ebook.com/Calibre是一个电脑电子书管理软件。肯定有人说了,电子书还要管理?那当然了。它的功能更强大的让你想象不到,首先它可以导入PDF,...

神仙级的免费开源电子书阅读器,还支持听书功能

神仙级的免费开源电子书阅读器,还支持听书功能,极空间部署『KoodoReader』哈喽小伙伴们好,我是Stark-C~前段时间不是给大家分享的电子书管理工具『TaleBook』嘛~,然后就有粉丝私信...

如何在Ubuntu系统中重置root密码(ubuntu忘记密码重置root密码命令)

很多人有个问题,就是喜欢把密码设置得很长很复杂,结果谁也没防住,却成功防住了自己ヽ(.ˇдˇ;)ノ对于现代人,特别是年轻人,都有过忘记密码的经历吧。在这篇文章中,我们来了解如何在Ubuntu1...

5款功能强大的PDF阅读器,让PDF阅读更轻松

分享5款功能强大的PDF阅读器,拥有丰富的PDF阅读工具,支持PDF文档划线、笔记、标记等操作,让PDF阅读更轻松!1.嗨动PDF编辑器一款实用的PDF处理软件,不仅可以阅读PDF文档,还能直接编辑、...

上班摸鱼利器! 免费好用的电子书阅读器,NAS轻松部署Koodo Reader

哈喽,大家好我是生活爱好者。笔者也是一名小说爱好者,平时用手机用某信读书,会员也开了,在家看体验也不错,但是上班的时候,在工作快速完成之后,想摸个鱼用手机就不太方便啦,作为爱折腾的人,必须要工作认真,...