只需简单5步,Ansible脚本自动搭建AlwaysOn集群(已测试通过,可实际运行)
只需简单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集群(已测试通过,可实际运行)的更多相关文章
- 如何将新项目添加到github仓库中?只需简单几步~即可实现
问题描述:新建了一个项目,如何将其设置为git项目?如何关联到github上的仓库? 只需简单几步,但前提是需要已经安装好了git,并且有github账户 本文使用IntelliJ IDEA 其他编辑 ...
- 快速体验 Sentinel 集群限流功能,只需简单几步
️ Pic by Alibaba Tech on Facebook 集群限流 可以限制某个资源调用在集群内的总 QPS,并且可以解决单机流量不均导致总的流控效果不佳的问题,是保障服务稳定性的利器. S ...
- 用Python实现一个端口扫描,只需简单几步就好
一.常见端口扫描的原理 0.秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术. 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己. 秘密扫描能躲避IDS.防火墙.包过滤器 ...
- Azure vm 扩展脚本自动部署Elasticsearch集群
一.完整过程比较长,我仅给出Azure vm extension script 一键部署Elasticsearch集群的安装脚本,有需要的同学,可以邮件我,我给你完整的ARM Template 如果你 ...
- Cognos11只需简单几步创建你的Dashboard
一.环境 操作系统:win10 数据库 :SQLserver 2008 R2 软件版本:IBM Cognos Analytics 11.0.6 浏览器 :IE 11 二.开始创建仪表板 2.1 ...
- 电子邮件怎么用EasyRecovery恢复,只需简单5步
在日常工作中,我们常常会用电子邮件与上事.客户等协商工作事务.电子邮件快捷.方便,慢慢地成为我们工作中不可缺少的沟通工具之一. 然而使用的过程中,你会发现垃圾邮件也越积越多了,平时,我看到积压的垃圾邮 ...
- 只需十四步:从零开始掌握 Python 机器学习(附资源)
分享一篇来自机器之心的文章.关于机器学习的起步,讲的还是很清楚的.原文链接在:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找 ...
- 只需十四步:从零开始掌握Python机器学习(附资源)
转载:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找到大量的资源.你现在也在考虑从 Python 入门机器学习吗?本教程或许 ...
- Redis 超详细自动管理Cluster集群工具上手 redis-trib.rb (多图,手把手)
安装介绍 redis-trib.rb是一款由Redis官方提供的集群管理工具,能够大量减少集群搭建的时间. 除此之外,还能够简化集群的检查.槽迁徙.负载均衡等常见的运维操作,但是使用前必须要安 ...
- nginx的简单使用和使用nginx在windows上搭建tomcat集群
nginx是一款轻量级的web服务器,常用的作用为服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器 1.为什么我们要使用Nginx? 反向代理: 反向代理(Reverse Proxy ...
随机推荐
- vite2+vue3使用tsx报错React is not defined、h is not defined
vite 为 .jsx 和 .tsx 文件提供开箱即用支持. 如果不是在 react 中使用 jsx,对于报错: React is not defined 需要在 vite.config.js 文件中 ...
- Fuzz技术综述与文件Fuzz
文章一开始发表在微信公众号 https://mp.weixin.qq.com/s?__biz=MzUyNzc4Mzk3MQ==&mid=2247486189&idx=1&sn= ...
- Qt编写地图综合应用37-覆盖物多边形
一.前言 多边形主要的应用场景是用来框起一块区域,然后根据坐标点集合,找到该区域内的标注点集合,比如指定某个县市区域多边形,然后找到这个县市对应的所有站点,拿到这些站点在做其他处理. 二.功能特点 同 ...
- Qt音视频开发19-海康sdk录像存储
一.前言 关于调用海康sdk来进行录像存储,整体的框架架构处理流程沿袭了之前vlc内核.ffmpeg内核.mpv内核的做法,定时存储这块,开个定时器判断,到了时间则先关闭原来的录像存储,然后在开始一个 ...
- [转]VS2019生成项目文件.lib或.dll或exe后如何拷贝到指定的目录文件夹
VS2019编译CloudCompare,发现生成的项目文件都是分开的,每个项目下都有自己的文件夹Debug/Release,生成Dll都放在这些单独的项目文件夹内. 目标 (1)通常,我们要求所有的 ...
- Mac 最大连接数和端口的相关参数
1. 最大连接数限制 最大连接数限制就是系统所能打开的最大文件数(文件描述符)的限制,分全局和进程两种: 1.1. 全局 $ sysctl kern.maxfiles kern.maxfiles: 4 ...
- 连接Redis 错误的解决方法: It was not possible to connect to the redis server(s); to create a disconnected multiplexer
The error you are getting is usually a sign that you have not set abortConnect=false in your connect ...
- Mongodb 基础与安装
官网链接:https://docs.mongodb.com/ 参考链接:https://www.runoob.com/mongodb/mongodb-linux-install.html 1.什么是M ...
- MySQL 中information_schema、mysql、performance_schema、sys 简介
一.information_schema简介在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库.其中保存着关于MySQL服务器所维护的所有其他数据库的信息. ...
- 6种微服务RPC框架-copy
一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的. 跟语言平台绑定的开源 RPC 框架主要有下面几种. Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末 ...