単一リージョンの LAMP アーキテクチャのデプロイ
このドキュメントでは、より実践的なプログラムによるセットアップのための Bash、PowerShell または Windows Batch のコマンド ライン ツール、またはワンクリック デプロイ用の Azure Resource Manager テンプレートを使用して、単一リージョンの LAMP アーキテクチャをデプロイするためのさまざまな方法について説明します。 ほとんどの場合、Azure Portal を使用してアーキテクチャの特定の部分を設定する方法を指すポインターがあります。 または、コマンド ライン ツールを使用するか、Azure Pipelines でインフラストラクチャのデプロイを自動化して、Hashicorp Terraform のようなサードパーティのソリューションを使用することもできます。ガイダンスとして、このホワイトペーパーでは Terraform のステップ バイ ステップの Azure プロバイダー テンプレートが提供されています。こちらのリンクに他のテンプレートもあります。
一般に、単一リージョンの LAMP アーキテクチャをデプロイするときには、主に 1 回限り特定の手順がありますが、その他の場合は、バックエンドがゲームの要件に合わせて更新されるので、より定期的に実行する必要があります。 手順の完全な一覧を次に示します。
主に 1 回のみの操作
- 任意の Linux OS ディストリビューションを使用して、マネージド ディスクに仮想マシンをデプロイします。
- Apache、任意の PHP バージョン、その他必要と思われるものをインストールします。
- 仮想マシンの割り当てを解除し、一般化します。
- 仮想マシンのディスク イメージをキャプチャして、カスタム ゴールデン イメージを生成します。
- ネットワーク リソース (ロード バランサーなど) をデプロイします。
- Azure Cache for Redis をデプロイします。
- Azure Database for MySQL をデプロイします。
- Azure Storage アカウントとコンテナーを作成します。
- 仮想マシンのスケール セットを作成して、キャプチャされたディスク イメージが OS ディスクとして参照されるようにします。
- 自動スケール設定をセットアップします。
- DDoS 攻撃に対する保護を有効にします。
注意
今後、別の Linux OS バージョンまたは PHP バージョンに変更することが必要になる可能性があります。その場合は、カスタム ゴールデン イメージを再作成する必要があります (手順 1-4)。 または、自動スケーラーに変更することもできます (手順 10)。
定期的な基本操作
- 前に説明した手順 9 で作成した仮想マシン スケール セットからの仮想マシン インスタンスを PHP ファイルの変更で更新します。
準備
少なくとも Azure サブスクリプションが必要です。 詳細を確認してください。
作成しようとしている Azure リソースに対して選択する名前について、名前付け規則を確認します。
どの Azure リージョンでどの種類の Azure Linux 仮想マシンがサポートされているかについて調べます。
コマンド ラインの選択肢
Bash は UNIX シェルおよびコマンド言語であり、通常はテキスト ウィンドウで実行されます。ユーザーは、そのウィンドウでアクションの原因となるコマンドを入力します。 Bash では、シェル スクリプトと呼ばれるファイルからコマンドを読み取り、実行することもできます。 Bash スクリプトを作成して実行するには、次のようにします。
- Linux/UNIX を実行しているコンピューターのディレクトリにファイルを作成します。
- ファイル名を選択し、ファイルの拡張子が Bash スクリプトとして識別される
.sh
であることを確認します。 - お気に入りのエディターを使用してファイルを開きます。
- スクリプトの一番上に
#!/bin/bash
が含まれていることを確認します。 - このドキュメントで提供されている Bash スニペットをコピーして貼り付けます。 変数は、使用する前に初期化する必要があることに注意してください。したがって、Bash ファイル内では、それらの変数を使用しているコマンドよりも上に配置する必要があります。
- ファイルを保存します。
[SCRIPTNAME.sh]
を自分のスクリプトに置き換えたchmod +x [SCRIPTNAME.sh]
を使用して、実行のアクセス許可があることを確認します。- 実行するには、単純に
./[SCRIPTNAME.sh]
を使用します。
アーキテクチャ全体をエンドツーエンドでデプロイするために、Bash、PowerShell、Windows Batch のいずれかにこだわる必要はありません。 Windows Batch を使用して Azure Cache for Redis のデプロイなどの手順を完了してから、Bash に切り替えて Azure Database for MySQL をデプロイすることもできます。ただし、これは標準的ではありません。
重要
コマンド ライン インターフェイスとこのドキュメントのサンプルを使用して、アーキテクチャをプログラムによってセットアップすることにした場合は、Azure CLI (Azure リソースを管理するための優れたエクスペリエンスを提供するクロスプラットフォームのコマンドライン ツール) または Azure PowerShell をインストールする必要があります。 これらはどちらも、スクリプト作成の簡易化、データのクエリ、実行時間の長い操作のサポートなどを実現するように設計されています。
コマンド ラインの一般的な構成変数とツール
どの手順を作業しているかに関係なく、一般的な変数のセットは基礎となるため、これを用意しておくことをお勧めします。
- YOURSUBSCRIPTIONID: Azure サブスクリプション ID (形式: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)。
- REGIONNAME: アーキテクチャがデプロイされる Azure リージョン。
- RESOURCEGROUPNAME: アーキテクチャからのすべての異なる Azure サービスを含むリソース グループの名前。 リージョン名をサフィックスとして追加することを検討してください。
- PREFIX: 今後の識別の目的ですべての Azure サービスの前に付けられる文字列。 例: ゲームのコードネーム。
Azure リージョン名の一覧を取得する
az account list-locations
次に、現在利用可能なリージョン名の例をいくつか示します。
リージョン | 名前 |
---|---|
日本西部 | japanwest |
日本東部 | japaneast |
韓国中部 | koreacentral |
韓国南部 | koreasouth |
東アジア | eastasia |
東南アジア | southeastasia |
東南アジア | southeastasia |
オーストラリア中部 | australiacentral |
オーストラリア中部 2 | australiacentral2 |
具体的には、どの Azure リージョンが特定の Azure Linux 仮想マシンの種類をサポートするかについてのクエリを実行することもできます。 az-vm-list-skus Azure CLI と Get-AzComputeResourceSku PowerShell コマンドの詳細をご覧ください。
az vm list-skus --size Standard_B1s --query [].locationInfo[].location
az vm list-skus --size Standard_F16s_v2 --query [].locationInfo[].location
az vm list-skus --size Standard_F32s_v2 --query [].locationInfo[].location
変数を初期化する
固有である必要がある Azure サブスクリプション ID とリージョン名を除き、名前付け規則に準拠している限り、リソース グループ名とログイン ユーザー名に独自性を持たせることができます。 myResourceGroup と azureuser はその例です。
export YOURSUBSCRIPTIONID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
export RESOURCEGROUPNAME=myResourceGroup
export REGIONNAME=japanwest
export PREFIX=myGameBackend
1. マネージド ディスクに仮想マシンをデプロイする
この仮想マシンには、特定の用途が 1 つだけあります。カスタム ゴールデン イメージの基礎として機能することです。 ほとんどの場合、これは後で削除されます。
ヒント
仮想マシンをデプロイするときは、パスワードではなく SSH キーを使用してアクセスを保護することをお勧めします。 詳細を確認してください。
マネージド ディスクに仮想マシンをデプロイするために使用される方法に関係なく、Azure Portal のリソース グループ内を見ると、次の図のようになっています。 作成される公開リソースは、仮想マシン自体、いくつかのディスク (オペレーティング システムからのディスクとデータ用の別のディスク)、パブリック IP アドレス、ネットワーク セキュリティ グループ、ネットワーク インターフェイス コントローラー (NIC)、最後に仮想ネットワークです。
Azure CLI を使用したコマンド ライン アプローチ
一般的な構成変数の上で、次の変数も使用されます。
変数 | 既定値 | 小規模構成 | 中規模構成 | 大規模構成 | 説明 |
---|---|---|---|---|---|
LOGINUSERNAME | azureuser | デプロイ後に仮想マシンに接続するための管理ユーザー名。 | |||
VMNAME | myVirtualMachine | 仮想マシンの名前。 | |||
VMNAME | Canonical:UbuntuServer:16.04-LTS:latest | 仮想マシンにインストールされる Linux OS。 | |||
VMSIZE | Standard_B1s | Standard_B1s | Standard_F16s_v2 | Standard_F32s_v2 | 仮想マシン オプション。 Premium SSD はすべての仮想マシン オプションでサポートされるわけではないことに注意してください。 詳細を確認してください。 |
VMDATADISKSIZEINGB | 5 | 5 | 10 | 30 | 仮想マシンごとに割り当てる永続ディスク ストレージの量。 マネージド ディスクを使用する利点。 |
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、仮想マシンのデプロイの各部分を理解するために、完全な Bash 1-create-vm.sh または Windows Batch 1-create-vm.bat Azure CLI スクリプト、または 1-create-vm.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
マネージド ディスクに仮想マシンをデプロイするプロセスの詳細については、仮想マシンの種類の選択、仮想マシン イメージの選択、VM のデプロイなどの基本的な Azure 仮想マシン デプロイ項目を扱っている「Azure CLI を使用した Linux VM の作成と管理」のチュートリアルをご覧ください。
変数を初期化する
固有である必要がある、使用するイメージ、仮想マシンのサイズ、およびストレージの GB 数を除き、名前付け規則に準拠している限り、仮想マシン名に独自性を持たせることができます。 myVirtualMachine はその例です。
export LOGINUSERNAME=azureuser
export VMNAME=myVirtualMachine
export IMAGE=Canonical:UbuntuServer:16.04-LTS:latest
export VMSIZE=Standard_B1s
export VMDATADISKSIZEINGB=5
ログイン
このコマンドを実行すると、Azure の資格情報を使用してログインするためのブラウザーが開きます。 az login Azure CLI と Connect-AzAccount PowerShell コマンドの詳細をご覧ください。
Azure サブスクリプションを設定する
サブスクリプションがある場合、この手順は省略可能です。 az account set Azure CLI と Set-AzContext PowerShell コマンドの詳細をご覧ください。
az account set \
--subscription $YOURSUBSCRIPTIONID
リソース グループを作成する
Azure で作成されたすべてのリソースは、リソース グループの一部である必要があります。 az group create Azure CLI と New-AzResourceGroup PowerShell コマンドの詳細をご覧ください。
az group create \
--name $RESOURCEGROUPNAME \
--location $REGIONNAME
リソース グループについて詳しくは、一般的なガイドラインのドキュメントをご覧ください。
仮想マシンを作成する
この操作には数分かかります。 az vm create Azure CLI と New-AzVM PowerShell コマンドの詳細をご覧ください。
az vm create \
--resource-group $RESOURCEGROUPNAME \
--name $VMNAME \
--image $IMAGE \
--size $VMSIZE \
--admin-username $LOGINUSERNAME \
--data-disk-sizes-gb $VMDATADISKSIZEINGB \
--generate-ssh-keys
ポート 80 と 443 を開く
az vm open-port Azure CLI コマンドの詳細をご覧ください。
az vm open-port \
--port 80 \
--priority 900 \
--resource-group $RESOURCEGROUPNAME \
--name $VMNAME
az vm open-port \
--port 443 \
--priority 901 \
--resource-group $RESOURCEGROUPNAME \
--name $VMNAME
Azure Resource Manager テンプレート
この Azure Resource Manager (ARM) テンプレートは、カスタム ゴールデン イメージの基礎として機能する Azure 仮想マシンをデプロイするサンプル テンプレートです。 ほとんどの場合、これは後で削除されます。
Azure Portal
Azure Portal を使用して仮想マシンを手動で作成する場合は、「Azure portal で Linux 仮想マシンを作成する」および「Azure portal を使用して Windows VM にマネージド データ ディスクを接続する」をご覧ください。
Hashicorp Terraform
この Hashicorp Terraform の Azure プロバイダー テンプレートは、カスタム ゴールデン イメージの基礎として機能する Azure 仮想マシンをデプロイするサンプル テンプレートです。 ほとんどの場合、これは後で削除されます。 使用されるコマンドについて詳しくは、以下の資料をご覧ください。
- azurerm_resource_group を使用して Azure リソース グループを作成する
- azurerm_virtual_machine を使用して Azure 仮想マシンを作成する
2. Apache と PHP をインストールする
作成された仮想マシンのパブリック IP を取得する
Azure CLI を使用したコマンド ライン アプローチ
az network public-ip list Azure CLI と Get-AzVM PowerShell コマンドの詳細をご覧ください。
az network public-ip list \
--resource-group $RESOURCEGROUPNAME \
--query [].ipAddress
Azure Portal
仮想マシンの概要ページで、[接続] ボタンを選択します。
画面の右側に新しいブレードが開き、[VM ローカル アカウントを使用してログインする] に接続コマンドが表示されます。
仮想マシンに接続する
任意のローカル bash シェルを使用して、SSH 接続コマンドをシェルに貼り付けて SSH セッションを作成します。 次の例は、SSH 接続コマンドがどのようになるかを示しています。
ssh azureuser@[PUBLICIP]
インストール コマンドを 1 つずつ実行する
次のコマンドでは、Apache と PHP 7.3 バージョンがインストールされます。 下の 7.3 の参照をすべて置き換えて、5.6 などの他の任意の PHP バージョンに変更することができます。
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get -y update
export DEBIAN_FRONTEND=noninteractive
sudo apt-get -y install apache2 php7.3 libapache2-mod-php7.3 php7.3-mysql
sudo apt-get -y install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json
sudo apt-get -y install sysv-rc-conf
sudo service apache2 start
sudo sysv-rc-conf apache2 on
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php > /dev/null
exit
ヒント
シェル スクリプトを作成してすべてのコマンドをより自動化された方法で実行し、例として 2-install-apache-and-php.sh をチェック アウトできます。
Azure Resource Manager テンプレート
Azure 仮想マシンでスクリプトをダウンロードして実行する Azure カスタム スクリプト拡張機能を使用することを検討してください。 次のボタンをクリックすると、仮想マシンのカスタム スクリプト拡張機能を使用して Apache と PHP 7.3 バージョンがインストールされます。
Hashicorp Terraform
この Hashicorp Terraform の Azure プロバイダー テンプレートは、Azure 仮想マシンにスクリプトをダウンロードして実行するサンプル テンプレートです。 使用されるコマンドについて詳しくは、次の資料をご覧ください。
- azurerm_virtual_machine_extension を使用して、デプロイ後の構成で Azure 仮想マシンを作成し、自動化タスクを実行する
Web サーバーと PHP が適切に実行されていることを確認する
下の PUBLICIP をお使いの仮想マシンの実際のパブリック IP アドレスに置き換えます。 次に、任意の Web ブラウザーを開き、[http://[PUBLICIP]
に移動する既定のページ、またはたとえば特定の PHP のいずれかにアクセスし、すべてが意図したとおりに機能していることを確認します。
3. 仮想マシンの割り当てを解除し、一般化する
仮想マシンをクリーンアップする
デプロイ用のイメージを作成するには、システムをクリーンアップし、再プロビジョニングの準備を整える必要があります。
任意のローカル bash シェル、アカウント名、仮想マシンのパブリック IP アドレスを使用して、仮想マシンにリモートで接続し、プロビジョニングを解除します。
ssh azureuser@[PUBLICIP]
sudo waagent -deprovision+user -force
exit
上記のコマンドでは以下のタスクが実行されます。
- SSH ホスト キーを削除する
- /etc/resolvconf 内のネームサーバー構成をクリアする
- ルート ユーザーのパスワードを /etc/shadow から削除する
- キャッシュされた DHCP クライアント リースを削除する
- ホスト名を localhost.localdomain にリセットする
- 最後にプロビジョニングされたユーザー アカウントとそのデータを削除する
仮想マシンの停止、割り当て解除、および一般化
イメージを作成する前に、仮想マシン上の Linux ゲスト OS を停止して準備する必要があります。 一般化されていない仮想マシンからイメージを作成する場合、そのイメージから作成された仮想マシンは起動しません。 これらの操作は、非常に迅速に完了する必要があります。
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、仮想マシンの準備の各部分を理解するために、完全な Bash 3-prepare-vm.sh または Windows Batch 3-prepare-vm.bat Azure CLI スクリプト、または 3-prepare-vm.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
Azure CLI を使用したコマンド ライン アプローチ
az vm deallocate、az vm generalize Azure CLI と、Stop-AzVM および Set-AzVM PowerShell コマンドの詳細をご覧ください。
az vm deallocate \
--resource-group $RESOURCEGROUPNAME \
--name $VMNAME
az vm generalize \
--resource-group $RESOURCEGROUPNAME \
--name $VMNAME
4. 仮想マシンのディスク イメージをキャプチャして、カスタム ゴールデン イメージを生成する
ゴールデン イメージの作成に使用される方法に関係なく、Azure Portal のリソース グループ内を見ると、次のようになっています。 作成される追加リソースは、イメージ自体だけです。
Azure CLI を使用したコマンド ライン アプローチ
前に定義した変数の上に、次の変数も使用されます。
変数 | 既定値 | 説明 |
---|---|---|
GOLDENIMAGENAME | myGoldenImage | カスタム ゴールデン イメージの名前。 |
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、カスタム ゴールデン イメージの作成の各部分を理解するために、完全な Bash 4-create-golden-image.sh または Windows Batch 4-create-golden-image.bat Azure CLI スクリプト、または 4-create-golden-image.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
変数を初期化する
名前付け規則に準拠している限り、カスタム ゴールデン イメージ名に独自性を持たせることができます。 myGoldenImage はその例です。
export GOLDENIMAGENAME=myGoldenImage
カスタム ゴールデン イメージを作成する
az image create Azure CLI と New-AzImage PowerShell コマンドの詳細をご覧ください。
az image create \
--resource-group $RESOURCEGROUPNAME \
--source $VMNAME \
--name $GOLDENIMAGENAME \
--os-type Linux
Azure Resource Manager テンプレート
Azure Resource Manager では、イメージの作成は完全にはサポートされていません。 ソースとして使用される Azure 仮想マシンは、あらかじめ一般化しておく必要があります。 一般化された Azure 仮想マシンを参照できる場合、カスタム ゴールデン イメージを作成する ARM テンプレートは次のようになります。
{
"type": "Microsoft.Compute/images",
"apiVersion": "2019-03-01",
"name": "[variables('imageName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('VMNAME'), '/extensions/', variables('extensionName'))]"
],
"properties": {
"sourceVirtualMachine": {
"id": "[variables('vmResourceId')]"
}
}
}
Azure Portal
マネージド ディスクを使用したイメージの作成は、現在、Azure Portal ではサポートされていません。
Hashicorp Terraform
プロバイダーでは、イメージの作成は完全にはサポートされていません。 ソースとして使用される Azure 仮想マシンは、あらかじめ一般化しておく必要があります。 追加のガイダンスについては、こちらの資料をご覧ください。
- azurerm_image を使用して、Azure 仮想マシンからイメージを作成します (あらかじめ一般化しておく必要があります)
5. ネットワーク リソースをデプロイする
注意事項
これは構成の一部であり、相互に接続されている複数のネットワーク要素が関係するため、より慎重に検討する必要があります。
次の例では、Standard Load Balancer SKU でのみサポートされている HTTP トラフィック正常性プローブや、いくつかのインスタンスを含む仮想マシン スケール セットなど、すべてのネットワーク リソースをデプロイした場合のトポロジがどのようになるかを示しています。
特にネットワーク リソースについては、Azure Portal のリソース グループ内を見ると、次のようになっています。 作成される公開リソースは、ロード バランサーと、ロード バランサーおよび仮想ネットワークのパブリック IP です。
Azure CLI を使用したコマンド ライン アプローチ
前に定義した変数の上に、次の変数も使用されます。
変数 | 既定値 | 小規模構成 | 中規模構成 | 大規模構成 | 説明 |
---|---|---|---|---|---|
LBSKU | Basic | Basic | Standard | Standard | Azure Load Balancer SKU。 詳細を確認してください。 |
PUBLICIPNAME | PREFIX + PublicIP | Azure Load Balancer のパブリック IP アドレスを識別する名前。 | |||
PUBLICIPALLOCATION | Static | Dynamic または Static。 | |||
PUBLICIPVERSION | Ipv4 | Ipv4 または Ipv6。 | |||
LBNAME | PREFIX + LB | Azure Load Balancer を識別する名前。 | |||
VNETNAME | PREFIX + VNET | Azure 仮想ネットワークを識別する名前。 | |||
VNETADDRESSPREFIX | 10.0.0.0/16 | Azure 仮想ネットワーク アドレス空間。 | |||
SUBNETNAME | PREFIX + Subnet | サブネットを識別する名前。 | |||
SUBNETADDRESSPREFIX | 10.0.0.0/24 | CIDR 表記でのサブネットのアドレス範囲 (例: 192.168.1.0/24)。 Azure 仮想ネットワークのアドレス空間に含まれている必要があります。 | |||
LBBEPOOLNAME | LBNAME + BEPool | Azure Load Balancer バックエンド プールの名前。 | |||
LBFENAME | LBNAME + FE | Azure Load Balancer フロントエンド IP 構成の名前。 | |||
LBFEPORTRANGESTART | 50000 | フロントエンド IP 構成範囲の開始ポート。 | |||
LBFEPORTRANGEEND | 50119 | フロントエンド IP 構成範囲の終了ポート。 | |||
LBNATPOOLNAME | LBNAME + NATPool | Azure Load Balancer NAT プール名。 | |||
LBRULEHTTPNAME | LBNAME + HTTPRule | HTTP 接続の Azure Load Balancer 受信 NAT 規則名。 | |||
LBRULEHTTPSNAME | 注: Standard SKU のみ | LBNAME + HTTPSRule | LBNAME + HTTPSRule | HTTP 接続の Azure Load Balancer 受信 NAT 規則名。 |
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、ネットワーク リソースのデプロイの各部分を理解するために、完全な Bash 5-create-networking.sh または Windows Batch 5-create-networking.bat Azure CLI スクリプト、または 5-create-networking.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
変数を初期化する
名前付け規則に準拠している限り、パブリック IP 名、ロード バランサー名、仮想ネットワーク名、サブネット名、バックエンド プール名、フロントエンド IP 構成名、NAT プール名、および負荷分散規則名に独自性を持たせることができます。 myGameBackendLB は、ロード バランサーに名前を付ける方法の一例にすぎません。
export LBSKU=Basic
export PUBLICIPNAME=${PREFIX}PublicIP
export PUBLICIPALLOCATION=Static
export PUBLICIPVERSION=IPv4
export LBNAME=${PREFIX}LB
export VNETNAME=${PREFIX}VNET
export VNETADDRESSPREFIX=10.0.0.0/16
export SUBNETNAME=${PREFIX}Subnet
export SUBNETADDRESSPREFIX=10.0.0.0/24
export LBBEPOOLNAME=${LBNAME}BEPool
export LBFENAME=${LBNAME}FE
export LBFEPORTRANGESTART=50000
export LBFEPORTRANGEEND=50119
export LBNATPOOLNAME=${LBNAME}NATPool
export LBRULEHTTPNAME=${LBNAME}HTTPRule
export LBRULEHTTPSNAME=${LBNAME}HTTPSRule
Azure 仮想ネットワークを作成する
az network vnet create Azure CLI と New-AzVirtualNetwork PowerShell コマンドの詳細をご覧ください。
az network vnet create \
--resource-group $RESOURCEGROUPNAME \
--name $VNETNAME \
--address-prefix $VNETADDRESSPREFIX \
--subnet-name $SUBNETNAME \
--subnet-prefix $SUBNETADDRESSPREFIX
ロード バランサーの受信パブリック IP アドレスを作成する
az network public-ip create Azure CLI および New-AzPublicIpAddress PowerShell コマンドの詳細をご覧ください。
az network public-ip create \
--resource-group $RESOURCEGROUPNAME \
--name $PUBLICIPNAME \
--allocation-method $PUBLICIPALLOCATION \
--sku $LBSKU \
--version $PUBLICIPVERSION
Azure Load Balancer を作成する
az network lb create Azure CLI および New-AzLoadBalancer PowerShell コマンドの詳細をご覧ください。
az network lb create \
--resource-group $RESOURCEGROUPNAME \
--name $LBNAME \
--sku $LBSKU \
--backend-pool-name $LBBEPOOLNAME \
--frontend-ip-name $LBFENAME \
--public-ip-address $PUBLICIPNAME
HTTP 用の Azure Load Balancer 正常性プローブを作成する
az network lb probe create Azure CLI および Add-AzLoadBalancerProbeConfig PowerShell コマンドの詳細をご覧ください。
az network lb probe create \
--resource-group $RESOURCEGROUPNAME \
--lb-name $LBNAME \
--name http \
--protocol http \
--port 80 \
--path /
HTTP 用の Azure Load Balancer 正常性プローブを作成する
注意
これは、Standard Load Balancer SKU でのみサポートされます。
if [ "$LBSKU" = "Standard" ]; then
az network lb probe create \
--resource-group $RESOURCEGROUPNAME \
--lb-name $LBNAME \
--name https \
--protocol https \
--port 443 \
--path /
fi
バックエンド ポート 22 を使用して受信 NAT プールを作成する
az network lb inbound-nat-pool create Azure CLI および Add-AzLoadBalancerInboundNatPoolConfig PowerShell コマンドの詳細をご覧ください。
az network lb inbound-nat-pool create \
--resource-group $RESOURCEGROUPNAME \
--name $LBNATPOOLNAME \
--backend-port 22 \
--frontend-port-range-start $LBFEPORTRANGESTART \
--frontend-port-range-end $LBFEPORTRANGEEND \
--lb-name $LBNAME \
--frontend-ip-name $LBFENAME \
--protocol Tcp
ポート 80 の負荷分散受信規則を作成する
az network lb rule create Azure CLI および Add-AzLoadBalancerRuleConfig PowerShell コマンドの詳細をご覧ください。
az network lb rule create \
--resource-group $RESOURCEGROUPNAME \
--name $LBRULEHTTPNAME \
--lb-name $LBNAME \
--protocol tcp \
--frontend-port 80 \
--backend-port 80 \
--probe http \
--frontend-ip-name $LBFENAME \
--backend-pool-name $LBBEPOOLNAME
ポート 443 の負荷分散受信規則を作成する
注意
これは、Standard Load Balancer SKU でのみサポートされます。
if [ "$LBSKU" = "Standard" ]; then
az network lb rule create \
--resource-group $RESOURCEGROUPNAME \
--name $LBRULEHTTPSNAME \
--lb-name $LBNAME \
--protocol tcp \
--frontend-port 443 \
--backend-port 443 \
--probe https \
--frontend-ip-name $LBFENAME \
--backend-pool-name $LBBEPOOLNAME
fi
Azure Resource Manager テンプレート
この Azure Resource Manager (ARM) テンプレートは、Azure 仮想ネットワークと Azure Load Balancer をデプロイするサンプル テンプレートです。 ロード バランサー用の受信パブリック IP アドレス、HTTP および HTTPS 用の Azure Load Balancer 正常性プローブ、バックエンド ポート 22 を使用する受信 NAT プール、ポート 80 の負荷分散受信規則も作成されます。
Azure Load Balancer Basic を使用してネットワーク リソースをデプロイするには次のボタンをクリックします。
Azure Load Balancer Standard を使用してネットワーク リソースをデプロイするには次のボタンをクリックします。
Azure Portal
Azure portal を使用した Azure Load Balancer SKU の作成方法については、「Azure portal を使用して Basic Load Balancer を作成する」および「Azure Portal を使用して VM の負荷を分散する Standard Load Balancer を作成する」をご覧ください。
Hashicorp Terraform
Azure 仮想ネットワークと Azure Load Balancer をデプロイする 2 つのサンプル テンプレートが用意されています。これらを使用すると、ロード バランサー用の受信パブリック IP アドレス、HTTP および HTTPS 用の Azure Load Balancer 正常性プローブ、バックエンド ポート 22 を使用する受信 NAT プール、ポート 80 の負荷分散受信規則も作成されます。 これらの主な違いは、こちらの Hashicorp Terraform の Azure プロバイダー テンプレートでは Basic Azure Load Balancer がデプロイされ、こちらの Hashicorp Terraform の Azure プロバイダー テンプレートでは **Standard ** Azure Load Balancer がデプロイされることです。 使用されるコマンドについて詳しくは、次の資料をご覧ください。
- azurerm_virtual_network を使用して Azure 仮想ネットワークを作成する
- azurerm_public_ip を使用してロード バランサーの受信パブリック IP アドレスを作成する
- azurerm_lb_rule を使用して Azure Load Balancer を作成する
- azurerm_lb_probe を使用して HTTP 用の Azure Load Balancer 正常性プローブを作成する
- azurerm_lb_nat_pool を使用して受信 NAT プールを作成する
- azurerm_lb_rule を使用して受信規則を作成する
6. Azure Cache for Redis をデプロイする
Azure Cache for Redis は、人気のあるソフトウェア Redis に基づいています。 通常は、バックエンド データストアに大きく依存するシステムのパフォーマンスとスケーラビリティを向上させるために、キャッシュとして使用されます。
Azure Cache for Redis の作成に使用される方法に関係なく、Azure Portal のリソース グループ内を見ると、次のようになっています。 作成される追加リソースは、キャッシュ自体だけです。
Azure Cache for Redis のデプロイに要する時間は合計で 30 分未満です。
Azure CLI を使用したコマンド ライン アプローチ
前に定義した変数の上に、次の変数も使用されます。
変数 | 既定値 | 小規模構成 | 中規模構成 | 大規模構成 | 説明 |
---|---|---|---|---|---|
REDISNAME | PREFIX + Redis | Azure Cache for Redis 名。 | |||
REDISNAMEUNIQUE | REDISNAME + [Random number] | 重要: Azure Cache for Redis の名前は、すべての Azure のお客様の間で完全に一意である必要があります。 したがって、スクリプトではランダム ジェネレーターが使用されます。 | |||
REDISVMSIZE | C1 | C3 | C4 | P4 | Basic/Standard (C0、C1、C2、C3、C4、C5、C6)、Premium (P1、P2、P3、P4、P5) |
REDISSKU | Standard | 標準 | Standard | Premium | Basic – 単一ノード、複数サイズ。開発/テストおよび重要度の低いワークロードに最適です。 Basic レベルに SLA はありません。 Standard – Microsoft によって管理される 2 ノードのプライマリ/セカンダリ構成のレプリケートされたキャッシュで、高可用性 SLA が含まれます。 Premium – 新しい Premium レベルには、Standard レベルのすべての機能に加えて、Basic または Standard レベルのキャッシュに比べて高いパフォーマンス、より大きなワークロード、データの永続性、強化されたネットワーク セキュリティなどが含まれています。 |
REDISSHARDSTOCREATE | 注: Premium SKU のみ | 注: Premium SKU のみ | 10 | クラスターあたりのシャード数。 | |
REDISSUBNETNAME | 注: Premium SKU のみ | 注: Premium SKU のみ | REDISNAME + Subnet | Azure Cache for Redis インスタンスが Azure 仮想ネットワークで構成されている場合は、パブリックにアドレス指定することはできず、Azure 仮想ネットワーク内の仮想マシンとアプリケーションからのみアクセスできます。 詳細を確認してください。 | |
REDISSUBNETADDRESSPREFIX | 注: Premium SKU のみ | 注: Premium SKU のみ | 10.0.1.0/24 | 重要: Azure Cache for Redis を Azure 仮想ネットワークにデプロイする場合、キャッシュは、Azure Cache for Redis インスタンスを除く他のリソースが含まれていない専用サブネット内にある必要があります。 | |
SUBNETID | 注: Premium SKU のみ | 注: Premium SKU のみ | SUBNETID | 注: 完全な文字列が必要です。 |
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、Azure Cache for Redis のデプロイの各部分を理解するために、完全な Bash 6-create-redis.sh または Windows Batch 6-create-redis.bat Azure CLI スクリプト、または 6-create-redis.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
変数を初期化する
名前付け規則に準拠している場合に限り、Azure Cache for Redis 名とサブネット名に独自性を持たせることができます。 myGameBackendRedis1234 は、Azure Cache for Redis に名前を付ける方法の一例です。 残りの変数には、想定される値の特定のセットを入力する必要があります。
export RANDOMNUMBER=`head -200 /dev/urandom | cksum | cut -f2 -d " "`
export REDISNAME=${PREFIX}Redis
export REDISNAMEUNIQUE=${REDISNAME}${RANDOMNUMBER}
export REDISVMSIZE=C1
export REDISSKU=Standard
export REDISSHARDSTOCREATE=2
export VNETNAME=${PREFIX}VNET
export REDISSUBNETNAME=${REDISNAME}Subnet
export REDISSUBNETADDRESSPREFIX=10.0.1.0/24
export SUBNETID=/subscriptions/${YOURSUBSCRIPTIONID}/resourceGroups/${RESOURCEGROUPNAME}/providers/Microsoft.Network/virtualNetworks/${VNETNAME}/subnets/${REDISSUBNETNAME}
cache という名前の特定のサブネットを作成する
注意
これは、Premium Azure Cache for Redis SKU でのみサポートされます。
az network vnet subnet create \
--resource-group $RESOURCEGROUPNAME \
--vnet-name $VNETNAME \
--name $REDISSUBNETNAME \
--address-prefixes $REDISSUBNETADDRESSPREFIX
Azure Cache for Redis を作成する
az redis create Azure CLI と New-AzRedisCache PowerShell コマンドの詳細をご覧ください。
if [ "$REDISSKU" = "Standard" ]; then
az redis create \
--resource-group $RESOURCEGROUPNAME \
--name $REDISNAMEUNIQUE \
--location $REGIONNAME \
--sku $REDISSKU \
--vm-size $REDISVMSIZE /
fi
if [ "$REDISSKU" = "Premium" ]; then
az redis create \
--resource-group $RESOURCEGROUPNAME \
--name $REDISNAMEUNIQUE \
--location $REGIONNAME \
--sku $REDISSKU \
--vm-size $REDISVMSIZE \
--shard-count $REDISSHARDSTOCREATE \
--subnet-id $SUBNETID /
fi
注意
Standard プランと Premium プランの主な違いは、クラスターを設定し、Azure 仮想ネットワークの内側にあるキャッシュを保護できるようにする --shard-count
と --subnet-id
であることに注意してください。 これに関心がない場合は、削除してください。
キャッシュの詳細を取得する (hostName、enableNonSslPort、port、sslPort、primaryKey、secondaryKey)
az redis show \
--resource-group $RESOURCEGROUPNAME \
--name $REDISNAMEUNIQUE \
--query [hostName,enableNonSslPort,port,sslPort] \
--output tsv
az redis list-keys \
--resource-group $RESOURCEGROUPNAME \
--name $REDISNAMEUNIQUE \
--query [primaryKey,secondaryKey] \
--output tsv
Azure Resource Manager テンプレート
この Azure Resource Manager (ARM) テンプレートは、Azure Cache for Redis をデプロイするサンプル テンプレートです。
Azure Portal
Azure Portal を使用して Azure Cache for Redis を作成するには、「キャッシュの作成」をご覧ください。 次に、Azure Cache for Redis インスタンスで使用可能な構成について説明している「Azure Cache for Redis の構成方法」をご覧ください。
Azure Portal を使用して、Premium Azure Cache for Redis インスタンスでクラスタリングを構成する方法について説明している「Premium Azure Cache for Redis の Redis クラスタリングの構成方法」をご覧ください。
Azure Portal を使用して、Premium Azure Cache for Redis で仮想ネットワーク サポートを構成する方法について説明している「Premium Azure Cache for Redis の Virtual Network のサポートを構成する方法」をご覧ください。
Hashicorp Terraform
この Hashicorp Terraform の Azure プロバイダー テンプレートは、Azure Cache for Redis をデプロイするサンプル テンプレートです。 使用されるコマンドについて詳しくは、以下の資料をご覧ください。
- azurerm_redis_cache を使用して Azure Cache for Redis を作成する
7. Azure Database for MySQL をデプロイする
Azure Database for MySQL は、オープンソースの MySQL サーバー エンジンに基づくリレーショナル データベース サービスです。 これは、予測可能なパフォーマンスと動的なスケーラビリティを備えたミッションクリティカルなワークロードを処理できるサービスとして完全に管理されているデータベースです。 読み取りレプリカを介して、そのまま使えるマスター/スレーブ構成がサポートされます。
Azure Cache for Redis の作成に使用される方法に関係なく、Azure Portal のリソース グループ内を見ると、次のようになっています。 作成される追加の公開リソースは、マスター データベース自体と 1 つまたは複数のレプリカ (作成した場合) だけになります。
Azure Database for MySQL マスターとレプリカのデプロイにかかる時間は、合計で 30 分未満です。
Azure CLI を使用したコマンド ライン アプローチ
前に定義した変数の上に、次の変数も使用されます。
変数 | 既定値 | 小規模構成 | 中規模構成 | 大規模構成 | 説明 |
---|---|---|---|---|---|
MYSQLNAME | PREFIX + MySQL | Azure Database for MySQL サーバーの名前。 | |||
MYSQLNAMELOWER | lowercase(MYSQLNAME) | 重要: Azure Database for MySQL のサーバー名はすべて小文字にする必要があります。 | |||
MYSQLNAMEUNIQUE | MYSQLNAMELOWER + [Random number] | 重要: Azure Cache for Redis の名前は、すべての Azure のお客様の間で完全に一意である必要があります。 したがって、スクリプトではランダム ジェネレーターが使用されます。 | |||
MYSQLUSERNAME | azuremysqluser | MySQL サーバーに接続するための管理者ユーザー名。 | |||
MYSQLPASSWORD | CHang3thisP4Ssw0rD | MySQL サーバーに接続するための管理者パスワード。 可能な限り堅牢なものになるように変更してください。 | |||
MYSQLDBNAME | gamedb | データベースの名前。 | |||
MYSQLBACKUPRETAINEDDAYS | 7 | 7 | 15 | 30 | バックアップの保有期間。 詳細を確認してください。 |
MYSQLGEOREDUNDANTBACKUP | Disabled | Disabled | 無効 | Enabled | 詳細を確認してください。 重要: バックアップ用にローカルの冗長ストレージまたは地理的冗長型ストレージを構成することは、サーバーの作成中にのみ許可されます。 サーバーがプロビジョニングされた後は、バックアップ ストレージの冗長性オプションを変更できません。 |
MYSQLSKU | GP_Gen5_2 | GP_Gen5_2 | GP_Gen5_8 | MO_Gen5_16 | 重要: SKU の種類とコアの数によっては、接続制限があります。 詳細を確認してください。 |
MYSQLSTORAGEMBSIZE | 51200 | 8192 | 4096000 | 8192000 | 領域と IOPS は、SKU および割り当てられたストレージ サイズによって異なります。 詳細を確認してください。 |
MYSQLVERSION | 5.7 | 5.7 | 5.7 | 5.7 | MySQL バージョン。 |
MYSQLREADREPLICANAME | MYSQLNAMEUNIQUE + Replica | MYSQLNAMEUNIQUE + Replica1 ... | レプリカ MySQL 名を読み取ります。 | ||
MYSQLREADREPLICAREGION | REGIONNAME | REGIONNAME | 読み取りレプリカがデプロイされる Azure リージョン。 | ||
MYSQLSUBNETNAME | MYSQLNAME + Subnet | データベースを含むサブネットの名前。 | |||
MYSQLSUBNETADDRESSPREFIX | 10.0.2.0/24 | 注: 汎用レベルまたはメモリ最適化レベルでのみサポートされます。 | |||
MYSQLRULENAME | MYSQLNAME + Rule | サブネット内で有効になっている規則の名前。 |
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、Azure Database for MySQL のデプロイの各部分を理解するために、完全な Bash 7-create-mysql.sh または Windows Batch 7-create-mysql.bat Azure CLI スクリプト、または 7-create-mysql.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
変数を初期化する
名前付け規則に準拠している場合に限り、Azure Database for MySQL マスターおよび読み取りレプリカ サーバー名、データベース名、サブネット名、管理者のユーザー名とパスワードに独自性を持たせることができます。 myGameBackendMySQL は、Azure Database for MySQL に名前を付ける方法の一例です。 残りの変数には、想定される値の特定のセットを入力する必要があります。
export RANDOMNUMBER=`head -200 /dev/urandom | cksum | cut -f2 -d " "`
export MYSQLNAME=${PREFIX}MySQL
export MYSQLNAMELOWER=${MYSQLNAME,,}
export MYSQLNAMEUNIQUE=${MYSQLNAMELOWER}${RANDOMNUMBER}
export MYSQLUSERNAME=azuremysqluser
export MYSQLPASSWORD=CHang3thisP4Ssw0rD
export MYSQLDBNAME=gamedb
export MYSQLBACKUPRETAINEDDAYS=7
export MYSQLGEOREDUNDANTBACKUP=Disabled
export MYSQLSKU=GP_Gen5_2
export MYSQLSTORAGEMBSIZE=51200
export MYSQLVERSION=5.7
export MYSQLREADREPLICANAME=${MYSQLNAMEUNIQUE}Replica
export MYSQLREADREPLICAREGION=westus
export MYSQLSUBNETNAME=${MYSQLNAME}Subnet
export MYSQLSUBNETADDRESSPREFIX=10.0.2.0/24
export MYSQLRULENAME=${MYSQLNAME}Rule
Azure CLI db-up 拡張機能 (プレビュー) を有効にする
az extension add --name db-up
サーバー、データベース、その他の日常的なタスクを作成する
注意
サーバーの作成に加えて、Azure CLI az mysql up
コマンドでは、サンプル データベース、データベース内のルート ユーザーを作成し、Azure サービスのファイアウォールを開き、クライアント コンピューターの既定のファイアウォール規則を作成します。 また、Azure Database for MySQL には PowerShell コマンドはまだありません。
az mysql up Azure CLI と New-AzResource PowerShell コマンドの詳細をご覧ください。
az mysql up \
--resource-group $RESOURCEGROUPNAME \
--server-name $MYSQLNAMEUNIQUE \
--admin-user $MYSQLUSERNAME \
--admin-password $MYSQLPASSWORD \
--backup-retention $MYSQLBACKUPRETAINEDDAYS \
--database-name $MYSQLDBNAME \
--geo-redundant-backup $MYSQLGEOREDUNDANTBACKUP \
--location $REGIONNAME \
--sku-name $MYSQLSKU \
--storage-size $MYSQLSTORAGEMBSIZE \
--version=$MYSQLVERSION
Azure Database for MySQL 仮想ネットワーク サービスのエンドポイントを作成して有効にする
az network vnet subnet create \
--resource-group $RESOURCEGROUPNAME \
--vnet-name $VNETNAME \
--name $MYSQLSUBNETNAME \
--service-endpoints Microsoft.SQL \
--address-prefix $MYSQLSUBNETADDRESSPREFIX
重要
Azure CLI を使用する場合、Microsoft.Sql は SQL Database という名前の Azure サービスを表しますが、このサービス タグは Azure SQL Database、Azure Database for PostgreSQL および MySQL サービスにも適用されます。 VNet サービス エンドポイントに Microsoft.Sql サービス タグを適用すると、サブネット上の Azure SQL Database、Azure Database for PostgreSQL、Azure Database for MySQL の各サーバーを含むすべての Azure Database サービスに対してサービス エンドポイント トラフィックが構成されることに注意してください。
PowerShell を使用する場合は、「Azure サービスを許可する」で、デプロイした Azure Database for MySQL に Azure サービスを接続できるようにする方法をご覧ください。
MySQL サーバーに仮想ネットワーク規則を作成してサブネットに関連付ける
az mysql server vnet-rule create Azure CLI コマンドの詳細をご覧ください。
az mysql server vnet-rule create \
--resource-group $RESOURCEGROUPNAME \
--server-name $MYSQLNAMEUNIQUE \
--vnet-name $VNETNAME \
--subnet $MYSQLSUBNETNAME \
--name $MYSQLRULENAME
MySQL サーバーをソース (マスター) として使用して読み取りレプリカを作成する
az mysql server replica create Azure CLI コマンドの詳細をご覧ください。
az mysql server replica create \
--resource-group $RESOURCEGROUPNAME \
--name $MYSQLREADREPLICANAME \
--source-server $MYSQLNAMEUNIQUE \
--location $MYSQLREADREPLICAREGION
Azure Resource Manager テンプレート
この Azure Resource Manager (ARM) テンプレートは、Azure Database for MySQL サーバー、"Number Of Replica" パラメーターに基づくレプリカの数、サンプル データベースをデプロイするサンプル テンプレートです。 また、Azure Database for MySQL 仮想ネットワーク サービスのエンドポイントを作成して有効にし、MySQL サーバーに仮想ネットワーク規則を作成してサブネットに関連付けます。
Azure Portal
「Azure portal を使用して Azure Database for MySQL データベースを設計する」を参照して、サーバーの作成と管理、ファイアウォールの構成、データベースのセットアップの方法をご確認ください。
「Azure Portal を使用した Azure Database for MySQL の読み取りレプリカを作成し、管理する方法」を参照し、Azure Portal を使用して Azure Database for MySQL サービスで読み取りレプリカを作成および管理する方法をご確認ください。
「Azure portal を使用して、Azure Database for MySQL VNet のサービス エンドポイントと VNet ルールを作成および管理する」を参照して、データベースのセキュリティ手法を有効にする方法をご確認ください。
Hashicorp Terraform
この Hashicorp Terraform の Azure プロバイダー テンプレートは、Azure Database for MySQL サーバーとサンプル データベースをデプロイするサンプル テンプレートです。 また、Azure Database for MySQL 仮想ネットワーク サービスのエンドポイントを作成して有効にし、MySQL サーバーに仮想ネットワーク規則を作成してサブネットに関連付けます。 現時点では、プロバイダーはレプリカの作成をサポートしていないため、他のデプロイ メカニズムを使用してその処理を行います。 使用されるコマンドについて詳しくは、以下の資料をご覧ください。
- azurerm_mysql_server を使用して Azure Database for MySQL サーバーを作成する
- azurerm_mysql_database を使用して Azure Database for MySQL データベースを作成する
8. Azure Storage アカウントとコンテナーを作成する
Azure Storage は、フラット ファイルの保存など、最新のデータ ストレージ シナリオ用の Microsoft のクラウド ストレージ ソリューションです。 Azure Storage は、データ オブジェクトのための高度にスケーラブルなオブジェクト ストア、クラウドのためのファイル システム サービス、信頼性の高いメッセージングのためのメッセージング ストア、および NoSQL ストアを提供します。
Azure Storage アカウントとコンテナーの作成に使用される方法に関係なく、Azure Portal のリソース グループ内を見ると、次のようになっています。 作成される追加の公開リソースは、Azure Storage 自体だけです。
Azure CLI を使用したコマンド ライン アプローチ
前に定義した変数の上に、次の変数も使用されます。
変数 | 既定値 | 小規模構成 | 中規模構成 | 大規模構成 | 説明 |
---|---|---|---|---|---|
STORAGENAME | PREFIX + STRG | ストレージ アカウントの名前。 | |||
STORAGENAMELOWER | lowercase(STORAGENAME) | 重要: ストレージ アカウントの名前はすべて小文字にする必要があります。 | |||
STORAGENAMEUNIQUE | STORAGENAMELOWER + [Random number] | 重要: ストレージ アカウントの名前は、すべての Azure のお客様の間で完全に一意である必要があります。 したがって、スクリプトではランダム ジェネレーターが使用されます。 | |||
STORAGESKU | Standard_LRS | Standard_LRS | Premium_LRS | Premium_LRS | セットアップするストレージ SKU (Standard、Premium、または Ultra)。 |
STORAGECONTAINERNAME | %STORAGENAMELOWER%cntnr | BLOB は、コンテナー内に格納する必要があります。 | |||
STORAGESUBNETNAME | STORAGENAME + Subnet | ストレージ アカウントを含むサブネットの名前。 | |||
STORAGESUBNETADDRESSPREFIX | 10.0.3.0/24 | サブネット アドレス。 | |||
STORAGERULENAME | STORAGENAME + Rule | サブネット内で有効になっている規則の名前。 |
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、Azure Storage およびコンテナーのデプロイの各部分を理解するために、完全な Bash 8-create-storage.sh または Windows Batch 8-create-storage.bat Azure CLI スクリプト、または 8-create-storage.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
変数を初期化する
名前付け規則に準拠している場合に限り、Azure Storage アカウント名とコンテナー名に独自性を持たせることができます。 mygamebackendstrg1234 は、Azure Storage アカウントに名前を付ける方法の一例です。 残りの変数には、想定される値の特定のセットを入力する必要があります。
export RANDOMNUMBER=`head -200 /dev/urandom | cksum | cut -f2 -d " "`
export STORAGENAME=${PREFIX}STRG
export STORAGENAMELOWER=${STORAGENAME,,}
export STORAGENAMEUNIQUE=${STORAGENAMELOWER}${RANDOMNUMBER}
export STORAGESKU=Standard_LRS
export STORAGECONTAINERNAME=${STORAGENAMELOWER}cntnr
export STORAGESUBNETNAME=${STORAGENAME}+'Subnet'
export STORAGESUBNETADDRESSPREFIX='10.0.3.0/24'
export STORAGERULENAME=${STORAGENAME}+'Rule'
ストレージ アカウントを作成する
az storage account create Azure CLI と New-AzStorageAccount PowerShell コマンドの詳細をご覧ください。
az storage account create \
--resource-group $RESOURCEGROUPNAME% \
--name $STORAGENAMEUNIQUE \
--sku $STORAGESKU \
--location $REGIONNAME
ストレージ アカウントから接続文字列を取得する
export STORAGECONNECTIONSTRING=`az storage account show-connection-string -n $STORAGENAMEUNIQUE -g $RESOURCEGROUPNAME --query connectionString -o tsv`
ストレージ アカウントにストレージ コンテナーを作成する
az storage container create Azure CLI と New-AzRmStorageContainer PowerShell コマンドの詳細をご覧ください。
az storage container create \
--name $STORAGECONTAINERNAME \
--connection-string $STORAGECONNECTIONSTRING
仮想ネットワークとサブネットで Azure Storage のサービス エンドポイントを有効にする
az network vnet subnet create \
--resource-group $RESOURCEGROUPNAME% \
--vnet-name $VNETNAME \
--name $STORAGESUBNETNAME \
--service-endpoints Microsoft.Storage \
--address-prefix $STORAGESUBNETADDRESSPREFIX
仮想ネットワークとサブネットのネットワーク規則を追加する
az storage account network-rule add Azure CLI と Add-AzStorageAccountNetworkRule PowerShell コマンドの詳細をご覧ください。
$STORAGESUBNETID=`az network vnet subnet show --resource-group $RESOURCEGROUPNAME --vnet-name $VNETNAME --name $STORAGESUBNETNAME --query id --output tsv`
az storage account network-rule add --resource-group $RESOURCEGROUPNAME --account-name $STORAGENAMEUNIQUE --subnet $STORAGESUBNETID
Azure Resource Manager テンプレート
この ARM テンプレートは、Azure Storage アカウントをデプロイし、ストレージ コンテナーをストレージ アカウントに作成して、仮想ネットワークとサブネット上で Azure Storage のサービス エンドポイントを有効にし、仮想ネットワークとサブネットのネットワーク規則を追加するサンプル テンプレートです。 ストレージ アカウントから接続文字列を取得し、"Output" フィールドに出力します。
Azure Portal
Azure Portal を使用して Azure Storage アカウントを作成する方法を示す「ストレージ アカウントの作成」をご覧ください。
Azure portal 内でストレージ コンテナーを作成する方法を示す「コンテナーを作成する」をご覧ください。
Hashicorp Terraform
この Hashicorp Terraform の Azure プロバイダー テンプレートは、Azure Storage アカウントをデプロイし、仮想ネットワークおよびサブネット上で Azure Storage のサービス エンドポイントを有効にして、仮想ネットワークとサブネットのネットワーク規則を追加するサンプル テンプレートです。現時点で、プロバイダーには、ストレージ アカウントにストレージ コンテナーを作成する際のバグがあるため、他のデプロイ メカニズムを使用して処理してください。 使用されるコマンドについて詳しくは、以下の資料をご覧ください。
- azurerm_storage_account を使用して Azure Storage アカウントを作成する
- azurerm_storage_container を使用して Azure Storage アカウント内にコンテナーを作成する
9. 仮想マシン スケール セットを作成する
仮想マシン スケール セットを使用すると、同一の自動スケーリング仮想マシンのセットをデプロイおよび管理できます。
スケール セットには、最新のスケール セット モデルによって VM を最新の状態にする方法を決定する "アップグレード ポリシー" があります。 アップグレード ポリシーには次の 3 つのモードがあります。
- Automatic - このモードでは、VM が停止される順序がスケール セットによって保証されません。 スケール セットによって、すべての VM が同時に停止される可能性があり、ダウンタイムが発生する原因となります。
- Manual - このモードでは、スケール セット モデルを更新しても、既存の VM には何も発生しません。 インスタンスの数が多く、更新プログラムを処理する自動化がない場合には、この方法は最適ではありません。
- Rolling - このモードでは、スケール セットによって更新が一括でロールアウトされ、バッチ間にオプションの一時停止時間があります。 Rolling アップグレードでは、一度にスケール セットのインスタンスの一部のみが更新されるため、ゲームでは、バックエンド サーバーのサブセットが古いバージョンを実行し、同時に残りのバックエンド サーバーが最新で、最終的にはすべてのサーバーが最新の状態になるという状況を処理できるよう備えておく必要があります。 Rolling アップグレードを行うには、正常性プローブが仮想マシン スケール セットとすべての仮想マシン インスタンスに関連付けられている必要があります。
ヒント
実稼働環境に移行した後で、Rolling ポリシー アップグレードに切り替えることをお勧めします。
Azure 仮想マシン スケール セットの作成に使用される方法に関係なく、Azure Portal のリソース グループ内を見ると、次のようになっています。 作成される追加の公開リソースは、スケール セット自体だけです。
Azure CLI を使用したコマンド ライン アプローチ
前に定義した変数の上に、次の変数も使用されます。
変数 | 既定値 | 小規模構成 | 中規模構成 | 大規模構成 | 説明 |
---|---|---|---|---|---|
VMSSNAME | PREFIX + VMSS | スケール セットの名前。 | |||
VMSSSKUSIZE | Standard_B1s | Standard_B1s | Standard_F16s_v2 | Standard_F32s_v2 | セットアップする SKU (Standard、Premium、または Ultra)。 |
VMSSVMTOCREATE | 2 | 2 | 20 | 50 | スケール セットの作成時にデプロイされる仮想マシン インスタンスの数。 |
VMSSSTORAGESKU | Standard_LRS | Standard_LRS | Premium_LRS | Premium_LRS | セットアップするストレージ SKU (Standard、Premium、または Ultra)。 |
VMSSACELERATEDNETWORKING | false | false | true | true | 加速されたネットワークのメリットについて詳しくは、こちらをご覧ください。 |
VMSSUPGRADEPOLICY | Manual | Manual | Rolling | Rolling | Manual、Automatic または Rolling。 上で説明しています。 |
HEALTHPROBEID | 正常性プローブ ID を使用する | 正常性プローブ ID を使用する | Rolling アップグレード モードの場合は必須です。 |
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、Azure Storage およびコンテナーのデプロイの各部分を理解するために、完全な Bash 9-create-vmss.sh または Windows Batch 9-create-vmss.bat Azure CLI スクリプト、または 9-create-vmss.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
変数を初期化する
名前付け規則に準拠している場合に限り、Azure 仮想マシン スケール セット名に独自性を持たせることができます。 myGameBackendVMSS はその例です。 残りの変数には、想定される値の特定のセットを入力する必要があります。
export VMSSNAME=${PREFIX}VMSS
export GOLDENIMAGENAME=myGoldenImage
export VMSSSKUSIZE=Standard_B1s
export VMSSVMTOCREATE=2
export VMSSSTORAGESKU=Premium_LRS
export VMSSACELERATEDNETWORKING=false
export VMSSUPGRADEPOLICY=Manual
export HEALTHPROBEID=/subscriptions/${YOURSUBSCRIPTIONID}/resourceGroups/${RESOURCEGROUPNAME}/providers/Microsoft.Network/loadBalancers/${LBNAME}/probes/http
export VMSSOVERPROVISIONING=--disable-overprovision
スケール セットを作成する
az-vmss-create Azure CLI と New-AzVmss PowerShell コマンドの詳細をご覧ください。
az vmss create \
--resource-group $RESOURCEGROUPNAME \
--name $VMSSNAME \
--image $GOLDENIMAGENAME \
--upgrade-policy-mode $VMSSUPGRADEPOLICY \
--load-balancer $LBNAME \
--lb-sku $LBSKU \
--vnet-name $VNETNAME \
--subnet $SUBNETNAME \
--admin-username $LOGINUSERNAME \
--instance-count $VMSSVMTOCREATE \
--backend-pool-name $LBBEPOOLNAME \
--storage-sku $VMSSSTORAGESKU \
--vm-sku $VMSSSKUSIZE \
--lb-nat-pool-name $LBNATPOOLNAME \
--accelerated-networking $VMSSACELERATEDNETWORKING \
--generate-ssh-keys $VMSSOVERPROVISIONING
スケール セットのアップグレード ポリシーを確認する
az vmss show \
--resource-group $RESOURCEGROUPNAME \
--name $VMSSNAME \
--query upgradePolicy
ロード バランサーの正常性プローブをスケール セットに関連付ける
az vmss update Azure CLI コマンドの詳細をご覧ください。
az vmss update \
--resource-group $RESOURCEGROUPNAME \
--name $VMSSNAME \
--query virtualMachineProfile.networkProfile.healthProbe \
--set virtualMachineProfile.networkProfile.healthProbe.id='${HEALTHPROBEID}'
スケール セットからすべてのインスタンスを更新する
az vmss update-instances Azure CLI コマンドの詳細をご覧ください。
az vmss update-instances \
--resource-group $RESOURCEGROUPNAME \
--name $VMSSNAME \
--instance-ids *
Rolling アップグレード モードに切り替える
az vmss update \
--resource-group $RESOURCEGROUPNAME \
--name $VMSSNAME \
--query upgradePolicy \
--set upgradePolicy.mode=Rolling
Azure Resource Manager テンプレート
この ARM テンプレートは、Azure 仮想マシン スケール セットをデプロイし、ロード バランサーの正常性プローブをスケール セットに関連付けるサンプル テンプレートです。
Azure Portal
Azure Portal を使用して VM スケール セットをデプロイする方法については、「Azure Portal での仮想マシン スケール セットの作成」をご覧ください。
Hashicorp Terraform
この Hashicorp Terraform の Azure プロバイダー テンプレートは、Azure 仮想マシン スケール セットをデプロイし、ロード バランサーの正常性プローブをスケール セットに関連付けるサンプル テンプレートです。 ロード バランサー NAT プールへの Azure 仮想マシン スケール セット インスタンスのマッピングはありません。 使用されるコマンドについて詳しくは、以下の資料をご覧ください。
- azurerm_virtual_machine_scale_set を使用して Azure 仮想マシン スケール セットを作成する
10. 自動スケーラーを作成する
スケール セット内の仮想マシン インスタンスのパフォーマンスを監視します。 これらの自動スケール ルールは、これらのパフォーマンス メトリックに対応して仮想マシン インスタンス数を増減します。
自動スケーラーの作成に使用する方法に関係なく、[非表示の型の表示] チェックボックスをオンにしない限り、リソース グループ内に直接公開されるリソースは表示されません。 有効にすると、自動スケーラーは次のように表示されます。
Azure CLI を使用したコマンド ライン アプローチ
前に定義した変数の上に、次の変数も使用されます。
変数 | 既定値 | 小規模構成 | 中規模構成 | 大規模構成 | 説明 |
---|---|---|---|---|---|
VMSSAUTOSCALERNAME | PREFIX + Autoscaler | 自動スケーラーの名前。 | |||
VMSSAUTOSCALERCRITERIA | Percentage CPU | Percentage CPU | Percentage CPU | Percentage CPU | 自動スケーラーをトリガーするために使用される一般的な条件。 詳細を確認してください。 |
VMSSAUTOSCALERMAXCOUNT | 10 | 10 | 15 | 40 | スケール セットの一部となる仮想マシンの最大数。 この数に達すると、自動スケーラーはそれ以上の作成を行いません。 |
VMSSAUTOSCALERMINCOUNT | 2 | 2 | 10 | 20 | スケール セットの一部となる仮想マシンの最小数。 この数に達すると、自動スケーラーはそれ以上オフに切り替えません。 通常は VMSSVMTOCREATE と一致します。 |
VMSSAUTOSCALERUPTRIGGER | 50 avg 5m | 50 avg 5m | 50 avg 5m | 50 avg 5m | スケール アウト操作をトリガーする条件。 ベストプラクティスの詳細を確認してください。 |
VMSSAUTOSCALERDOWNTRIGGER | 30 avg 5m | 30 avg 5m | 30 avg 5m | 30 avg 5m | スケール イン操作をトリガーする条件。 ベストプラクティスの詳細を確認してください。 |
VMSSAUTOSCALEROUTINCREASE | 1 | 1 | 2 | 3 | スケール アウト要求がトリガーされたときに、スケール セットに追加される新しいインスタンスの数。 |
VMSSAUTOSCALERINDECREASE | 1 | 1 | 2 | 3 | スケール イン要求がトリガーされたときに、スケール セットから削除されるインスタンスの数。 |
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、Azure Storage およびコンテナーのデプロイの各部分を理解するために、完全な Bash 10-create-autoscaler.sh または Windows Batch 10-create-autoscaler.bat Azure CLI スクリプト、または 10-create-autoscaler.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
変数を初期化する
名前付け規則に準拠している場合に限り、自動スケーラー名に独自性を持たせることができます。 myGameBackendAutoscaler はその例です。 残りの変数には、想定される値の特定のセットを入力する必要があります。
export VMSSAUTOSCALERNAME=${PREFIX}Autoscaler
export VMSSAUTOSCALERCRITERIA=Percentage CPU
export VMSSAUTOSCALERMAXCOUNT=10
export VMSSAUTOSCALERMINCOUNT=$VMSSVMTOCREATE
export VMSSAUTOSCALERUPTRIGGER=50 avg 5m
export VMSSAUTOSCALERDOWNTRIGGER=30 avg 5m
export VMSSAUTOSCALEROUTINCREASE=1
export VMSSAUTOSCALERINDECREASE=1
自動スケーリング プロファイルを定義する
az monitor autoscale create Azure CLI コマンドの詳細をご覧ください。
az monitor autoscale create \
--resource-group $RESOURCEGROUPNAME \
--resource $VMSSNAME \
--resource-type Microsoft.Compute/virtualMachineScaleSets \
--name $VMSSAUTOSCALERNAME \
--min-count $VMSSAUTOSCALERMINCOUNT \
--max-count $VMSSAUTOSCALERMAXCOUNT \
--count $VMSSVMTOCREATE
仮想マシンの自動スケーラーでスケール アウトを有効にする
az monitor autoscale rule create Azure CLI と New-AzAutoscaleRule PowerShell コマンドの詳細をご覧ください。
az monitor autoscale rule create \
--resource-group $RESOURCEGROUPNAME \
--autoscale-name $VMSSAUTOSCALERNAME \
--condition "${VMSSAUTOSCALERCRITERIA} > ${VMSSAUTOSCALERUPTRIGGER}" \
--scale out $VMSSAUTOSCALEROUTINCREASE
仮想マシンの自動スケーラーでスケール インを有効にする
az monitor autoscale rule create \
--resource-group $RESOURCEGROUPNAME \
--autoscale-name $VMSSAUTOSCALERNAME \
--condition "${VMSSAUTOSCALERCRITERIA} < ${VMSSAUTOSCALERDOWNTRIGGER}" \
--scale in $VMSSAUTOSCALERINDECREASE
Azure Resource Manager テンプレート
この ARM テンプレートは、自動スケーリング プロファイルを定義し、スケール アウトのために仮想マシン スケール セットで Azure 仮想マシン自動スケールを有効にして、スケール インのために仮想マシン スケール セットで自動スケールを有効にするサンプル テンプレートです。
Azure Portal
Azure Portal で自動スケール ルールを作成する方法を示している「Azure Portal で仮想マシン スケール セットを自動的にスケーリングする」をご覧ください。
Hashicorp Terraform
この Hashicorp Terraform の Azure プロバイダー テンプレートは、自動スケーリング プロファイルを定義し、スケール アウトのために仮想マシン スケール セットで Azure 仮想マシン自動スケールを有効にして、スケール インのために仮想マシン スケール セットで自動スケールを有効にするサンプル テンプレートです。 使用されるコマンドについて詳しくは、以下の資料をご覧ください。
- azurerm_autoscale_setting を使用して自動スケーリング プロファイルを定義する
11. DDoS 攻撃に対する保護を有効にする
分散型サービス拒否 (DDoS) 攻撃は、バックエンドをクラウドに移行するゲーム スタジオが直面している可用性とセキュリティの最大の問題の一部です。 DDoS Protection Standard では、仮想マシンとロード バランサーに関連付けられたパブリック IP アドレスなど、仮想ネットワーク内のリソースを保護します。 詳細を確認してください。
Azure CLI を使用したコマンド ライン アプローチ
前に定義した変数の上に、次の変数も使用されます。
変数 | 既定値 | 説明 |
---|---|---|
DDOSPROTECTIONNAME | PREFIX + DdosPlan | DDoS Standard Protection プランの名前。 |
変数を初期化する
export DDOSPROTECTIONNAME=${PREFIX}DdosPlan
DDoS 保護プランを作成する
az network ddos-protection create Azure CLI および New-AzDdosProtectionPlan PowerShell コマンドの詳細をご覧ください。
az network ddos-protection create \
--resource-group $RESOURCEGROUPNAME \
--name $DDOSPROTECTIONNAME \
--vnets $VNETNAME
仮想ネットワーク上で DDoS Standard プランを有効にする
az network vnet update \
--resource-group $RESOURCEGROUPNAME \
--name $VNETNAME \
--ddos-protection true \
--ddos-protection-plan $DDOSPROTECTIONNAME
Azure Resource Manager テンプレート
この ARM テンプレートは、DDoS Protection プランを作成し、仮想ネットワーク上で DDoS Standard プランを有効にするサンプル テンプレートです。
Azure Portal
Azure Portalを使用して AzureDDoS Standard Protection を有効にする方法については、「Azure Portal を使用した Azure DDoS Protection Standard の管理」をご覧ください。
Hashicorp Terraform
この Hashicorp Terraform の Azure プロバイダー テンプレートは、DDoS Protection プランを作成し、仮想ネットワーク上で DDoS Standard プランを有効にするサンプル テンプレートです。 使用されるコマンドについて詳しくは、以下の資料をご覧ください。
- azurerm_network_ddos_protection_plan を使用して Azure DDoS Protection プランを有効にする
12. 仮想マシン スケール セットから仮想マシン インスタンスを更新する
このドキュメントでは、多数の PHP ファイルをリモートの仮想マシン インスタンスにアップロードするための簡単な方法について説明します。 Azure DevOps のような、より高度なシステムを使用することもできます。その場合は、「Azure 仮想マシン スケール セットへのアプリケーションのデプロイ」や「Azure DevOps を使用した仮想マシンへの Web アプリケーションのデプロイ」など、いくつかの優れたドキュメントを使用して始めることができます。
Azure CLI を使用したコマンド ライン アプローチ
前に定義した変数の上に、次の変数も使用されます。
変数 | 既定値 | 説明 |
---|---|---|
BLOBSOURCEURI | app\package.tar.gz | PHP ファイルを含む圧縮ファイル (TAR GZIP) へのパス。 |
BLOBFILEDESTINATIONNAME | package.tar.gz | 宛先にある圧縮ファイルのファイル名。 |
SCRIPTUPDATESOURCEURI | scripts\update-app.sh | PHP ファイルをリモートで展開する bash スクリプトへのパス。 |
SCRIPTUPDATEFILEDESTINATIONAME | update-app.sh | 宛先にある更新スクリプト ファイルのファイル名。 |
DESTINATIONFOLDER | /var/www/html | PHP ファイルが展開されるディレクトリ。 |
SERVICETORESTART | apache2.service | PHP ファイルが展開された後に再起動するサービス。 |
ヒント
以下に記載されている個々のコマンドと実行順序に加えて、Azure Storage およびコンテナーのデプロイの各部分を理解するために、完全な Bash 12-update-app.sh または Windows Batch 12-update-app.bat Azure CLI スクリプト、または 12-update-app.ps1 PowerShell スクリプトをダウンロードし、必要に応じて調整して、時間を節約できます。
変数を初期化する
これらすべての変数を独自の値に設定できます。これらの変数が、予期されるソースと宛先のファイル/ディレクトリ名と一致していることだけ確認してください。
export BLOBSOURCEURI=./app/package.tar.gz
export BLOBFILEDESTINATIONNAME=package.tar.gz
export SCRIPTUPDATESOURCEURI=./scripts/update-app.sh
export SCRIPTUPDATEFILEDESTINATIONAME=update-app.sh
export DESTINATIONFOLDER=/var/www/html
export SERVICETORESTART=apache2.service
ストレージ アカウントから接続文字列を取得する
az storage account show-connection-string Azure CLI コマンドの詳細をご覧ください。
export STORAGECONNECTIONSTRING=`az storage account show-connection-string -n $STORAGENAME -g $RESOURCEGROUPNAME --query connectionString -o tsv`
アプリケーション ファイルと更新アプリケーション スクリプトの両方を BLOB ストレージにアップロードする
az storage blob upload Azure CLI コマンドの詳細をご覧ください。
az storage blob upload \
-c $STORAGECONTAINERNAME \
-f $BLOBSOURCEURI \
-n $BLOBFILEDESTINATIONNAME \
--connection-string $STORAGECONNECTIONSTRING
az storage blob upload \
-c $STORAGECONTAINERNAME \
-f $SCRIPTUPDATESOURCEURI \
-n $SCRIPTUPDATEFILEDESTINATIONAME \
--connection-string $STORAGECONNECTIONSTRING
アップロードされたファイルから URL を取得する
az storage blob url Azure CLI コマンドの詳細をご覧ください。
export BLOBURL=`az storage blob url -c $STORAGECONTAINERNAME -n $BLOBFILEDESTINATIONNAME -o tsv --connection-string $STORAGECONNECTIONSTRING`
export SCRIPTURL=`az storage blob url -c $STORAGECONTAINERNAME -n $SCRIPTUPDATEFILEDESTINATIONAME -o tsv --connection-string $STORAGECONNECTIONSTRING`
保護設定 JSON 文字列を作成する
これは、カスタム スクリプト拡張機能によって、ストレージ アカウントから 1 つまたは複数のファイルをダウンロードするために使用されます。 このコマンドの詳細
export STORAGEKEY=`az storage account keys list --account-name $STORAGENAME --resource-group $RESOURCEGROUPNAME --query [0].value --output tsv`
export PROTECTEDSETTINGS="{\"storageAccountName\":\"${STORAGENAME}\",\"storageAccountKey\":\"${STORAGEKEY}\"}"
export SETTINGS="{\"fileUris\":[\"${BLOBURL}\",\"${SCRIPTURL}\"],\"commandToExecute\":\"bash ${SCRIPTUPDATEFILEDESTINATIONAME} ${BLOBFILEDESTINATIONNAME} ${DESTINATIONFOLDER} ${SERVICETORESTART}\"}"
スケール セットから構成ファイルを更新する
az vmss extension set Azure CLI コマンドの詳細をご覧ください。
az vmss extension set \
--resource-group $RESOURCEGROUPNAME \
--vmss-name $VMSSNAME \
--publisher Microsoft.Azure.Extensions \
--name CustomScript \
--version 2.0 \
--settings $SETTINGS \
--force-update \
--protected-settings $PROTECTEDSETTINGS
スケール セットからすべてのインスタンスを更新する
これにより、次の更新ラウンドで、ストレージ アカウントにアップロードされたファイルが確実にダウンロードされてインストールされます。 このコマンドの詳細。
az vmss update-instances \
--instance-ids * \
--name $VMSSNAME \
--resource-group $RESOURCEGROUPNAME
Azure Resource Manager テンプレート
この ARM テンプレートは、一連の PHP ファイルをリモートの仮想マシン インスタンスにアップロードし、PHP ファイルをリモートで展開する bash スクリプトを実行するサンプル テンプレートです。
注意
完全な bash 12-update-app.sh または Windows Batch 12-update-app.bat Azure CLI スクリプト、または 12-update-app.ps1 PowerShell スクリプトとは異なり、テンプレートには BLOB ストレージへのファイルのアップロードは含まれていません。 初期化変数の実行、ストレージ アカウントからの接続文字列の取得、BLOB ストレージへのアプリケーション ファイルと更新アプリケーション スクリプトの両方のアップロード、アップロードされたファイルからの URL の取得、または BLOB ストレージへのファイルの手動アップロードを実行できます。
ファイル パスは <Blob Url>/app/package.tar.gz
と <Script Url>/scripts/update-app.sh
である必要があります。
Hashicorp Terraform
この Hashicorp Terraform の Azure プロバイダー テンプレートは、一連の PHP ファイルをリモートの仮想マシン インスタンスにアップロードし、PHP ファイルをリモートで展開する bash スクリプトを実行するサンプル テンプレートです。
アプリケーション レイヤー
- このクイックスタートでは、PHP アプリケーションを使用して Azure Database for MySQL に接続する方法について説明します。 SQL ステートメントを使用して、データベースのデータのクエリ、挿入、更新、削除を行う方法を示しています。 このトピックでは、PHP を使用した開発について理解しており、Azure Database for MySQL を初めて使用する人を想定しています。
- Retwis サンプルは、Redis Hello World です。 これは、Predis クライアントを使用して Redis と PHP で記述された最小限の Twitter スタイル ソーシャル ネットワーク クローンです。 ソース コードは、非常に単純で、さまざまな Redis データ構造体を同時に表示するように設計されています。
- GitHub で、Azure Storage 用の PHP クライアント ライブラリのソース コードを表示、ダウンロード、インストールします。
- PHP クライアント ライブラリを使用して記述された BLOB ストレージ サンプルを調べます。
まとめ
Azure での単一リージョンの LAMP アーキテクチャのデプロイに要する時間は、スクリプト (Bash または Windows Batch) または ARM デプロイ テンプレートを使用して、エンドツーエンドで 90 分未満です。 Azure Portal を使用すると、より長い時間がかかります。 デプロイされたアーキテクチャは、次の図のようになります。
この表は、このドキュメントで説明した手順で使用できるスクリプトとテンプレートの概要を示しています。