ToB企服应用市场:ToB评测及商务社交产业平台

标题: 只需简朴5步,Ansible脚本自动搭建AlwaysOn集群(已测试通过,可实际运行) [打印本页]

作者: 知者何南    时间: 2025-2-19 07:14
标题: 只需简朴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.71wwwmssql71从库既是ansible控制机又是被控机192.168.22.73wwwmssql73从库被控机192.168.22.76wwwmssql76主库被控机192.168.22.99yahaha_listener侦听器 

1、在所有数据库节点上执行,创建shell脚本并执行shell脚本
vi abc.sh
  1. #!/bin/bash
  2. yum install -y epel-release
  3. yum install -y  ansible
  4. yum install -y ansible-collection-microsoft-sql rhel-system-roles
  5. yum config-manager --set-enabled highavailability
  6. yum install -y  fence-agents-all resource-agents 
  7. yum install -y bind-utils
  8. cat <<EOF >> /etc/hosts
  9. 192.168.22.71  wwwmssql71
  10. 192.168.22.73  wwwmssql73
  11. 192.168.22.76  wwwmssql76
  12. 192.168.22.99  yahaha_listener
  13. EOF
复制代码
2、在192.168.22.71节点上执行,创建清单文件
  1. cat <<EOF >> hosts.yml
  2. all:
  3.   hosts:
  4.     192.168.22.71:
  5.       ansible_user: root
  6.       ansible_ssh_pass: "你的密码"
  7.       mssql_ha_replica_type: primary
  8.       ha_cluster:
  9.         node_name: wwwmssql71
  10.         pcs_address: wwwmssql71
  11.         corosync_addresses:
  12.           - 192.168.22.71
  13.     192.168.22.73:
  14.       ansible_user: root
  15.       ansible_ssh_pass: "你的密码"
  16.       mssql_ha_replica_type: synchronous
  17.       ha_cluster:
  18.         node_name: wwwmssql73
  19.         pcs_address: wwwmssql73
  20.         corosync_addresses:
  21.           - 192.168.22.73
  22.     192.168.22.76:
  23.       ansible_user: root
  24.       ansible_ssh_pass: "你的密码"
  25.       mssql_ha_replica_type: synchronous
  26.       ha_cluster:
  27.         node_name: wwwmssql76
  28.         pcs_address: wwwmssql76
  29.         corosync_addresses:
  30.           - 192.168.22.76
  31. EOF
复制代码
3、在192.168.22.71节点上执行,测试被控机器的连通性
  1. ssh root@192.168.22.71
  2. ssh root@192.168.22.73
  3. ssh root@192.168.22.76
  4. 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
  1. - hosts: all
  2.   vars:
  3.     mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
  4.     mssql_accept_microsoft_odbc_driver_for_sql_server_eula: true
  5.     mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
  6.     mssql_accept_microsoft_sql_server_standard_eula: true
  7.     mssql_version: 2022  # 数据库版本
  8.     mssql_password: "p@55w0rD"# sa 用户密码
  9.     mssql_edition: 2Q48Q-PB48J-DRCVN-GB844-X2H4Q  # 设置产品密钥
  10.     mssql_datadir: "/data/mssql/1433/database/"# 设置数据库默认路径
  11.     mssql_logdir: "/data/mssql/1433/database/"# 设置数据库日志路径
  12.     mssql_manage_firewall: false
  13.     mssql_run_selinux_confined: false
  14.     mssql_ha_configure: true
  15.     mssql_manage_ha_cluster: true
  16.     mssql_ha_prep_for_pacemaker: true
  17.     mssql_ha_ag_cluster_type: external
  18.     mssql_ha_endpoint_port: 5022
  19.     mssql_ha_cert_name: ExampleCert
  20.     mssql_ha_master_key_password: "p@55w0rD1"
  21.     mssql_ha_private_key_password: "p@55w0rD2"
  22.     mssql_ha_endpoint_name: Example_Endpoint
  23.     mssql_ha_ag_name: ExampleAG     # alwayson可用性组名称
  24.     mssql_ha_login: pacemakerLogin
  25.     mssql_ha_login_password: "p@55w0rD3"
  26.     mssql_ha_virtual_ip: 192.168.22.99   #虚拟IP
  27.     ha_cluster_cluster_name: "{{ mssql_ha_ag_name }}"#pacemaker集群名称
  28.     ha_cluster_hacluster_password: "p@55w0rD4"
  29.     ha_cluster_cluster_properties:
  30.       - attrs:
  31.           - name: cluster-recheck-interval
  32.             value: 2min
  33.           - name: start-failure-is-fatal
  34.             value: false
  35.           - name: stonith-enabled
  36.             value: false
  37.     ha_cluster_resource_primitives:
  38.       - id: ag_cluster
  39.         agent: ocf:mssql:ag
  40.         instance_attrs:
  41.           - attrs:
  42.               - name: ag_name
  43.                 value: "{{ mssql_ha_ag_name }}"
  44.         meta_attrs:
  45.           - attrs:
  46.               - name: failure-timeout
  47.                 value: 60s
  48.       - id: virtualip
  49.         agent: ocf:heartbeat:IPaddr2
  50.         instance_attrs:
  51.           - attrs:
  52.               - name: ip
  53.                 value: "{{ mssql_ha_virtual_ip }}"
  54.         operations:
  55.           - action: monitor
  56.             attrs:
  57.               - name: interval
  58.                 value: 30s
  59.     ha_cluster_resource_clones:
  60.       - resource_id: ag_cluster
  61.         promotable: yes
  62.         meta_attrs:
  63.           - attrs:
  64.               - name: notify
  65.                 value: true
  66.     ha_cluster_constraints_colocation:
  67.       - resource_leader:
  68.           id: ag_cluster-clone
  69.           role: Promoted
  70.         resource_follower:
  71.           id: virtualip
  72.         options:
  73.           - name: score
  74.             value: INFINITY
  75.     ha_cluster_constraints_order:
  76.       - resource_first:
  77.           id: ag_cluster-clone
  78.           action: promote
  79.         resource_then:
  80.           id: virtualip
  81.           action: start
  82.   tasks:
  83.    - name: Run on all hosts to configure HA cluster
  84.      include_role:
  85.        name: microsoft.sql.server
复制代码
5、在192.168.22.71节点上执行,运行Playbook文件
  1. ansible-playbook  -i hosts.yml   playbook.yaml  --flush-cache
复制代码
★留意: 如果要多次运行playbook文件,需要先删除pacemaker集群,才能再次运行playbook
  1. --删除所有pacemaker集群
  2. pcs cluster destroy --all
复制代码
6、搭建完成,在SQL Server Management Studio(SSMS)中查看AG及其仪表板,然后查看已创建的集群资源
  1. pcs status
复制代码

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


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

如果只需要单独安装数据库,playbook誊写如下即可
vi playbook.yml
  1. ---
  2. - hosts: localhost
  3.   vars:
  4.     mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
  5.     mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
  6.     mssql_accept_microsoft_sql_server_standard_eula: true
  7.     mssql_password: 'RedH@123!'
  8.     mssql_edition: 'Developer'
  9.     mssql_enable_sql_agent: true
  10.     mssql_install_fts: false
  11.     mssql_install_powershell: true
  12.     mssql_tune_for_fua_storage: true
  13.     mssql_datadir: "/data/mssql/1433/database"
  14.     mssql_logdir: "/data/mssql/1433/database"
  15.   roles:
  16.     - microsoft.sql.server
  17.  
复制代码
 
 

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4