Azure クラシック CLI を使用して複数の NIC が設定された VM (クラシック) を作成する
Azure に仮想マシン (VM) を作成し、複数のネットワーク インターフェイス (NIC) を各 VM にアタッチできます。 複数 NIC では、複数の NIC 全体にトラフィック タイプを分散できます。 たとえば、インターネットと通信する NIC もあれば、インターネットに接続されていない内部リソースとのみ通信する NIC もあるとします。 アプリケーションの配布や WAN の最適化ソリューションなど、多くのネットワーク仮想アプライアンスでは、複数の NIC 間にネットワーク トラフィックを分散できる必要があります。
重要
Azure には、リソースの作成と操作に関して、2 種類のデプロイ モデルがあります。Resource Manager とクラシックです。 この記事では、クラシック デプロイ モデルの使用方法について説明します。 最新のデプロイメントでは、リソース マネージャー モデルを使用することをお勧めします。 Resource Manager デプロイ モデルを使用してこれらの手順を実行する方法について説明します。
シナリオ
ここでは、VM で複数の NIC を使用するデプロイメントについて、具体的なシナリオを使って説明します。 このシナリオでは、Azure でホストされる 2 層の IaaS ワークロードを使用します。 各層は、仮想ネットワーク (VNet) の専用サブネットにデプロイされています。 フロントエンド層は複数の Web サーバーで構成されていて、Web サーバーは高可用性のために 1 つのロード バランサー セットにグループ化されています。 バックエンド層は、複数のデータベース サーバーで構成されています。 データベース サーバーは、それぞれ 2 つの NIC を使用してデプロイされています。1 つはデータベース アクセス用、もう 1 つは管理用です。 また、各サブネットおよびデプロイメント内の NIC に対して許可されるトラフィックを制御するためのネットワーク セキュリティ グループ (NSG) も含まれます。 次の図に、このシナリオの基本的なアーキテクチャを示します。
次の手順では、IaaSStory という名前のリソース グループを WEB サーバーに、IaaSStory-BackEnd という名前のリソース グループを DB サーバーに使用します。
前提条件
DB サーバーを作成する前に、このシナリオで必要なすべてのリソースを備えた IaaSStory リソース グループを作成する必要があります。 これらのリソースを作成するには、次の手順に従います。 VNet を作成するには、「仮想ネットワークを作成する」の記事の手順に従います。
前提条件:Azure CLI のインストール
この記事の手順を実行するには、 Azure CLI をインストール して Azure にサインインします。
Note
Azure アカウントをお持ちでない場合は、取得する必要があります。 ここで無料試用版にサインアップしてください。 さらに、理解するために、jq または他のいくつかの JSON 解析ツールまたはライブラリをインストールする必要があります。
バックエンド VM をデプロイする
バックエンド VM は、次のリソースの作成に依存します。
- データ ディスクのストレージ アカウント。 パフォーマンスを高めるために、データベース サーバー上のデータ ディスクはソリッド ステート ドライブ (SSD) テクノロジーを使用します。これには、Premium Storage アカウントが必要です。 デプロイする Azure の場所が Premium Storage をサポートすることを確認してください。
- NIC。 各 VM には 2 つの NIC があり、1 つはデータベース アクセス用で、もう 1 つは管理用です。
- 可用性セット。 メンテナンス中に少なくとも 1 つの VM が稼働し、実行されているようにするためには、すべてのデータベース サーバーを単一の可用性セットに追加します。
手順 1 - スクリプトの開始
使用するすべての Bash スクリプトは、 ここからダウンロードできます。 以下の手順に従って、ご使用の環境で機能するようにスクリプトを変更します。
上記の 前提条件でデプロイした既存のリソース グループに基づいて、以下の変数の値を変更します。
location="useast2" vnetName="WTestVNet" backendSubnetName="BackEnd"
バックエンド デプロイメントに使用する値に基づいて、以下の変数の値を変更します。
backendCSName="IaaSStory-Backend" prmStorageAccountName="iaasstoryprmstorage" image="0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.1" avSetName="ASDB" vmSize="Standard_DS3" diskSize=127 vmNamePrefix="DB" osDiskName="osdiskdb" dataDiskPrefix="db" dataDiskName="datadisk" ipAddressPrefix="192.168.2." username='adminuser' password='adminP@ssw0rd' numberOfVMs=2
手順 2 - VM 用に必要なリソースの作成
すべてのバックエンド VM 向けに新しいクラウド サービスを作成します。 リソース グループ名のための
$backendCSName
変数と Azure リージョンのための$location
の使用に注意してください。azure service create --serviceName $backendCSName \ --location $location
VM で使用するデータ ディスクと OS の Premium Storage アカウントを作成します。
azure storage account create $prmStorageAccountName \ --location $location \ --type PLRS
手順 3 - 複数 NIC を持つ VM の作成
numberOfVMs
変数に基づいて、複数の VM を作成するループを開始します。for ((suffixNumber=1;suffixNumber<=numberOfVMs;suffixNumber++)); do
各 VM について、2 つの NIC それぞれの名前と IP アドレスを指定します。
nic1Name=$vmNamePrefix$suffixNumber-DA x=$((suffixNumber+3)) ipAddress1=$ipAddressPrefix$x nic2Name=$vmNamePrefix$suffixNumber-RA x=$((suffixNumber+53)) ipAddress2=$ipAddressPrefix$x
VM を作成します。 名前、サブネット、IP アドレスを持つすべての NIC の一覧を含む
--nic-config
パラメーターを使用していることに注目します。azure vm create $backendCSName $image $username $password \ --connect $backendCSName \ --vm-name $vmNamePrefix$suffixNumber \ --vm-size $vmSize \ --availability-set $avSetName \ --blob-url $prmStorageAccountName.blob.core.windows.net/vhds/$osDiskName$suffixNumber.vhd \ --virtual-network-name $vnetName \ --subnet-names $backendSubnetName \ --nic-config $nic1Name:$backendSubnetName:$ipAddress1::,$nic2Name:$backendSubnetName:$ipAddress2::
各 VM あたり 2 つのデータ ディスクを作成します。
azure vm disk attach-new $vmNamePrefix$suffixNumber \ $diskSize \ vhds/$dataDiskPrefix$suffixNumber$dataDiskName-1.vhd azure vm disk attach-new $vmNamePrefix$suffixNumber \ $diskSize \ vhds/$dataDiskPrefix$suffixNumber$dataDiskName-2.vhd done
手順 4 - スクリプトの実行
ニーズに合わせてスクリプトをダウンロードおよび変更したら、スクリプトを実行して複数の NIC を持つバックエンド データベース VM を作成してください。
スクリプトを保存し、 Bash ターミナルから実行します。 次のように、最初の出力が表示されます。
info: Executing command service create info: Creating cloud service data: Cloud service name IaaSStory-Backend info: service create command OK info: Executing command storage account create info: Creating storage account info: storage account create command OK info: Executing command vm create info: Looking up image 0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.1 info: Looking up virtual network info: Looking up cloud service info: Getting cloud service properties info: Looking up deployment info: Creating VM
数分後に実行が終了し、次のように、出力の残りの部分が表示されます。
info: OK info: vm create command OK info: Executing command vm disk attach-new info: Getting virtual machines info: Adding Data-Disk info: vm disk attach-new command OK info: Executing command vm disk attach-new info: Getting virtual machines info: Adding Data-Disk info: vm disk attach-new command OK info: Executing command vm create info: Looking up image 0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.1 info: Looking up virtual network info: Looking up cloud service info: Getting cloud service properties info: Looking up deployment info: Creating VM info: OK info: vm create command OK info: Executing command vm disk attach-new info: Getting virtual machines info: Adding Data-Disk info: vm disk attach-new command OK info: Executing command vm disk attach-new info: Getting virtual machines info: Adding Data-Disk info: vm disk attach-new command OK
手順 5 - VM オペレーティング システム内でのルーティングの構成
Azure DHCP では、既定のゲートウェイが、仮想マシンに接続された最初の (プライマリ) ネットワーク インターフェイスに割り当てられます。 Azure では、既定のゲートウェイは、仮想マシンにアタッチされた追加の (セカンダリ) ネットワーク インターフェイスに割り当てられません。 したがって、既定では、セカンダリ ネットワーク インターフェイスのサブネット外のリソースと通信することはできません。 しかし、セカンダリ ネットワーク インターフェイスは、そのサブネット外のリソースと通信できます。 セカンダリ ネットワーク インターフェイス用のルーティング構成については、「Routing within a virtual machine operating system with multiple network interfaces (複数のネットワーク インターフェイスを持つ仮想マシンのオペレーティング システム内でのルーティング)」を参照してください。