エンタープライズ向けデータベースとして広く普及しているSQL Serverには、高可用性を確保するために「SQL Server AlwaysOn」という機能が用意されています。これには「AlwaysOn FCI」と「AlwaysOn 可用性グループ」の2種類がありますが、SQL Server Enterprise Editionしか対応していなかったり、共有ストレージが必要であったりと悩ましい仕様となっています。これらの問題を一挙に解決するのが「SANLess Clusters」で、Microsoft Azure環境にも適用できます。ここではこれらの詳細と Microsoft Azure環境におけるSQL Server 2014のパフォーマンス比較の結果をご紹介します。
SQL Server AlwaysOnのウィークポイント
Windows Serverとの親和性が高く、管理のしやすさや使い勝手の良さから、本格的なエンタープライズ向けデータベースとして広く普及しているSQL Server。でも、ミッションクリティカルな業務で使用するには、高可用性を確保する必要があります。そのためのソリューションとして、SQL Server 2012以降では「SQL Server AlwaysOn」という機能が提供されています。
「SQL Server AlwaysOn」では、HAクラスタリングを構成する2つの方法が用意されています。ひとつは、共有ストレージ上にデータベースを配置する「AlwaysOn Failover Cluster Instance(AlwaysOn FCI)」。もうひとつは、共有ストレージを必要とせずに本番系(アクティブ)と待機系(スタンバイ)のサーバー間でデータベースのミラーリングを行う「AlwaysOn Availability Group(AlwaysOn 可用性グループ)」です。
ただし、AlwaysOn 可用性グループがサポートしているのがSQL ServerのEnterprise Editionのみであること 、またAlwaysOn FCIはSQL ServerのStandard Editionでも使用できますが、2ノードに限られることは注意すべき点です。このような最小構成のHAクラスタに高価な共有ストレージを導入することは投資効率が悪く、なにより共有ストレージ自体がSPOF(Single Point of Failure:単一障害点)となってしまう恐れがあります。
そこで、ライセンスコストの廉価なSQL Server Standard Editionを使って、AlwaysOn 可用性グループと同等のHAクラスタ構成を実現できるのが、サイオステクノロジーの「DataKeeper for Windows Cluster Edition (DKCE)」を活用した当社ソリューション「SANLess Clusters」です。共有ストレージを必要としないため、共有ストレージ自体がSPOFとなってしまうリスクを回避でき、SQL Server Standard Editionを使用できるのでコストを抑えることができます。
「いいとこ取り」のSANLess Clusters
一方で、最近はクラウド利用が増え、Microsoft Azure上にデータベースを構築するケースも増えてきました。しかし、Microsoft Azure環境では共有ストレージを持てない仕様となっているため、共有ストレージが必須となるAlwaysOn FCIを適用することは困難です。AlwaysOn 可用性グループであればMicrosoft Azure環境に適用できますが、前述のようにSQL Server Enterprise Editionしか使用できません。
SANLess Clustersを使うことで、こうした問題も解決できます。AlwaysOn FCIとDataKeeper for Windows Cluster EditionによるSANLess Clustersなら、共有ストレージを必要としないためMicrosoft Azure環境に適用でき、しかもSQL Server Standard Editionで構築できます。
Microsoft Azure環境向けに、あまりにも「いいとこ取り」であるため、特にパフォーマスに関して不安があるという方も多いでしょう。そこで、サイオステクノロジーの技術部が検証を行いましたので、その結果をお知らせします。
パターン1: AlwaysOn FCI & SANLess Clusters
パターン2: AlwaysOn AG
ベンチマークソフト:HammerDB
Azure環境(AG、FCI共通)
SQLサーバー用インスタンス: Standard DS3(4コア、14GBメモリ)
クライアント、DC用インスタンス: Standard DS1(1コア、3.5GBメモリ)
データベース用ディスク: Premium Storage(1TB)
OS(サーバー、クライアント): Windows2012 R2
SQL Server: SQL Server 2014 SP2
※
TPM(Transactions Per Minute):1分間あたりの検索更新両方のトランザクション数
NOPM:Number of Orders Per Minute:1分間あたりの更新処理のトランザクション数
検証の結果、パターン1(AlwaysOn FCI & SANLess Clusters)の構成はパターン2 (AlwaysOn AG)の構成に比べて約2.5倍のパフォーマンスを計測しました。オンプレミスにおけるSANLess Clusters構成の優位性が、Microsoft Azure上でも有効であることが立証された結果となっています。Microsoft Azure上でも高可用性を実現するなら、最適な選択といえるでしょう。