2012/05/11

System Center 2012 RTM > VMM で 2 層アプリをサービス展開 (その2)

「System Center 2012 RTM > VMM で 2 層アプリをサービス展開 (その1)」の続きです。

いよいよ 2 層アプリケーションのサービス展開に挑戦です。ASP.NET v4.0 アプリケーションをフロントエンド、SQL Server 2008 R2 データベースをバックエンドとした 2 層アプリケーションを想定します。


アプリケーション パッケージの準備

展開するアプリケーションは「ASP.NET 動的データ LINQ to SQL Web アプリケーション」テンプレートを基に作成した、超簡単なアプリケーションです。開発は、ローカルの SQL Server Express に LINQ to SQL で接続して行い、デバッグ環境で動作を確認しました。


Release ビルドしたら、「ソリューション エクスプローラー」から「配置パッケージの作成」を実行し、Web Deploy 用のパッケージ (.zip) を作成します。Web Deploy 用のパッケージ (.zip) は、Virtual Machine Manager のライブラリに放り込んでおきます。

アプリケーションがアクセスする SQL Server Express 上のデータベースは、「SQL Server Managemenet Studio」を使用して、データ層アプリケーション (DAC) パッケージ (.dacpac) として保存し、これも Virtual Machine Manager のライブラリに放り込んでおきます。なお、DAC パッケージにはデータベースやログインの定義が含まれており、登録済みのデータは含まれません。



材料の確認

Virtual Machine Manager のライブラリに必要なリソースを放り込んだら、サービス展開の準備は OK です。ライブラリ内にある材料を確認しておきましょう。まずは、Windows Server 2008 R2 Enterprise SP1 だけ、および Windows Server 2008 R2 Enterprise SP1+SQL Server 2008 R2 の準備イメージを含むSysprep 済みの VHD です。


これらの VHD を使用して、仮想マシンのテンプレートを作成し、仮想マシンのハードウェア構成とネットワーク (プールからの IP アドレスの静的割り当て)、OS の構成を済ませておきました。


Web Deploy 用パッケージ (.zip) と DAC パッケージ (.dacpac) はこんな感じ。この他、Virtual Machine Manager 付属の Web Deploy コンポーネント (WebDeploy_x64_ja-JP_2.0.1070.cr) と、前回準備した .NET Framework 4.0 インストール用スクリプト (dotNetFx40.cr) も使います。


サービス テンプレートの作成


「サービス テンプレート デザイナー」で「2層 アプリケーション」テンプレートを選択して作成を開始し、1 層に SQL Server の準備イメージを含む仮想マシン テンプレートを、2 層に Windows Server 2008 R2 Enterprise SP1 だけの仮想マシン テンプレートをドラッグ&ドロップします。



仮想マシンのプロパティを開いて、各仮想マシンのアプリケーションを構成します。Web Deploy 用パッケージは、第 2 層 (上の「フロントエンド Web」) に構成します。Web Deploy 用パッケージの構成方法は、「System Center 2012 RTM > VMM で ASP.NET v4 アプリを Web Deploy」とほとんど同じなので説明しません。1 点だけ、「アプリケーションの構成」でのパラメーターの設定が必要です。開発環境での既定値が入っていますが、実際の SQL Server データベースに接続するための接続文字列に変更する必要があります。ただし、この時点では SQL Server データベースの接続先が確定していません。そういったパラメーターは「@パラメーター名@」と記述しておくことで、サービス展開時に指定できるようになります。

↑この画面の指定は、ローカルの SQL Server Express 接続用で、リモートの SQL Server に接続する場合は Server=... にする必要があります。この画面の設定は完全に誤りなんですが、間違いのまま進むのも一興ということで...

第 1 層 (バックエンド SQL Server) の仮想マシンのプロパティを開き、「SQL Server の構成」で、SQL Server 2008 R2 の「インストールの完了」操作のためのパラメーターを構成します。ここで、「インストールの準備」のときに指定したインスタンス ID を指定し、インストールするインスタンス名 (MSSQLSERVER) やプロダクトキーを入力します。また、メディアソースのパス(C:\SQLInstall)やセキュリティ モード、sa パスワード、サービスアカウントなどを構成します。



サービス テンプレートが完成したら、「展開の構成」→「サービスの展開」を実行し、プライベート クラウドに展開します。まだ確定していなかった SQL Server に対する接続文字列は「展開の構成」で SQL Server の仮想マシンの名前を確認して完成させます (この指定は誤りですが、そのまま続行します)。



展開中...



あろうことか、一発目で展開に成功しました。フロントエンドの Web の URL にアクセスしてみると、残念がら何らかのエラーで正常に動いていません。


 フロントエンド Web の仮想マシンにログオンして、ローカルのブラウザーで確認したところ、Web.config の接続文字列に問題があるとのこと。つまり、先ほど触れた、ローカル SQL Server Express 用の形式(Data Source=) で接続文字列を書いたことが原因でした。Web.config をメモ帳で開き、接続文字列を「server=sql001;database=sampleDB;user id=sa;password=パスワード;」のように書き換えたところ、正常に動作しました。


次回は、接続文字列の問題ですが、サービスを再展開することなしに、サービスの更新で修正してみようと思います。


← 戻る 続く →

0 件のコメント: