SQL Server 2022 : Failover Cluster Instance2023/12/05 |
SQL Server Failover Cluster Instance を構成します。
当例では、以下のような環境を前提に SQL Server Failover Cluster Instance を構成します。
+-------------------+ | [dlp.srv.world] | | ISCSI Target | +---------+---------+ 10.0.0.30| | +----------------------+ | +----------------------+ | [ node01.srv.world ] |10.0.0.51 | 10.0.0.52| [ node02.srv.world ] | | CLVM +----------+----------+ CLVM | | SQL Server | | | SQL Server | +----------------------+ | +----------------------+ VIP:10.0.0.50 |
[1] |
こちらを参考に、Failover Cluster Instance を構成する全ノードで、クラスターの基本構成を設定しておきます。 |
[2] |
こちらを参考に、Failover Cluster Instance を構成する全ノードで、フェンスデバイスを設定しておきます。 |
[3] |
こちらを参考に、Failover Cluster Instance を構成する全ノードで、SQL Server で使用する共有ストレージを設定しておきます。 |
[4] | Failover Cluster Instance を構成する全ノードで SQL Server を無効化します。 また SQL Server for HA パッケージを追加しておきます。 |
[root@node01 ~]#
systemctl disable --now mssql-server [root@node01 ~]# dnf -y install mssql-server-ha
[root@node01 ~]#
vi /etc/hosts # クラスターを構成するノードを追記 # [MSSQL_HA] ⇒ SQL サーバーをクラスターリソースとして設定する際に使用する名前 (任意の名称) 10.0.0.50 MSSQL_HA 10.0.0.51 node01 node01.srv.world 10.0.0.52 node02 node02.srv.world |
[5] | 共有ストレージがアクティブなノードでファイルシステムリソースを追加し、SQL Server のデータ領域を共有ストレージ上にコピーします。 |
[root@node01 ~]# pcs status Cluster name: ha_cluster Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: node01.srv.world (version 2.1.6-10.1.el9-6fdc9deea29) - partition with quorum * Last updated: Tue Dec 5 09:23:45 2023 on node01.srv.world * Last change: Tue Dec 5 09:19:34 2023 by root via cibadmin on node01.srv.world * 2 nodes configured * 2 resource instances configured Node List: * Online: [ node01.srv.world node02.srv.world ] Full List of Resources: * scsi-shooter (stonith:fence_scsi): Started node01.srv.world * Resource Group: ha_group: * lvm_ha (ocf:heartbeat:LVM-activate): Started node01.srv.world Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
[root@node01 ~]#
cp -pR /var/opt/mssql/data /var/opt/mssql/data.bk
# ファイルシステムリソース作成 [root@node01 ~]# pcs resource create mssql_fs ocf:heartbeat:Filesystem device=/dev/vg_ha/lv_ha directory=/var/opt/mssql/data fstype=ext4 group ha_group --future
pcs resource status * Resource Group: ha_group: * lvm_ha (ocf:heartbeat:LVM-activate): Started node01.srv.world * mssql_fs (ocf:heartbeat:Filesystem): Started node01.srv.world
[root@node01 ~]#
[root@node01 ~]# pcs constraint colocation add mssql_fs with lvm_ha
df -hT /var/opt/mssql/data Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_ha-lv_ha ext4 9.8G 24K 9.3G 1% /var/opt/mssql/data[root@node01 ~]# cp -pR /var/opt/mssql/data.bk/* /var/opt/mssql/data/ [root@node01 ~]# chown mssql:mssql /var/opt/mssql/data [root@node01 ~]# ll /var/opt/mssql/data total 74532 -rw-r-----. 1 mssql mssql 256 Dec 5 08:43 Entropy.bin drwx------. 2 root root 16384 Dec 5 09:06 lost+found -rw-r-----. 1 mssql mssql 4915200 Dec 5 09:21 master.mdf -rw-r-----. 1 mssql mssql 1835008 Dec 5 09:21 mastlog.ldf -rw-r-----. 1 mssql mssql 8388608 Dec 5 09:21 modellog.ldf -rw-r-----. 1 mssql mssql 8388608 Dec 5 09:21 model.mdf -rw-r-----. 1 mssql mssql 16056320 Dec 5 09:21 model_msdbdata.mdf -rw-r-----. 1 mssql mssql 1048576 Dec 5 09:21 model_msdblog.ldf -rw-r-----. 1 mssql mssql 1835008 Dec 5 09:21 model_replicatedmaster.ldf -rw-r-----. 1 mssql mssql 4915200 Dec 5 09:21 model_replicatedmaster.mdf -rw-r-----. 1 mssql mssql 16056320 Dec 5 09:21 msdbdata.mdf -rw-r-----. 1 mssql mssql 1048576 Dec 5 09:21 msdblog.ldf -rw-r-----. 1 mssql mssql 8388608 Dec 5 08:51 tempdb2.ndf -rw-r-----. 1 mssql mssql 8388608 Dec 5 08:51 tempdb3.ndf -rw-r-----. 1 mssql mssql 8388608 Dec 5 08:51 tempdb4.ndf -rw-r-----. 1 mssql mssql 8388608 Dec 5 08:51 tempdb5.ndf -rw-r-----. 1 mssql mssql 8388608 Dec 5 08:51 tempdb6.ndf -rw-r-----. 1 mssql mssql 8388608 Dec 5 08:51 tempdb7.ndf -rw-r-----. 1 mssql mssql 8388608 Dec 5 08:51 tempdb8.ndf -rw-r-----. 1 mssql mssql 8388608 Dec 5 08:51 tempdb.mdf -rw-r-----. 1 mssql mssql 8388608 Dec 5 08:56 templog.ldf |
[6] | 一旦 SQL Server を起動し、Pacemaker 用の SQL Server アカウントを追加しておきます。共有ストレージがマウントされているノード上で実施します。 |
[root@node01 ~]# systemctl start mssql-server [root@node01 ~]# sqlcmd -S localhost -U SA Password: # サーバー名をクラスターリソース名に変更 1> select @@servername 2> go -------------------------------------------------------------------------------------------------------------------------------- localhost (1 rows affected) 1> exec sp_dropserver 'localhost' 2> exec sp_addserver 'MSSQL_HA', 'local' 3> go 1> use master; 2> go # [hacluster] ユーザー作成 1> create login hacluster with PASSWORD= N'password'; 2> go # [sysadmin] ロール付与 1> alter server role [sysadmin] add member hacluster; 2> go 1> exit[root@node01 ~]# systemctl stop mssql-server
|
[7] | 全ノードで、追加した Pacemaker 用の SQL Server アカウントの情報を登録します。 |
[root@node01 ~]# echo 'hacluster' > /var/opt/mssql/secrets/passwd [root@node01 ~]# echo 'password' >> /var/opt/mssql/secrets/passwd [root@node01 ~]# chown root:root /var/opt/mssql/secrets/passwd [root@node01 ~]# chmod 600 /var/opt/mssql/secrets/passwd |
[8] | SQL Server と仮想 IP をクラスターリソースに追加します。 |
[root@node01 ~]# pcs resource create MSSQL_HA ocf:mssql:fci op start interval=60s group ha_group --future [root@node01 ~]# pcs resource create VIP ocf:heartbeat:IPaddr2 ip=10.0.0.50 cidr_netmask=24 op monitor interval=30s group ha_group --future [root@node01 ~]# pcs resource status * Resource Group: ha_group: * lvm_ha (ocf:heartbeat:LVM-activate): Started node01.srv.world * mssql_fs (ocf:heartbeat:Filesystem): Started node01.srv.world * MSSQL_HA (ocf:mssql:fci): Started node01.srv.world * VIP (ocf:heartbeat:IPaddr2): Started node01.srv.world[root@node01 ~]# pcs constraint colocation add MSSQL_HA with mssql_fs [root@node01 ~]# pcs constraint config Colocation Constraints: resource 'lvm_ha' with resource 'scsi-shooter' score=INFINITY resource 'mssql_fs' with resource 'lvm_ha' score=INFINITY resource 'MSSQL_HA' with resource 'mssql_fs' score=INFINITY[root@node01 ~]# pcs resource status * Resource Group: ha_group: * lvm_ha (ocf:heartbeat:LVM-activate): Started node01.srv.world * mssql_fs (ocf:heartbeat:Filesystem): Started node01.srv.world * MSSQL_HA (ocf:mssql:fci): Started node01.srv.world * VIP (ocf:heartbeat:IPaddr2): Started node01.srv.world |
[9] | 以上で設定完了です。アクティブノードを手動で停止させ、正常にフェイルオーバーするか確認しておきます。 |
[root@node01 ~]# pcs resource status * Resource Group: ha_group: * lvm_ha (ocf:heartbeat:LVM-activate): Started node01.srv.world * mssql_fs (ocf:heartbeat:Filesystem): Started node01.srv.world * MSSQL_HA (ocf:mssql:fci): Started node01.srv.world * VIP (ocf:heartbeat:IPaddr2): Started node01.srv.world[root@node01 ~]# sqlcmd -S 10.0.0.50 -U SA -Q 'select @@servername' Password: ------------------------------------- MSSQL_HA (1 rows affected) # アクティブノード 停止 [root@node01 ~]# pcs cluster stop node01.srv.world
# node02 側 [root@node02 ~]# pcs resource show * Resource Group: ha_group: * lvm_ha (ocf:heartbeat:LVM-activate): Started node02.srv.world * mssql_fs (ocf:heartbeat:Filesystem): Started node02.srv.world * MSSQL_HA (ocf:mssql:fci): Started node02.srv.world * VIP (ocf:heartbeat:IPaddr2): Started node02.srv.world[root@node02 ~]# sqlcmd -S 10.0.0.50 -U SA -Q 'select @@servername' Password: ---------------------------------- MSSQL_HA (1 rows affected) |
Sponsored Link |