只需简单5步,Ansible脚本自动搭建AlwaysOn集群(已测试通过,可实际运行)

之前已经介绍过这套脚本,请看下面↓ 一分钟搞定!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
 

本文版权归作者所有,未经作者同意不得转载。

只需简单5步,Ansible脚本自动搭建AlwaysOn集群(已测试通过,可实际运行)的更多相关文章

  1. 如何将新项目添加到github仓库中?只需简单几步~即可实现

    问题描述:新建了一个项目,如何将其设置为git项目?如何关联到github上的仓库? 只需简单几步,但前提是需要已经安装好了git,并且有github账户 本文使用IntelliJ IDEA 其他编辑 ...

  2. 快速体验 Sentinel 集群限流功能,只需简单几步

    ️ Pic by Alibaba Tech on Facebook 集群限流 可以限制某个资源调用在集群内的总 QPS,并且可以解决单机流量不均导致总的流控效果不佳的问题,是保障服务稳定性的利器. S ...

  3. 用Python实现一个端口扫描,只需简单几步就好

    一.常见端口扫描的原理 0.秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术. 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己. 秘密扫描能躲避IDS.防火墙.包过滤器 ...

  4. Azure vm 扩展脚本自动部署Elasticsearch集群

    一.完整过程比较长,我仅给出Azure vm extension script 一键部署Elasticsearch集群的安装脚本,有需要的同学,可以邮件我,我给你完整的ARM Template 如果你 ...

  5. Cognos11只需简单几步创建你的Dashboard

    一.环境 操作系统:win10 数据库   :SQLserver 2008 R2 软件版本:IBM Cognos Analytics 11.0.6 浏览器   :IE 11 二.开始创建仪表板 2.1 ...

  6. 电子邮件怎么用EasyRecovery恢复,只需简单5步

    在日常工作中,我们常常会用电子邮件与上事.客户等协商工作事务.电子邮件快捷.方便,慢慢地成为我们工作中不可缺少的沟通工具之一. 然而使用的过程中,你会发现垃圾邮件也越积越多了,平时,我看到积压的垃圾邮 ...

  7. 只需十四步:从零开始掌握 Python 机器学习(附资源)

    分享一篇来自机器之心的文章.关于机器学习的起步,讲的还是很清楚的.原文链接在:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找 ...

  8. 只需十四步:从零开始掌握Python机器学习(附资源)

    转载:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找到大量的资源.你现在也在考虑从 Python 入门机器学习吗?本教程或许 ...

  9. Redis 超详细自动管理Cluster集群工具上手 redis-trib.rb (多图,手把手)

    安装介绍 ​ redis-trib.rb是一款由Redis官方提供的集群管理工具,能够大量减少集群搭建的时间. ​ 除此之外,还能够简化集群的检查.槽迁徙.负载均衡等常见的运维操作,但是使用前必须要安 ...

  10. nginx的简单使用和使用nginx在windows上搭建tomcat集群

    nginx是一款轻量级的web服务器,常用的作用为服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器 1.为什么我们要使用Nginx? 反向代理: 反向代理(Reverse Proxy ...

随机推荐

  1. qiankun 的 JS 沙箱隔离机制

    为什么需要JS沙箱 想象一下 当一个应用(比如应用 A)加载时,可能会对 window 对象的属性进行修改或添加.如果不加控制,这些修改会影响到之后加载的其他应用(比如应用 B),就会导致属性读写冲突 ...

  2. 双语对照的 PDF 翻译工具「GitHub 热点速览」

    在 OpenAI 举办的「12天12场」发布会上,ChatGPT 的多项新功能正式亮相,包括 GPT-o1 正式版和 ChatGPT Pro(200 美元/月).强化微调(Reinforcement ...

  3. Gitlab误删用户导致项目丢失莫慌

    Gitlab让小朋友不小心把离职员工的账号给删了,可是离职员工有好几个项目都是他是owner,造成Gitlab上项目全部丢失. 遇到这种情况,莫慌. 一般,本地都有完整的Git备份,离职员工走了,肯定 ...

  4. 【PHP】读取本地文件夹中所有图片并显示

    <? //获取文件夹下的所有文件 $dir_str = ''; $imgType = array('gif','png','jpg','jpeg','bmp'); $handle = opend ...

  5. Swagger2学习——@ApiImplicitParams注解

    @ApiImplicitParams:用在请求的方法上,表示一组参数说明 @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面 name:参数 ...

  6. Qt编写物联网管理平台45-采集数据转发

    一.前言 本系统严格意义上说是一个直连硬件的客户端软件,下面接的modbus协议的设备直接通过网络或者串口和软件通信,软件负责解析数据和存储记录.有时候客户想要领导办公室或者分管这一块的部门经理办公室 ...

  7. Qt编写物联网管理平台44-告警邮件转发

    一.前言 上一篇文章说的是告警短信发送,这种效率非常高,缺点也很明显,需要购买特定的短信硬件设备支持才行,而且每条短信都要收费,如果要求发送的短信数量特别多,这个费用常年累月下来也是不少的,客户就不愿 ...

  8. Qt编写可视化大屏电子看板系统32-模块10大屏地图

    一.前言 大屏地图模块采用浏览器模块+echart组件,Qt自带了webkit或者webengine模块,其中在win上mingw编译器的Qt5.6以后的版本,没有了浏览器模块,这个就需要用第三方的浏 ...

  9. [转]OpenCV三角测量重建triangulatePoints原理解析

    opencv源代码注释 附上opencv三角测量函数的主要代码和注释 cvTriangulatePoints(CvMat* projMatr1, CvMat* projMatr2, CvMat* pr ...

  10. ArchLinux安装后常见问题的解决

    Q:UEFI引导grub-install报错:variables are not support on this system A:进入安装u盘的时候是传统引导模式,传统模式下无法安装UEFI启动,解 ...