Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
グローバルIT環境の不確実性が高まる中、事業継続性を確保する堅牢な高可用性(HA)戦略はこれまで以上に重要となっています。多くのSQL Serverデータベース管理者(DBA)や企業は、ダウンタイムをほぼゼロに抑えられる点、負荷分散、スケーラビリティなどのメリットからSQL Serverアクティブ・アクティブクラスターの構築を検討します。
本ガイドではアクティブ・アクティブクラスターとは何かを解説し、段階的な構築手順を紹介します。また、手軽にアクティブ・アクティブ環境を構築できる専用のデータベースレプリケーションソリューションもご案内します。
アクティブ・アクティブクラスターは、2台以上のノードが同時に業務処理を実行する高可用性アーキテクチャです。
一般的なアクティブ・アクティブ構成では、以下の機能を活用できます。
結論から言うと対応していません。SQL ServerのWSFC(Windowsサーバーフェイルオーバークラスター)は、書き込み処理向けの完全なアクティブ・アクティブクラスターをサポートしていません。
SQL Serverにおけるアクティブ・アクティブクラスターとは、WSFC上の複数クラスターノードに独立した複数のSQL Serverインスタンスを同時起動し、それぞれ別のデータベース群を担当する構成のことです。自動フェイルオーバー機能により高可用性を維持します。
SQL Serverのアクティブ・アクティブ構成は、同一データベースに対し複数ノードが同時に読み書きを行う(負荷分散型・分散型データベース)仕組みではありません。クラスター内の各サーバー(ノード)が少なくとも1つのSQLインスタンスを稼働させているため「アクティブ」と呼ぶだけです。
つまりSQL Serverが実現できるのは、複数ノードで同時書き込みが可能な真のアクティブ・アクティブではなく、「読み取りスケール型アクティブ・アクティブ」モデルという位置づけとなります。
SQL Server アクティブ・パッシブフェイルオーバークラスター:1台のノードのみ本番用SQL Serverインスタンスを稼働しクライアント業務を処理し、もう1台のノードはデータベース処理を一切実行しないアイドルな待機状態となります。
ハードウェア、ネットワーク、サービスの障害でプライマリノードが停止した場合、クラスターは自動的にSQLインスタンスをパッシブノードに切り替えます。この構成は管理が簡単で高可用性を確保できますが、通常稼働時は待機ノードが活用されず、CPUやメモリといった計算リソースが無駄になります。
SQL Server アクティブ・アクティブクラスター:複数の独立したSQL Serverインスタンスを複数クラスターノード上で同時起動し、各インスタンスがそれぞれ担当するデータベースとアプリケーションの業務を処理する構成を指します。
各ノードが自身の業務を常時処理するため、アクティブ・パッシブ構成と比較してサーバーハードウェアの利用効率が大幅に向上します。
実運用において、パフォーマンス、コスト、適用業務の面で差が存在します。以下に比較表を記載します。
|
|
SQL Server アクティブ・アクティブクラスター |
SQL Server アクティブ・パッシブクラスター |
|
ハードウェア利用率 |
利用率最大化:全ノードがアクティブ状態で独立したSQLインスタンスをホストし業務を処理します。アイドルな機器が存在せず、サーバーリソースを効率的に活用可能です。 |
利用率が低い:パッシブノードは常時アイドルな待機機器となります。フェイルオーバー発生時以外活用されないため、ハードウェアリソースが浪費されます。 |
|
フェイルオーバーによるパフォーマンス影響 |
影響は中程度:ノード障害発生時、障害が発生したSQLインスタンスが正常なノードに移行するため、一時的にCPU・メモリのリソース競合が発生します。障害ノードが復旧するまでこの状態が続きます。 |
影響が最小限:パッシブノードはアイドル状態で単一のSQLインスタンスの引き継ぎ専用に確保されています。事前に業務が稼働していないためリソース競合が発生せず、大半のケースでフェイルオーバーが高速に完了します。 |
|
ライセンス費用 |
費用が高額:全ノードでアクティブなインスタンスが稼働するため、すべてのSQL Serverインスタンスとノードにライセンスが必要です。クラスター機能をフル活用するにはEnterpriseエディションが必須となるケースが一般的です。 |
費用が安価:稼働するSQLインスタンスは1つのみで、パッシブノードは待機用途のためライセンス対象外となります。ライセンスはアクティブノードと単一インスタンスのみに適用されます。
|
|
導入の複雑さ |
複雑度が高い:WSFC上に複数のSQL Serverインスタンスを展開し、インスタンスの依存関係、フェイルオーバールール、業務分散を設定する必要があります。フェイルオーバー後のリソースボトルネックを回避するため、綿密な容量計画が不可欠です。
|
複雑度が低い:WSFC上に単一のSQLインスタンス、1台のアクティブノード、1台の待機ノードを配置するシンプルな構成です。基本的なフェイルオーバーとクォーラム設定のみを行うため、DBAによる管理が容易です。
|
|
適切な利用シナリオ |
CRM、レポート、ログ管理など独立した複数のデータベースを保有し、高可用性とハードウェア利用率の最大化を両立したい企業。アイドルリソースを確保できず、業務をインスタンスごとに分割可能な環境に適しています。
|
金融取引、基幹業務アプリなど単一の重要データベースを保有し、運用の簡易性とフェイルオーバーによる影響の最小化を最優先する企業。DBA人員が少ない組織、ハードウェアコストより管理の容易さを重視する環境に最適です。
|
どちらを選ぶべきか
SQL Serverアクティブ・アクティブクラスターとアクティブ・パッシブクラスターの選択は、企業の優先事項、業務特性、リソース制約によって決まります。判断基準を以下に整理します。
►SQL Server アクティブ・アクティブクラスターを選択する場合:複数の独立したデータベースを個別のSQLインスタンスに分割でき、ハードウェア利用率を最大化したい場合。
アイドルサーバーの確保が難しく、複数業務に対して高可用性を必要とする企業に適したアーキテクチャです。複雑な運用管理に対応できるDBA人員が確保でき、フェイルオーバー発生時に単一ノードで全インスタンスを一時的に処理可能な容量計画を実施できる環境に最適です。
►アクティブ・パッシブクラスターを選択する場合:単一の重要データベース(または密接に連携した少数のデータベース群)を運用し、構成の簡易性とフェイルオーバーの低影響を最優先する場合。
設定や保守作業が少ないため、DBAの専門知識が少ない企業に適しています。ハードウェアコストが大きな課題ではなく、リソース利用率より高速で影響の少ないフェイルオーバーを重視する場合にも適切です。
SQL Serverは複数ノードで同時書き込みを行う完全なアクティブ・アクティブに対応していませんが、リソース利用率を高めパフォーマンスを改善する「アクティブ・アクティブライク」なアーキテクチャを構築可能です。詳細な手順を記載します。
手順1. 全ノードにWSFC機能をインストール
各ノード(ノード1、ノード2)でサーバーマネージャーを開き、「役割と機能の追加」に進み「フェイルオーバークラスタリング」機能を選択します。ウィザードに従い、.NET Frameworkなど必要な依存コンポーネントを含めてインストールします。インストール完了後、各ノードを再起動して設定を反映させます。
手順2. クラスター検証テストを実行
クラスターを作成する前に、クラスター検証テストを実行し、全ノードがWSFCの要件を満たしているか確認します。いずれか一方のノードでフェイルオーバークラスターマネージャーを起動し、「構成の検証」を選択し、2台のノードを検証対象に追加します。「すべてのテストを実行」を選択し、ハードウェア、ソフトウェア、ネットワーク、ストレージ構成を検証します。検証レポートを確認し、重大なエラーや警告はすべて解消してから次の手順に進んでください。重大エラーが残存するとクラスターを作成できません。
手順3. WSFCクラスターを作成
フェイルオーバークラスターマネージャーで「クラスターの作成」を選択し、ウィザードに従います。一意のクラスター名を入力し、クラスター用の固定IPアドレスを割り当てます。2台のノードをクラスターに追加し、クォーラム構成を確認します。2ノードクラスターの場合は、スプリットブレイン現象を回避するため、ファイル共有、ディスク、クラウドのいずれかのクォーラムウィットネスを設定します。
ウィザードを完了させクラスターを作成後、フェイルオーバークラスターマネージャー上でクラスターの状態が「オンライン」になっていることを確認します。
手順4. 1台目のSQL Serverクラスターインスタンスをノード1にインストール
ノード1にSQL Serverインストールメディアを挿入し、セットアップウィザードを起動します。「新しいSQL Serverフェイルオーバークラスターのインストール」を選択し、画面の指示に従います。SQL Server Enterpriseエディションを選択し、必要な機能をチェックします。インスタンス固有の名前、仮想ネットワーク名(VNN)、固定IPアドレスを割り当てます。
インスタンスのシステムデータベースとユーザーデータベース用の共有ストレージを設定し、SQL ServerサービスとSQL Serverエージェントサービスに使用するドメインサービスアカウントを登録します。インストールを完了後、フェイルオーバークラスターマネージャー上でインスタンスがオンライン状態であることを確認します。
手順5. 2台目のSQL Serverクラスターインスタンスをノード2にインストール
ノード2で同様にインストール作業を実施します。既存のインスタンスにノードを追加する場合は「SQL Serverフェイルオーバークラスターにノードを追加」を選択しますが、アクティブ・アクティブクラスターを構築するには独立した2つ目のクラスターインスタンスを作成する必要があるため、このオプションは使用しません。
再度セットアップウィザードを起動し、「新しいSQL Serverフェイルオーバークラスターのインストール」を選択して2つ目のインスタンスを作成します。
一意のインスタンス名(例:SQLINSTANCE02)、1台目のインスタンスと重複しないVNNと固定IPアドレス(例:192.168.1.101)、別の共有ストレージを割り当て、1台目のインスタンスとのリソース競合を回避します。
SQLサービスには同一のドメインサービスアカウント(または同等の権限を持つ別のアカウント)を使用し、インストールを完了させます。
フェイルオーバークラスターマネージャー上で2つ目のインスタンスがオンライン状態であることを確認します。
手順6. 優先所有者とフェイルオーバー設定を構成
各SQLインスタンスに優先所有者ノードを設定し、業務が適切に分散されるよう調整します。フェイルオーバークラスターマネージャーで対象のSQL Serverインスタンスリソースを右クリックし「プロパティ」→「優先所有者」タブを開きます。
SQLINSTANCE01の優先所有者をノード1、SQLINSTANCE02の優先所有者をノード2に設定します。加えて、1時間あたりの最大フェイルオーバー回数などのフェイルオーバー閾値、即時・遅延・実行しないのいずれかのフェイルバックルールを設定します。
両方のインスタンスのインストール完了後、各インスタンスが設定した優先所有者ノード上で稼働し、インスタンス、ストレージ、ネットワークなどすべてのクラスターリソースがオンラインであることを確認します。各ノードのサービスコンソールまたはフェイルオーバークラスターマネージャーから確認可能です。
従来のSQL Serverフェイルオーバークラスターは共有ストレージに依存し、同一データセンター内での構成が必須となるため、拠点間・クラウド間のアクティブ・アクティブ環境を構築することが困難です。
ストレージに障害が発生するとクラスター全体が停止する単一点障害のリスクが存在します。また、クラスターのハートビート通信やストレージ接続に厳しいレイテンシ制限が定められているため、データセンターをまたぐ構成ではスプリットブレイン現象が発生しやすく実用的ではありません。
ここではログベースの最新データレプリケーションソリューションi2Streamをご紹介します。真のアクティブ・アクティブ機能を実現し、セマンティックレベルのCDC(変更データキャプチャ)によりノード間でデータをレプリケートし、オンプレミス、クラウド、ハイブリッド環境を問わず複数データベースインスタンスで双方向の並行読み書き処理を実現します。
i2Streamの主なメリット: