LAMP開発者のためのWindows Azure講座

第5回 Azure上でのMySQLの起動[その2]

この記事を読むのに必要な時間:およそ 5 分

パッケージの作成とAzureへのデプロイ

では,パッケージを作成して,Azureへデプロイしてみましょう。パッケージは,ServiceConfiguration.cscfgとServiceDefinition.csdefがあるプロジェクト名と同じフォルダ(ここではSample2)に作られます。メニューから「Create Windows Azure Service Package for Windows Azure PHP Project」を実行して,しばらく待っているとフォルダが自動的に開き,Sample2.cspkgが作成されていることが確認できます。

ブラウザでWindows Azureの管理ポータルを開き,ホステッドサービスに新規運用環境としてデプロイします。

図16 デプロイの画面

図16 デプロイの画面

ここでは,ホステッドサービス名としてphpmyadminmysql01としてデプロイしました。下図のようにWebRoleとWokerRoleが「準備完了」になれば,アクセス可能です。アクセスする際のURLは,http://phpmyadminmysql01.cloudapp.net となります。

図17 WebRoleにphpMyAdmin,WorkerRoleにMySQLをデプロイした画面

図17 WebRoleにphpMyAdmin,WorkerRoleにMySQLをデプロイした画面

アクセスすると,index.phpの結果が表示されています。ここでは,WorkerRoleのIPが「10.62.96.167」となりました。

図18 index.phpの表示結果

図18 index.phpの表示結果

次に,URLにphpmyadminの文字列を追加して,phpMyAdminのログイン画面を表示させます。うまく表示されたら,先ほどのIPアドレス「10.62.96.167」と,デプロイ前に作成したユーザー名「sampledbuser⁠⁠,パスワードを使ってログインします。

図19 Azureで動作しているphpMyAdminのログイン画面

図19 Azureで動作しているphpMyAdminのログイン画面

うまくログインできると,下の画面が表示されるはずです。

図20 AzureのWorkerRoleで動作しているMySQLをphpMyAdminから操作する

図20 AzureのWorkerRoleで動作しているMySQLをphpMyAdminから操作する

これで,AzureのWorkerRoleでMySQLが動作していることが確認できました。

WorkerRoleでMySQLを動作させる際の課題

もっとも,この状態で動作はするものの,MySQL内のデータはインスタンスの再起動にともなって消えてしまいます。また,PHPプログラムからMySQLにアクセスするためのIPアドレスも固定というわけではありません。さらに,インスタンスを複数立ち上げてスケールアウトを図ろうとする場合,どのようにデータを同期させるかという問題もあります。そのため,MySQLに継続的にアクセスするためのプログラム側の処理やデータを永続化する工夫が必要になります。

実は,WorkerRoleでMySQLを動作させる方法は,2009年のPDCで発表されており,そのためのアクセラレータ(容易に導入するためのパッケージのようなもの)「Windows Azure MySQL PHP Solution Accelerator」として公開されています。

このアクセラレータでは,複数のMySQLを立ち上げ,マスター/スレーブ構成を設定できるなど,WorkerRoleのMySQLが持つ課題の解決を図っています。とはいえ,4年近く前に公表されたものであり,その後の周辺アプリケーションのバージョンアップなどにより,すんなり動作させることがほとんどできない状態です。

また,Web PIのAzure版とも言うべき,Azure上でアプリケーションを簡単に導入できるツール「Windows Azure Companion」もマイクロソフトから公表されていたのですが「試験的ツールだった」として,2011年7月に配布が終了してしまいました。

今回利用しているWindows Azure PDTもマイクロソフトのサポートを得ながら開発されているものですが,1年近く更新が止まっており,最新SDKへの対応やMySQLのサポートについての改善は進んでいません。もう少し簡単にMySQLを動作できるようになればいいのですが,現時点では,今回紹介した方法が最も少ない手順だと思います。

次回は,WokerRoleの課題などを踏まえつつ,MySQLのデータをストレージに保存したり,Windows Azureドライブを利用してMySQLを動作させたりする方法を検討してみたいと思います。

著者プロフィール

齋藤公二(さいとうこうじ)

インサイト合同会社

『月刊Computerwold』『CIO Magazine』(IDGジャパン)の記者,編集者などを経て,2011年11月インサイト合同会社設立。エンタープライズITを中心とした記事の執筆,編集のほか,OSSを利用した企業Webサイト,サービスサイトの制作を担当する。