コードとしてのインフラストラクチャ

運用環境のシナリオでは、Resource Manager テンプレートを使用して Azure Service Fabric クラスターを作成します。 Resource Manager テンプレートでは、制御できるリソースのプロパティが多く、一貫性のあるリソース モデルが保証されます。

Windows および Linux 用のサンプルの Resource Manager テンプレートは、GitHub の Azure サンプルで入手できます。 これらのテンプレートは、クラスター テンプレートの作成を始める際に使用できます。 azuredeploy.jsonazuredeploy.parameters.json をダウンロードし、独自の要件に合わせて編集します。

Note

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

上でダウンロードした azuredeploy.json テンプレートと azuredeploy.parameters.json テンプレートをデプロイするには、次の Azure CLI コマンドを使用します。

ResourceGroupName="sfclustergroup"
Location="westus"

az group create --name $ResourceGroupName --location $Location 
az deployment group create --name $ResourceGroupName  --template-file azuredeploy.json --parameters @azuredeploy.parameters.json

PowerShell を使用してリソースを作成する

$ResourceGroupName="sfclustergroup"
$Location="westus"
$Template="azuredeploy.json"
$Parameters="azuredeploy.parameters.json"

New-AzResourceGroup -Name $ResourceGroupName -Location $Location
New-AzResourceGroupDeployment -Name $ResourceGroupName -TemplateFile $Template -TemplateParameterFile $Parameters

Service Fabric のリソース

Azure Resource Manager を使用して、Service Fabric クラスターにアプリケーションとサービスを デプロイできます。 詳しくは、「アプリケーションとサービスを Azure Resource Manager のリソースとして管理する」をご覧ください。 以下に示すのは、Resource Manager テンプレートのリソースに含める Service Fabric アプリケーション固有のリソースのベスト プラクティスです。

{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

Azure Resource Manager を使用してアプリケーションをデプロイするには、最初に Service Fabric アプリケーション パッケージ sfpkg を作成する必要があります。 次の Python スクリプトは、sfpkg を作成する方法の例です。

# Create SFPKG that needs to be uploaded to Azure Storage Blob Container
microservices_sfpkg = zipfile.ZipFile(
    self.microservices_app_package_name, 'w', zipfile.ZIP_DEFLATED)
package_length = len(self.microservices_app_package_path)

for root, dirs, files in os.walk(self.microservices_app_package_path):
    root_folder = root[package_length:]
    for file in files:
        microservices_sfpkg.write(os.path.join(
            root, file), os.path.join(root_folder, file))

microservices_sfpkg.close()

仮想マシン OS の自動アップグレード構成

仮想マシンのアップグレードはユーザーが開始する操作です。Service Fabric クラスター ノードの更新プログラムの管理のために、仮想マシン スケール セットの自動イメージ アップグレードを有効にすることをお勧めします。 パッチ オーケストレーション アプリケーション (POA) は、Azure 以外でホストされているクラスターを対象とした別のソリューションです。 POA は Azure で使用できますが、これをホストするには、スケール セットの OS 自動イメージ アップグレードを単に有効にするよりも多くの管理が必要になります。 以下は、OS の自動アップグレードを有効にするための、仮想マシン スケール セット Resource Manager テンプレートのプロパティです。

"upgradePolicy": {
   "mode": "Automatic",
   "automaticOSUpgradePolicy": {
        "enableAutomaticOSUpgrade": true,
        "disableAutomaticRollback": false
    }
},

Service Fabric と OS の自動アップグレードを使用する場合、Service Fabric で実行されているサービスの高可用性を維持するために、新しい OS イメージは更新ドメインごとに 1 つずつロールアウトされます。 Service Fabric で OS の自動アップグレードを利用するには、クラスターが、Silver 以上の持続性層を使用するように構成されている必要があります。

次のレジストリ キーが false に設定されていることを確認して、調整されていない更新を Windows ホスト マシンが開始しないようにします。HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

次の仮想マシン スケール セット テンプレートのプロパティを設定して、Windows Update を無効にします。

"osProfile": {
        "computerNamePrefix": "{vmss-name}",
        "adminUsername": "{your-username}",
        "secrets": [],
        "windowsConfiguration": {
          "provisionVMAgent": true,
          "enableAutomaticUpdates": false
        }
      },

Service Fabric クラスターのアップグレード構成

以下は、自動アップグレードを有効にするための、Service Fabric クラスター テンプレートのプロパティです。

"upgradeMode": "Automatic",

クラスターを手動でアップグレードするには、cab/deb 配布をクラスター仮想マシンにダウンロードして、次の PowerShell を実行します。

Copy-ServiceFabricClusterPackage -Code -CodePackagePath <"local_VM_path_to_msi"> -CodePackagePathInImageStore ServiceFabric.msi -ImageStoreConnectionString "fabric:ImageStore"
Register-ServiceFabricClusterPackage -Code -CodePackagePath "ServiceFabric.msi"
Start-ServiceFabricClusterUpgrade -Code -CodePackageVersion <"msi_code_version">

次のステップ