SQL Server を「Microsoft Azure」上に移行する際の課題と方法。そしてAzure上でのデータベースの可用性をさらに高めるLifeKeeper/DataKeeper

data-platform-of-microsft
Pocket

 日本マイクロソフトが提供するクラウドサービス「Microsoft Azure」は、上手に活用することで企業のビジネスを大きく成長させられます。また、データベースをクラウド上に移行したいというニーズも多く、日本マイクロソフトではそのニーズに応えるために「SQL Server on Azure VM」を提供しています。

 しかし、SQL ServerをAzure上に移行する際や、移行後に物理環境と同等の可用性を担保するには、いくつかの課題もあります。今回は、サイオステクノロジーと日本マイクロソフトが3月22日に開催したセミナーの内容から、課題と解決策を探ります。

 日本マイクロソフトのテクニカルエバンジェリストである山本美穂氏は、「SQL Serverをクラウドに移行するための課題と方法とは?」と題するセッションを行いました。

マイクロソフトのクラウドプラットフォームとは?

ms-seminar マイクロソフトがクラウドサービスの提供を開始して、今年で7年になります。現在では、インフラを提供するIaaSとして「Microsoft Azure 仮想マシン」、オンプレミスのプライベートクラウドのインフラストラクチャとしての「Windows Server Hyper-V」、プラットフォームを提供するPaaSとして「Microsoft Azure App Service」、ソフトウェアを提供するSaaSとして「Office 365」「Dynamics 365」などをクラウドで展開しています。

 これらのクラウドサービスを支えるデータセンターは、2017年3月現在、世界で32の地域にあり、さらに6つの地域に新設される予定です。また、Azureは以前「Windows Azure」という名称だったことから、「Windowsしか動作していないと思われることもまだ多い」と山本氏は言います。しかし、Azureはオープン化に注力しており、Linuxをはじめとする多くのオープンソースソフトウェアに対応しております。

 また、マイクロソフトのデータセンターの特徴として、境界、建物、コンピュータルームに高いセキュリティ対策が施されているほか、注力しているポイントとして「電源」「ネットワーク回線」「均一化されたサーバ」を挙げました。特にサーバはOpen Compute Projectに参加しており、サーバの内部設計を全て公開していることも特徴的です。

「SQL Server on Azure VM」と「SQL Database」の違い

 マイクロソフトはデータベース向けのデータプラットフォームとして、仮想化されていない物理マシン(ベアメタル)上の「SQL Server」、オンプレミス仮想マシン上の「SQL Server on Private Cloud」、IaaSであるAzure仮想マシン上の「SQL Server on Azure VM」、そしてPaaSである「SQL Database」および「SQL Data Warehouse」を提供しています。

data-platform-of-microsft

 では、IaaSである「SQL Server on Azure VM」と、PaaSである「SQL Database」には、どのような違いがあるのでしょう。基本的にPaaSでは、OS、ミドルウェア、ランタイム領域までをベンダー側で管理するため、その大きな違いは自由度にあり、どちらを選ぶかはユースケースによると山本氏は言います。

differences-of-cloud-service

「SQL Server on Azure VM」では、OSやSQL Serverのバージョンを選択することができ、パッチの適用や可用性環境、バックアップなどの管理は利用者側が実施します。これはバージョンアップも同様です。また、SQL Serverのすべての機能を利用でき、仮想マシン単位でインスタンスのサイズを変更できます。さらに、1TBを超えるデータベースを利用すること、仮想ネットワークへの参加も可能です。SLAは仮想マシンに準拠します。

 これに対して、「SQL Database」では、OSやSQL Serverのバージョンの選択をすることができず、パッチの適用や可用性環境、バックアップなどの管理は自動で行われます。また、SQL Serverの機能の全てが利用できるわけではなく、データベースエンジンの機能のみが利用可能です。パフォーマンスレベルの変更も、データベース単位で変更します。さらに、1データベース辺り最大で1TB(P11を利用した場合)までという制限があり、仮想ネットワークへの参加もできません。SLAはSQL Databaseに準拠します。
このほかにも、機能面でさまざまな差異があります。

「SQL Server」を「Azure」に移行する際の課題

 では、移行の際にはどのような課題があるのでしょうか。山本氏はまず「ライセンス」と「構築」を挙げました。「SQL Server」のライセンスは、2つの考え方があります。まず、Azure上で使用する場合、すでに所有しているライセンスをそのまま持ち込む方法があります。これはBYOL(Bring Your Own License)と呼ばれます。この場合は、Azure に持ち込む対象の「SQL Server」にソフトウェアアシュアランス(SA)がついている必要があります。

 もうひとつは、ライセンス付与された「SQL Serverイメージ」を使う方法です。先ほどのBYOLに対してPAYG(Pay As You Go)と呼ばれ、ワークロードとともに課金されるタイプになります。ワークロードの課金の中にSQL Server自身のライセンスが含まれているというモデルです。

 ただ、どちらの場合でもAzureのテンプレートからデプロイした場合には、OSとSQL Serverともに英語版のイメージしかありません。また、SQL Serverの全機能がインストールされているので、不要なサービスは停止を検討する必要があります。

 構築においては、Azureのポータルから「SQL Serverイメージ」をデプロイできるのですが、選択肢が限られる部分があるので、注意が必要です。最初にライセンスをBYOLかPAYGから選び、続いて4つの設定を行います。具体的には、「ディスクの種類の選択」「ストレージの構成」「SQL Serverの基本設定」「SQL Server IaaS Agent 拡張機能」です。拡張機能では、自動修正、自動バックアップ、Azure Key Vault の統合、Rの有効化を設定できます。

 実際にイメージから展開できる「SQL Server」ですが、選択肢が限られているので注意が必要です。現時点で、「SQL Server」のバージョンは「2008 R2 SP3以降」で、「2012 SP3」、「2014 SP2」、「2016 SP1」のみとなります。また、英語版しかない問題については、日本マイクロソフトが日本語化を全自動で行うスクリプトを提供しています。

「SQL Server」を「Azure」へ移行した後の設定

 移行が完了したら、やはりパフォーマンスを追求する必要があります。そこで山本氏は、移行後の設定例を紹介しました。
これらの設定にはデプロイの際に行えない項目もあるので、運用開始時に設定する必要があります。設定の変更箇所は、主に以下の8つの項目があります。

1. 仮想マシンのサイズ
2. ストレージ(地理的冗長を無効にするなど)
3. ディスク(少なくともP30のディスクを2つ設定)
4. ディスクキャッシュ(ログファイルのディスクではキャッシュを有効にしない)
5. NTFSアロケーションサイズ(64KBでフォーマットする)
6. ディスクストライピングサイズ(New-VirtualDisk のストライプサイズ(Interleave)は、OLTP:64KB / DWH:256KBの設定を推奨)
7. 初期ファイルの割り当ての短縮(サービスアカウントに「ボリュームの保守タスクを実行」の権限を付与)
8. ページングアクティビティ抑制(サービスアカウントに「メモリ内のページのロック」の権限を付与)

 運用の開始後について、山本氏はAzureストレージを利用したバックアップに限定して説明を行いました。
「SQL Server 2012 SP1 CU2」以降では、データディスクではなくAzureストレージに直接バックアップを取得することが標準機能として搭載されました。これにより、ページBLOBでの取得が可能です。なお、「SQL Server 2016」では、ブロックBLOBやスナップショットでの取得が可能になっています。
 (BLOB: Binary Large Object データベース管理システム(DBMS)において、バイナリデータを格納する場合のデータ型。画像や音声、その他のマルチメディアオブジェクトがBLOBとして格納される。)

 ただし、ページBLOBで取得する場合は単一ファイルでのバックアップのみで、複数のバックアップファイルにストライプすることはできません。また、バックアップファイルの最大サイズは1TBに限定されます。なお、「SQL Server 2016」のブロックBLOBでは、複数バックアップファイルへのストライプが可能で、それぞれのファイルの最大サイズは200GBが上限となり、最大12.8TBまでストライプできます。

 また、「SQL Server 2016」のスナップショットを利用したバックアップでは、データベースの“すべてのファイル”をAzureストレージに直接配置している場合のみという条件になるので、こちらも注意が必要です。

「Azure」へ移行した「SQL Server」の可用性を高めるには

 セミナーの最後に、サイオステクノロジーのプリセールス担当の西下容史による「Azure上でSQL Serverを含めたインターネット分離ソリューションの可用性を高める方法とは?」と題したセッションが行われ、次のように説明しました。

IaaSではOS以上の可用性は利用者の責任範囲であり、SLAが99%以上であっても、計画停止はSLAに反映されていないクラウドもあります。一方で、最近の障害原因の傾向として、ハードウェアに起因するものよりアプリケーションに起因する障害が増えています。

sla-of-public-cloud

 また、IaaSでは仮想基盤のHA機能により高可用性を実現していますが、基盤側の障害検知は物理・仮想基盤の状態とネットワーク疎通で確認しますので、アプリケーションやミドルウェアの障害は検知できません。さらに、データベースシステムでは、データの整合性を確保する必要もあります。しかし、HAクラスターによる可用性とIaaSの標準機能による可用性を相互補完することで、オンプレミス環境と同様にシステム全体の高可用性を実現できます。 

ha-system-on-public-cloud

 しかし、その実現には課題もあり、オンプレミスでは共有ストレージによるクラスター構成を実現できますが、IaaSでは共有ディスクを使用することができないため、クラスター構成の実現ができません。そこで、共有ディスク以外の方法として「DataKeeper」を紹介。「DataKeeper」は、「LifeKeeper」またはWSFC (Windows Server Failover Clustering)と連携することで、HAクラスターの共有ストレージ代替として使用できるソリューションです。これにより、リアルタイムにブロックレベルで差分データを同期し、効果的な圧縮アルゴリズムによって帯域を有効活用できます。

realizing-ha-cluster-on-public-clouds

 

Ms.yamamoto  山本 美穂 氏

  日本マイクロソフト株式会社
  デベロッパーエバンジェリズム統括本部
  テクニカルエバンジェリズム本部
  テクニカルエバンジェリスト

 


日本マイクロソフト株式会社について
マイクロソフトは、モバイル ファースト&クラウド ファーストの世界におけるプラットフォームとプロダクティビティのリーディング カンパニーで、「Empower every person and every organization on the planet to achieve more.(地球上のすべての個人とすべての組織が、より多くのことを達成できるようにする)」を企業ミッションとしています。日本マイクロソフトは、この企業ミッションに基づき、「革新的で、安心でき、喜んで使っていただけるクラウドとデバイスを提供する会社」を目指します。
企業サイト: https://www.microsoft.com/ja-jp/

Microsoft Azure について
Microsoft Azure は、分析、コンピューティング、データベース、モバイル、ネットワーク、ストレージ、Web などを統合した、現在急成長を遂げているクラウド サービスのコレクションです。より速く動き、より多くを達成し、コストを削減します。
公式サイト: https://azure.microsoft.com/ja-jp/

共有ストレージ不要!
"SANLess Clusters"についてもっと詳しく

sanless-clusters banner


"SANLess Clusters"ソリューションを見る

SNSでもご購読できます。