チュートリアル: 仮想マシン スケール セットを作成して Linux に高可用性アプリをデプロイする
適用対象: ✔️ Linux VM ✔️ 均一スケール セット
仮想マシン スケール セットでは、フレキシブル オーケストレーションを使用して、負荷分散が行われる VM のグループを作成して管理できます。 需要または定義されたスケジュールに応じて、VM インスタンスの数を自動的に増減させることができます。
このチュートリアルでは、仮想マシン スケール セットを Azure にデプロイします。次の方法について説明します。
- リソース グループを作成する。
- ロード バランサーを使用してフレキシブル スケール セットを作成する。
- Nginx をスケール セット インスタンスに追加する。
- HTTP トラフィックに対してポート 80 を開く。
- スケール セットをテストする。
スケール セットの概要
スケール セットには、次のような主な利点があります。
- 複数の VM の作成と管理が容易である
- 複数の障害ドメインに VM を分散することにより、高可用性とアプリケーションの回復性が提供される
- リソースの需要の変化に応じた、アプリケーションの自動スケーリングを可能にする
- 大規模に動作する
Azure ではフレキシブル オーケストレーションを使用することで、Azure VM エコシステム全体で統合されたエクスペリエンスを実現できます。 フレキシブル オーケストレーションでは、リージョン内の障害ドメインまたは可用性ゾーン内で VM を分散することで、(最大 1,000 個の VM まで) 高可用性を保証します。 これにより、以下のようなクォーラムベースまたはステートフル ワークロードを実行するのに欠かせない障害ドメインを分離したまま、アプリケーションをスケールアウトできます。
- クォーラムベースのワークロード
- オープンソース データベース
- ステートフル アプリケーション
- 高可用性と大きいスケールが必要なサービス
- 仮想マシンの種類の混在、またはスポットとオンデマンドの VM の併用が求められるサービス
- 既存の可用性セット アプリケーション
オーケストレーション モードでの均一スケール セットとフレキシブル スケール セットの違いについて確認してください。
スケール セットを作成する
Azure portal を使用してフレキシブル スケール セットを作成します。
- Azure Portalを開きます。
- [仮想マシン スケール セット] を検索して選択します。
- [仮想マシン スケール セット] ページで [作成] を選択します。 [仮想マシン スケール セットを作成する] が開きます。
- [サブスクリプション] で、使用するサブスクリプションを選択します。
- [リソース グループ] で、 [新規作成] を選択し、名前に「myVMSSRG」と入力して [OK] を選択します。
- [仮想マシン スケール セットの名前] に、「myVMSS」と入力します。
- [地域] で、 [米国東部] のように、自分の地域に近いリージョンを選択します。
- この例では、 [可用性ゾーン] は空白のままにします。
- [オーケストレーション モード] で、 [フレキシブル] を選択します。
- [イメージ]に、[Ubuntu 18.04 LTS] を選択します。
- [サイズ] は、既定値のままにするか、[Standard_E2s_V3] のようにサイズを選択します。
- [ユーザー名] に「azureuser」と入力します。
- [SSH public key source](SSH 公開キー ソース) では、 [新しいキー ペアの生成] を既定値のまま残し、 [Key pair name](キー ペアの名前) に「myKey」と入力します。
- [ネットワーク] タブの [負荷分散] で、 [ロード バランサーを使用する] を選択します。
- [負荷分散のオプション ] は、既定の [Azure load balancer](Azure ロード バランサー) のままにします。
- [ロード バランサーを選択します] で、 [Create new](新規作成) を選択します。
- [Create a load balancer](ロードバランサーの作成) ページで、ロード バランサーの名前とパブリック IP アドレス名を入力します。
- [ドメイン名ラベル] には、ドメイン名のプレフィックスとして使用する名前を入力します。 この名前は一意である必要があります。
- 完了したら [作成] を選択します。
- [ネットワーク] タブに戻り、バックエンド プールの既定の名前をそのまま使用します。
- [スケーリング] タブで、インスタンス数を既定の [2] のままにするか、独自の値を追加します。 これは、作成される VM の数です。この値を変更した場合は、サブスクリプションのコストと制限に注意してください。
- スケーリング ポリシー は、 [手動] に選択されたままにします。
- [詳細] タブを選択します。
- [Custom data and cloud init](カスタム データと cloud-init) で以下をコピーして [Custom data](カスタム データ) テキスト ボックスに貼り付けます。
#cloud-config package_upgrade: true packages: - nginx - nodejs - npm write_files: - owner: www-data:www-data - path: /etc/nginx/sites-available/default content: | server { listen 80; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } - owner: azureuser:azureuser - path: /home/azureuser/myapp/index.js content: | var express = require('express') var app = express() var os = require('os'); app.get('/', function (req, res) { res.send('Hello World from host ' + os.hostname() + '!') }) app.listen(3000, function () { console.log('Hello world app listening on port 3000!') }) runcmd: - service nginx restart - cd "/home/azureuser/myapp" - npm init - npm install express -y - nodejs index.js
- 完了したら、 [確認および作成] を選択します。
- 検証が成功したことを確認したら、ページの下部にある [作成] を選択してスケール セットをデプロイできます。
- [新しいキー ペアの生成] ウィンドウが開いたら、 [Download private key and create resource](秘密キーをダウンロードし、リソースを作成する) を選択します。 キー ファイルは myKey.pem としてダウンロードされます。
.pem
ファイルがダウンロードされた場所を必ず把握してください。そのパスが次の手順で必要になります。 - デプロイが完了したら、[リソースに移動] を選択し、スケール セットを表示します。
スケール セット内の VM を表示する
スケール セットのページで、左側のメニューから [インスタンス] を選択します。
スケール セットの一部である VM の一覧が表示されます。 この一覧の内容:
- VM の名前
- VM によって使用されるコンピューター名。
- VM の現在の状態 (例: [実行中] )。
- VM の [プロビジョニングの状態] (例: [Succeeded](成功) )。
ポート 80 を開く
ネットワーク セキュリティ グループ (NSG) に受信規則を追加して、スケール セットのポート 80 を開きます。
- スケール セットのページで、左側のメニューから [ネットワーク] を選択します。 [ネットワーク] ページが開きます。
- [受信ポートの規則を追加する] を選択します。 [受信セキュリティ規則の追加] ページが開きます。
- [サービス] で [HTTP] を選択し、ページの下部にある [追加] を選択します。
スケール セットのテスト
ブラウザーからスケールセットに接続してテストします。
- スケールセットの [概要] ページで、パブリック IP アドレスをコピーします。
- ブラウザーで別のタブを開いて、アドレス バーにその IP アドレスを貼り付けます。
- ページが読み込まれたら、表示されているコンピューター名をメモしておきます。
- コンピューター名の変更が反映されるまでページを更新します。
スケール セットの削除
完了したら、リソース グループを削除する必要があります。これにより、スケール セットにデプロイしたすべてのものが削除されます。
- スケール セットのページで、[リソース グループ] を選択します。 自分のリソース グループのページが開きます。
- ページの上部で [リソース グループの削除] を選択します。
- [削除しますか] ページで、リソース グループの名前を入力し、[削除] を選択します。
次のステップ
このチュートリアルでは、仮想マシン スケール セットを作成しました。 以下の方法を学習しました。
- リソース グループを作成する。
- ロード バランサーを使用してフレキシブル スケール セットを作成する。
- Nginx をスケール セット インスタンスに追加する。
- HTTP トラフィックに対してポート 80 を開く。
- スケール セットをテストする。
次のチュートリアルでは、仮想マシンでの負荷分散の概念について詳しく説明します。