はじめに
Azureで仮想マシンを作る際に自動作成できるから、クラウドサービスってパブリックIPの割当と負荷分散用のインターフェイスかと思っていたけど違うらしい。
ということでクラウドサービスに関する簡単なメモ。
Azureのクラウドサービスについて
Azureで仮想マシンを扱う場合、仮想マシンを直接作るのではなく「クラウドサービス」から仮想マシンを自動作成することができる。
サービス全体のサーバ構成設定と、個々のサーバのプロビジョニングをまとめたものという印象。
メンテでのサービスの停止が許されない場合やアクセス数が多く自動スケールを柔軟に行いたい場合に有効と思う。
利点
- 自動スケールが容易
- サーバ構成のコード化による保守性向上
- 運用、ステージング環境が前提になっていてスワップも可能なので堅実な運用が可能
欠点
- サーバ構成をコードで作成する必要があるので初期セットアップに手間がかかる
- アプリケーションのデプロイでも全体のデプロイが必要
- コマンド(PowerShell)での操作が多い
懸念点
- サーバに対して付与できる役割がWebRoleとWorkerRoleしかない
- DB等の永続的な保管が必要なサーバを立てることは考慮されていないらしい
- 「SQLデータベース」や「ストレージ」を使えば良い
- DB等の永続的な保管が必要なサーバを立てることは考慮されていないらしい
運用の流れ
運用する場合には以下のような作業が必要だと思う。
初期セットアップ
- クラウドサービスプロジェクトを作成
- サーバの構成を記述
- ロールごとにセットアップスクリプトを記述
- 動かしたいアプリケーションを配置
- クラウドサービスのデプロイ用の設定取り込み(作業端末ごと)
- パッケージの作成
- クラウドサービスに作成したサービスをステージングにデプロイ
- 動作確認
- 運用とステージングを入れ替え
サーバ構成・アプリケーションの更新
- クラウドサービスプロジェクトの編集
- アプリケーションの変更
- サーバの構成を変更
- クラウドサービスのデプロイ用の設定取り込み(未実行の場合)
- パッケージの作成
- クラウドサービスに作成したサービスをステージングにデプロイ
- 動作確認
- 運用とステージングを入れ替え
Windowsの更新
おそらく更新を行うのではなく、構成でOSのバージョンを選択する?
- 管理画面でステージングのOSバージョンを変更
- 動作確認
- 運用とステージングを入れ替え
デプロイの簡単な流れメモ
クラウドサービスのデプロイ時に行ったことのメモ。
今回はPHPアプリケーションを前提。
プロジェクトの作成
New-AzureServiceProject myProject
ロールの追加
Add-AzurePHPWebRole roleName
Add-AzurePHPWorkerRole roleName
PHPのバージョン指定
# バージョンの確認
Get-AzureServiceProjectRoleRuntime
# バージョンの指定
Set-AzureServiceProjectRole roleName php 5.4.0
リモートデスクトップでの接続設定
サーバ構成の変更を直接行う必要無いので必須ではない。デバッグ等に使用。
管理画面から設定可能っぽいから必要ないかも。
Macから接続する場合は英字キーボードとして認識されてしまうので注意。
Enable-AzureServiceProjectRemoteDesktop [username]
証明書のエクスポート
certmgr.msc
「個人」→「証明書」
発行者が「Windows(R) Azure(TM) Encription Tool」
- 秘密キーのエクスポート→「はい」
- エクスポートファイルの形式→「Personal Information Exchange - PKCS #12 (.PFX)」
- 任意のパスワード
証明書のアップロード
管理ポータルで対象のクラウドサービスの証明書メニューでアップロード
発行に必要な設定の取り込み
# 設定ファイルのダウンロード用URLを開く
Get-AzurePublishSettingsFile
# ダウンロードした設定ファイルを取り込む
Import-AzurePublishSettingsFile [PATH_TO_PUBLISHSETTINGFILE]
# 設定の確認
Get-AzureSubscription
パッケージの作成
Save-AzureServiceProjectPackage
構成のデプロイ
管理画面からパッケージをアップロードすれば同じことができるはずだけど何故かエラーになるし詳細が出ないから原因が分からない。
同じパッケージをコマンドでデプロイすることは可能。
Publish-AzureServiceProject -ServiceName [ServiceName] -StorageAccountName [StorageAccountName] -Slot [Slot] -Location [Location]
参考
PHP の Web ロールと worker ロール | Microsoft Azure
https://azure.microsoft.com/ja-jp/documentation/articles/cloud-services-php-create-web-role/#php-web-1
1.6. アプリケーションをデプロイする — Python on Windows Azure Hands-on @ PyCon JP 2012 Sprints
http://pyconjp2012-windows-azure-handson.azurewebsites.net/contents/cloudservices/deploy_application.html