派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【イベントレポート】話題のMicrosoft Azureで負荷分散された仮想マシンの作り方を学ぼう!

株式会社リクルートスタッフィング(以下ITSTAFFING)は、2016年11月25日にイベント「Microsoft Azureで負荷分散された仮想マシンの作り方」を開催しました。100名を超える申し込みがあった満員御礼のセミナーの様子をお伝えします。

■記事の見どころ

・“マイクロソフト製品のプロ”にご登壇いただいたイベントのレポート記事です
・イベントで行われたデモンストレーションに沿って、「Microsoft Azureで負荷分散された仮想マシンの作り方」をご紹介します

これからMicrosoft Azureを勉強したい方は、この記事をきっかけにしていただければと思います。ぜひ最後までご覧ください。

f:id:itstaffing:20170116174221j:plain

▼講師:グローバルナレッジネットワーク株式会社 横山哲也さん
2003年からマイクロソフトMVPを連続受賞している、マイクロソフト製品のプロ。現在はWindows Serverの他、クラウド入門コースやMicrosoft AzureやIBM Bluemix Infrastructure(旧称SoftLayer)の研修を担当している。
http://www.globalknowledge.co.jp/info/company/instructor.html

話題のMicrosoft Azureは、一体何ができるのか

今回のセミナーのメインは、Microsoft Azureについての解説を踏まえながら、横山さんが実際にMicrosoft Azureの仮想マシンを構築し、ロードバランサーで負荷分散を行なうデモンストレーションです。

まずはMicrosoft Azureの説明から。Microsoft Azureは、マイクロソフトが運営しているクラウドコンピューティングプラットフォームのことです。クラウド上で仮想マシンを構築できるComputeや、BLOBをはじめとするStorageなどを利用することが出来ます。

Microsoft Azureは、Windows Serverと同様に、UbuntuやCentOSといったLinuxディストリビューションも利用することが出来ます。最近はWindowsマシンよりもLinuxマシンを立てる為に、Microsoft Azureを利用されることのほうが多いそうです。

そして、Microsoft Azureのデプロイ方法は、クラシックモデルとリソースマネージャーの二種類あります。今回は今後主流になるリソースマネージャーを使用します。リソースマネージャーを使うことにより、サーバー構成をJSONで一度記述するだけで、何度でも簡単にインフラをデプロイすることが出来ます。

f:id:itstaffing:20170116174322j:plain

Microsoft Azureを使って、サーバーを構築してみよう

いよいよ実際にデモンストレーションが始まります。
業務でサーバーを構築する場合を想定して、

1. 標準のイメージから仮想マシンを作成
2. 仮想マシンのカスタマイズ
3. 仮想マシンのテンプレートイメージを作成する
4. カスタマイズされたイメージをデプロイ
5. ロードバランサーで負荷分散する

という流れで実施しました。業務でクラウド環境を構築する際には、その都度、標準のテンプレートを作成することはせず、カスタマイズ済みのイメージを作成し、それをサーバーにデプロイする手順を、横山さんはおすすめしています。

これは、メンテナンスなどの突発的な対応を行う場合や、新規でサーバー台数を増やす必要があった際にも、簡単にクラウド環境を統一することができるからです。

1. 標準のイメージから仮想マシンを作成

それでは、仮想マシンを作成していきましょう。 まずは、Windows Azureのポータルに移動。左上の 新規→Compute を押すと利用可能なOSの一覧が表示されます。今回はWindows Server 2016 Datacenterを用います。

f:id:itstaffing:20170116175255j:plain

Windows Server 2016 Datacenterを選択すると、デプロイモデルの選択をするように指示されます。今回はResource Managerを選択してください。以降は仮想マシンの設定を行っていきます。

・基本設定
名前: vmdemo1125
ディスク種類: HDD
ユーザー名: 任意
パスワード:任意
リソースグループ: 任意
場所: 西日本

f:id:itstaffing:20170116175703j:plain

ここで指定した情報は今後の作業でも利用するので、控えておきましょう。

・仮想マシンのサイズ
今回はA1 Standardを選択。

・オプション機能の選択
ストレージとネットワークの設定を行います。基本的な設定はデフォルトで問題ないのですが、業務でサーバー構築することを前提としているため、サブネットを下記に設定します。

・アドレス空間 → 172.16.0.0/16
・サブネット → 172.16.1.0/24

・概要
ここまでの設定で、Microsoft Azureの仮想マシンを立ち上げることに成功しました。数分待つとデプロイが完了し、Windows Server 2016にリモートデスクトップでアクセス可能になります。

2. 仮想マシンのカスタマイズ

次に、Microsoft Azureの仮想マシンにリモートデスクトップで接続します。

作成された仮想マシンをクリックし、「接続」ボタンをクリックすると、リモートデスクトップにアクセスするためのrdpファイルをダウンロードすることができます。

f:id:itstaffing:20170116175821j:plain

先程登録したユーザー名とパスワードを入力し、仮想デスクトップにリモートデスクトップ経由でログイン。今回のデモンストレーションでは時間の都合上、カスタマイズは省略となりましたが、ぜひご自身で最後まで行ってみてください。

3. 仮想マシンのテンプレートイメージを作成する

・Sysprepを行う
Windowsの場合、カスタムテンプレートを作成するためには、現在の環境固有の情報を一般化する作業を行う必要があります。そのためにSysprepを実行します。

c:\Windows\System32\Sysprep にコマンドプロンプトで移動し、 sysprepコマンド を実行。

f:id:itstaffing:20170117103232j:plain

上記のように設定をして実行すると、仮想マシンが一般化されます。しばらくするとMicrosoft Azureのポータルにて、仮想マシンが停止していることが確認できるはずです。

※「停止済み (OSのみ停止)」と表示されていますが、コンピューティングの料金は引き続き発生している状態です。そのため、「停止」ボタンを押して、仮想マシンを停止させてください。

・仮想マシンに一般化済みのフラグを立てる
以上の工程で作成した仮想マシンは、一般化されました。しかし、Microsoft Azureは仮想マシンが一般化された状態であることを判断していません。イメージを作成するために、手動で仮想マシンが一般化されたことを知らせる必要があります。

今回の操作では、Windows環境でPowerShellを利用することを想定しています。次の手順に進む前に、Microsoft AzureのPowerShellコマンドラインツールをインストールしましょう。

▼Microsoft.comに移動
https://azure.microsoft.com/ja-jp/downloads/

下記のサイトを参考に、PowerShellを用いてGeneralizedフラグを立てる操作を行いましょう。

▼Microsoft.comに移動
https://docs.microsoft.com/ja-jp/azure/virtual-machines/virtual-machines-windows-capture-image

Azure PowerShellの設定をし、下記のコマンドを実行します。
Set-AzureRmVM -Name vmdemo1125 -ResourceGroupName vmdemo -Generalized

ここまで成功すれば、仮想マシンのアクティビティログにて、Generalizedされたことが表示されます。

・Captureし実際に仮想マシンのイメージを取得する
次に、仮想マシンのイメージを作成し、ライブラリに保存する作業を行います。現在、Resource Managerを用いてこの作業をするには、Preview版のResource Explorerというサービスを利用します。
https://resources.azure.com/

上記のサイトから、Microsoft Azureのアカウントに紐づいたリソースに対して、設定の確認や変更を行うことができます。

subscriptions→サブスクリプション名→resourceGroups→リソースグループ名→providers→ Microsoft.Compute→virtualMachines

に作成した仮想マシンが存在します。

f:id:itstaffing:20170117103330j:plain

ここで、上部のアクセス権限をRead OnlyからRead/Writeに変更した上で、Actionsタブを選択。Captureというアクションを実行することで、すでにGeneralizedされている仮想マシンのイメージを作成することができます。

JSONで作成されるイメージの名称、保存先のコンテナ、書き込み設定について変更できます。今回は下記のようなJSONを指定しました。

{
"vhdPrefix": "masterimage20161125",
"destinationContainerName": "masterimage",
"overwriteVhds": "false"
}

上記のJSONを入力の上、Captureボタンを押すと、仮想マシンの作成されているストレージアカウント内にイメージが保存されます。

該当するストレージアカウントの画面を開くと、BLOBの

system/Microsoft.Compute/Images/指定したコンテナ名

を確認することができます。正しく完了していればvhdファイルが存在します。このイメージをデプロイし、複数のサーバーを簡単に構築することが可能です。

f:id:itstaffing:20170117103450j:plain

後の工程でファイルのURLが必要になるので、vhdファイルを選択し、保存しておきましょう。

4. カスタマイズされたイメージをデプロイ

続いて、イメージのデプロイを行います。Resource Managerを利用して作成されたイメージは、別途JSONで定義されたカスタムテンプレートを用いてデプロイを行う必要があります。

今回の記事では、マイクロソフトの方がブログで公開している、テンプレートを利用します。

▼Microsoft.comに移動
https://blogs.technet.microsoft.com/junichia/2015/11/25/arm-vm/

Microsoft Azureのポータルサイトから、 新規→全て を表示。検索ボックスに「テンプレート」と入力をして、テンプレートのデプロイを入力します。

次に、テンプレートの編集を行います。ブラウザ内にJSONを編集できる画面が表示されるので、先程ダウンロードしたテンプレートを入力してください。

f:id:itstaffing:20170117103556j:plain

入力が完了すると、下記のような画面が表示されるので、イメージのURL、ストレージアカウント、仮想ネットワーク名、サブネット名などを入力してください。

f:id:itstaffing:20170117103759j:plain

指定を行い、作成を行うと、数分でデプロイが完了します。

5. ロードバランサーで負荷分散する

最後にロードバランサーの作成も行いました。ただし、テンプレート内で可用性セットを作成していないと、複数台のロードバランシングをすることが出来ないので、注意してください。

実際には、

・ロードバランサーのバックエンドプールに可用性セットを指定
・フロントエンドIPに静的なパブリックIPを指定
・プローブの追加
・負荷分散規則の構成

の設定が行われました。
上記の設定の上で、ロードバランサーに割り当てられたパブリックIPにアクセスし、サンプル用のWebページが表示されたところで、本イベントは終了となりました。

デモンストレーションの中で横山さんは、「クラウドの原則は、すでに提供されているものを使い、なるべく自分で作らないことが重要だ」と強調されていました。このポイントを踏まえながら、ぜひ最後まで実践してみてください。

※掲載しておりますリンクはマイクロソフトの許諾を得て使用しています。

f:id:itstaffing:20170117103858j:plain

新しい技術やトレンドはキャッチアップできていますか?ITSTAFFINGがサポートしていること

今回はスケールアウトをするために、「仮想マシンを作成しロードバランサーを作成する」という作業を行いましたが、Microsoft Azureの新機能として、「仮想マシーンスケールセット」が新たに追加され、自動でプロビジョニングし、自動スケールができるようになりました。

このようなMicrosoft Azureの新機能を始め、多くのサービスには新しい技術が次々と発表されるため、常に最新の情報をキャッチアップしていくことが大切です。ITSTAFFINGでは今後も、最新の情報をキャッチアップする方法やスキルアップに役立つイベントを開催し、皆さまをサポートしていきます。今回はご都合が悪く、ご参加いただけなかった方も、今後開催するセミナーにぜひご参加ください!お待ちしております。