Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

下面一步一步介绍一下如何在Red Hat Enterprise Linux系统上为SQL Server配置共享磁盘集群(Shared Disk Cluster)及其相关使用(仅供测试学习之用,基础篇)

一.      创建共享磁盘和 Cluster

微软官方配置文档:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-shared-disk-cluster-red-hat-7-configure

Linux Cluster结构图如下:

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

具体配置步骤如下:

        1.            安装及配置SQL Server

a)      先安装两个SQL Server作为Cluster的两个节点,请参考博文“ Red Hat Enterprise Linux上安装部署SQL Server 2017 ”(如果需要更多节点则安装更多);

b)      在Secondary端停掉并禁用SQL Server服务:

sudo systemctl stop mssql-server sudo systemctl disable mssql-server

c)      备份同步Server Master Key(由于Linux中SQL Server是以本地用户mssql运行的,因此不同的节点无法识别别的节点的认证,所以需要备份同步加密key从Primary端到其它节点上以便于能够成功解密Server Master Key):

Secondary端备份原来的machine-key:

sudo su cd /var/opt/mssql/secrets mv machine-key machine-key.original.bak

Primary端把machine-key复制到Secondary端:

sudo su cd /var/opt/mssql/secrets/ scp machine-key root@**<Secondary Node IP Address>**:/var/opt/mssql/secrets/

Secondary端检查是否成功备份过来并且添加相关权限:

ls

 

chown mssql:mssql machine-key

d)      在Primary端为Pacemaker程序创建一个SQL登录用户,并给足足够的权限运行sp_server_diagnostics。

先开启SQL Server服务:

sudo systemctl start mssql-server

连接到SQL Server上:

sqlcmd -S localhost -U sa -P **<Your Password>**

执行以下SQL语句创建用户并赋予权限:

USE [master] CREATE LOGIN [<loginName>] with PASSWORD= N'<loginPassword>' GRANT VIEW SERVER STATE TO <loginName> GO

退出sqlcmd:

exit

e)      在Primary端停掉并禁用SQL Server服务:

sudo systemctl stop mssql-server sudo systemctl disable mssql-server

f)        配置每一个节点的hosts文件,保证互相能够识别。

sudo vi /etc/hosts

下图是配置完成后的例子:

      2.            配置共享磁盘以及转移数据库文件

有很多种提供共享磁盘的解决方案。下面简单介绍配置NFS的共享磁盘。推荐使用Kerberos去配置NFS以提高安全性:https://www.certdepot.net/rhel7-use-kerberos-control-access-nfs-network-shares/。这里仅介绍最简单的方式用于简单测试和学习。

用NFS配置共享磁盘

找另一个RHEL系统机器作为NFS Server,执行如下命令(由于仅是测试研究,这里选用Cluster的一个节点作为NFS Server也可):

a)      安装NFS软件包:

sudo yum -y install nfs-utils

b)      启用并开启rpcbind服务:

sudo systemctl enable rpcbind && systemctl start rpcbind

c)      启用并开启nfs-server服务:

sudo systemctl enable nfs-server && systemctl start nfs-server

d)      编辑/etc/exports文件去设置想要共享的存储路径,注意每一个共享是一行:

vi /etc/exports

设置完的例子如下:

Red Hat Enterprise Linux上为SQL Server配置共享磁盘集群

e)      导出共享并确定是否成功:

sudo exportfs -rav sudo showmount -e

 

f)        在SELinux中添加异常设置:

sudo setsebool -P nfs_export_all_rw 1

g)      防火墙中允许相关服务通信:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ee347e3e7b2c2f829ddbf0cae77b2c49.html