SQL Azure

SQL Azure Data Sync改めSQL Data Syncは、クラウドとオンプレミスのデータ同期にも対応しています。
データ同期をするために、オンプレミス環境にSQL Data Sync Agentをインストールする必要があります。
SQL Data Syncは、Agentを介してAzure SQL Detabaseに配置されたハブデータベースと
同期をとります。

Question

オンプレとWindows Azure SQL DatabaseをData Syncで同期する場合、
その通信ってどうなってるのでしょう?
知りたいことは、ポート何番を開ければいいのか?Proxyなどがあっても平気か?
その他、気にしなきゃいけないことは?

検証

その答えを探し求めるのに最適な環境が、Win2008R2+SQL2012 on Azureな環境です。
多少時間はかかりますが、数クリックと簡単な入力をして放置しておけば、
クラウド上に素敵な評価環境ができあがります。
// 懸念点は、Azure内なので通信がすかすかじゃないか・・・という事ですが(^^;
// きっと大丈夫!きっと。

そんなこんなでできたSQL2012 on Azureな環境のエンドポイントは、次のような定義がされています。
リモートデスクトップ以外は空いていないことが確認できます。

image

そこにSQL Data Sync Agentをインストールします。
インストール時に次のようなメッセージが表示されています。

image

This account must have network access to reach Microsoft SQL Data Sync Service through your network’s proxy.

ネットワークプロキシを通過してSQL Data Syncサービスにネットワーク越しにアクセスできるアカウントを設定してね!と書いてます。
つまり、ネットワークプロキシの認証を気にする必要があるってことですね。
残念ながら環境が無いので、未検証。

インストールが完了すると、Microsoft SQL Data Syncというサービスが起動します。サービスの実行ユーザは、インストール時に指定したユーザになっています。

image

インストール時に、FireWallの設定を変更するのかな?っと思い、FireWallのルールを確認してみました。
特にSQL Data Sync専用と思えるポートは空いてないですね。

image

TCPViewでポートの使用状況を確認してみましょう。
PIDから上の2つがSQL Data Syncサービスが使用しているものと分かります。

image

ネットワークキャプチャーを見てみると、SSL通信をしていることがわかります。

image

ためしに443通信をWindows Firewallでブロックしてみます。

image

ブロックすると、TCPViewでもNetwork MonitorでもSQL Data Syncの通信を確認できなくなりました。
その状態で、ポータルで確認すると・・・。

image

まとめ

  • Agentの実行ユーザは、ネットワークプロキシのユーザー認証を通過できるアカウントであること
  • ユーザーアカウントなどを使用してしまうと
    定期パスワード変更などを実施すると、SQL Data Syncの設定も変更しないと同期できなくなる
  • 通信として、サーバーから外への443通信は必須
    それ以外は・・・・うーん、今のところ気づかない。
  • Preview版で、未だマイクロソフトはサポートの提供を開始していないので、
    本番運用での利用はお勧めできない。何かあった時に自力解決することが必要。
    SLAも提供されて・・・ないはずなので。
  • データ同期の為に複数のテーブルが追加される。
    また差分をトレースするために同期対象テーブルにトリガーが生成されたりする。
    なので、設計書な世界で生きている人は大変かも?
    本番DBのスキーマが微妙に変わるので覚悟して臨むと良い。
    image

SQL Azure

Windows Azure に関する正式なアナウンスを公開する場として知られる、
Windows Azure Team Blogにて
Annoucing New Windows Azure Services to Deliver "Hybrid Cloud"」が投稿されました。

Amazonちっくになるね!とか突っ込みそうになるけど、
そのあたりは、明日の朝にはpnop抱かれたい役の方がわかりやすくBlogを書いてくれると思うので割愛。

 

Azure Team Blogに、
今回のWindows Azureの更新内容をまとめた Fact Sheet が公開されている。

Fact Sheetで、SQL Azure(と言えるのも後少しだけど…)に関連する内容があったので、
ピックアップしておく。

 

Windows Azure SQL Reporting

これまでSQL Azure ReportingとしてPreview公開されてきたサービスが、
Windows Azure SQL Reporting とブランド名を変えて、generally available された。

セキュアで、柔軟性があり、コスト効率のいいクラウドベースのサービス。
システム管理や追加のソフトウェア、ハードウェアが不要で、組織内外でレポート公開を可能にする
レポーティングサービスです。

 

と言うわけで、今のところSQL Azureに関する発表は、これぐらい。
後は、SQL Azure Data Syncのアップグレードが
予告されてることぐらい(SQL Data Syncのクライアントエージェントのアップグレード通知)。

SQL Azure

SQL Data Sync (SQL Azure Data Sync) の新しいサービスアップデート(Service Update 5 / SU5)が、6月6日(PST)から6月7日の間で実施されます。
新しいクライアントエージェント(バージョン4.0.46.0)のダウンロード提供もされます。

今まで提供されてきたすべてのクライアントエージェントは、アップグレードする必要があります。クライアントエージェントのアップグレード方法について説明します。

補足

クライアントエージェントのデフォルトパスが、次のパスに変更になります。

32ビット
C:\Program Files\Microsoft SQL Data Sync

64ビット
C:\Program Files (x86)\Microsoft SQL Data Sync

アップグレード方法

ここ」で説明している手順に従って、現在インストールされているエージェントのバージョンを確認してください。

  1. もしクライアントエージェントを起動していない場合は、クライアントエージェントをインストールしている場所に移動します。

    32ビット
    C:\Program Files\Microsoft SQL Azure Data Sync

    64ビット
    C:\Program Files (x86)\Microsoft SQL Azure Data Sync

  2. インストールディレクトリのbin配下にある「SqlAzureDataSyncAgent」を起動します。
  3. クライアントエージェントウィンドウ上で、Upgrade Agent をクリックします。

    アップグレードウィザードで、エージェントのアップグレードが進行します。アップグレードが完了すると、インストールパスが変わります。

  4. アップグレード処理が完了すると、クライアントエージェントウィンドウが閉じます。

    補足:旧エージェントのインストールパスは削除してはいけません

  5. Windows Explorerで、ステップ1で示したインストールパスを開きます。
  6. dataディレクトリに移動し、「AgentConfigData.xml」ファイルなどを確認します。

    32ビット
    C:\Program Files\Microsoft SQL Azure Data Sync\data

    64ビット
    C:\Program Files (x86)\Microsoft SQL Azure Data Sync\data

  7. AgentConfigData.xmlファイルをコピーします。
  8. アップグレードしたエージェントの新しいディレクトリに移動します。
  9. 手順7でコピーしたAgentCOnfigData.xmlファイルをdataディレクトリに張り付けます。

    32ビット
    C:\Program Files\Microsoft SQL Data Sync\data

    64ビット
    C:\Program Files (x86)\Microsoft SQL Data Sync\data

  10. システム上で、Microsoft SQL Data Sync Windows Serviceを再起動します。
  11. Microsoft SQL Data Sync Agent Previewを実行します。
    1. 補足

      さりげなく記述されていますが、

      「SQL Azure Data Sync」は、「SQL Data Sync」と記載されていますね。

      さて、これがどういう意味かは、今週末のお楽しみってことで。

      参照元情報

      Client Agent Upgrade Notification

    SQL Azure

    image

    SEの雑記にて紹介されている「SQL Server 2012 の SSMS を使用して SQL Azure にデータベースを配置」は、データ層アプリケーション(DAC Framework)をSQL Server Management Studioの裏側で使用して実現しています。

    SQL Server Management Studioで使用する以外にも、自分でDAC Frameworkを使用したコードを書いてバックアップ、デプロイをすることもできます。

    SQL Server 2008 R2、SQL Server 2012それぞれでライブラリが提供されていますが、SQL Server 2008 R2とSQL Server 2012で名前空間が変わっています。

    SQL Server 2008 R2では、「Microsoft.SqlServer.Management.Dac」

    SQL Server 2012では、「Microsoft.SqlServer.Dac」

    必要なライブラリ

    Microsoft SQL Server 2012 Feature Packから「Microsoft SQL Server 2012 Data-Tier Application Framework」をダウンロードしてインストールします。

    インストールをすると、「C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin」配下に、「Microsoft.SqlServer.Dac.dll」が配置されています。

    最少コード

    using Microsoft.SqlServer.Dac;
    static void Deploy(string conx, string databaseName, string path)
    {
        DacServices dacServices = new DacServices(conx);
        DacPackage dacpac = DacPackage.Load(path);
        dacServices.Deploy(dacpac, databaseName);
    }

    pathに「.dacpac」のファイルパス

    databasenameに、「SQL Azureに新たに作成したいデータベース名」

    conxに、接続文字列

    を渡してあげれば、SQL Azureデータベースのデプロイの完成。

     

    リファレンス

    SQL Azure

    株式会社gloops

    株式会社gloopsは、モバゲ―、yahoo!モバゲ―、mixi、ハンゲームなどのプラットフォームに、登録ユーザ数100万人を超えるソーシャルゲームを複数展開しています。
    ソーシャルゲーム業界の中では数少ない、マイクロソフト技術を根幹にゲームを展開しています。Visual Studio 2010を使用して、ASP.NET(C#)でゲームの大部分を開発しています。開発したゲームは、Windows Server 2008 R2、IIS 7.5、.NET Framework 4で構成されたアプリケーションサーバーにホストし、データの格納先としてSQL Server 2008 R2を採用しています。
    さらに、マイクロソフト技術を根幹にしながら、インフラ周りでは、Nginx、Memchached、Redis、Varnish cacheなどのOSS技術を活用し、月間100億PV、(1コンテンツあたり)同時接続数7万人を裁いています。SQL Server周りの指標としては、秒間バッチ要求数は平常時で最低100K/秒、イベント開催時には最低1M/秒、イベント終了間際の10分間は3M/秒に達します。最大4.5Mまで裁いた実績があります。この処理を裁くために、SQL ServerにはFusion-ioを2枚搭載しています

    gloopsゲームのアーキテクチャに関わる話は、各種メディアに取り上げられ、セミナーなどの講演でも話されているので、検索サイトなどで検索いただくと、より詳細を知ることができると思います。

    ソーシャルゲームをWindows Azureに移行できるか?

    gloopsで提供しているゲームは、オンプレミス環境で1コンテツあたり70台前後のサーバーで稼働しています。それをWindows Azure上で裁くことができるかを検証しました。 当然、データストアにはSQL Azure Federationを採用し、ある意味Windows AzureとSQL Azureの性能限界を試すつもりでした。

    気になる検証結果は、2012年4月24日~25日に開催されるマイクロソフトの有償イベントWindows Developer Daysのブレイクアウトセッションで発表させていただきます。

    開発者の皆様へ ~ Windows 8 のアプリケーション開発を始めませんか。 | Windows Developer Days

    マイクロソフト技術を根幹としたソーシャルゲームのアーキテクチャ、SQL Azure Federationによる大規模リクエスト処理について興味のある方は、ぜひ登録しセッションに参加してください。

    When ?

    まだ、サイト上では仮題になっていますが・・・

    4月24日(火) 15:00~15:45

    の枠で登壇いたします。

    ちなみに、別の枠でLINQの神様のいえ先生も、登壇しますよ~♪