只需简单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
#!/bin/bashyum install -y epel-releaseyum install -y ansibleyum install -y ansible-collection-microsoft-sql rhel-system-rolesyum config-manager --set-enabled highavailabilityyum install -y fence-agents-all resource-agents yum install -y bind-utilscat <<EOF >> /etc/hosts192.168.22.71 wwwmssql71192.168.22.73 wwwmssql73192.168.22.76 wwwmssql76192.168.22.99 yahaha_listenerEOF
2、在192.168.22.71节点上执行,创建清单文件
cat <<EOF >> hosts.ymlall: 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.76EOF
3、在192.168.22.71节点上执行,测试被控机器的连通性
ssh root@192.168.22.71ssh root@192.168.22.73ssh root@192.168.22.76ansible 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
本文版权归作者所有,未经作者同意不得转载。
页:
[1]