Infraestructura como código

En un escenario de producción, cree clústeres de Azure Service Fabric con plantillas de Resource Manager. Las plantillas de Resource Manager proporcionan un mayor control de las propiedades de los recursos y garantizan que disponga de un modelo coherente de recursos.

Las plantillas de ejemplo de Resource Manager están disponibles para Windows y Linux en los ejemplos de Azure de GitHub. Estas plantillas se pueden usar como punto de partida para crear la plantilla de clúster. Descargue las plantillas azuredeploy.json y azuredeploy.parameters.json y modifíquelas para satisfacer sus requisitos personalizados.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Para implementar las plantillas azuredeploy.json y azuredeploy.parameters.json que descargó anteriormente, use los siguientes comandos de la CLI de Azure:

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

Creación de un recurso con 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

Recursos de Service Fabric

Puede implementar aplicaciones y servicios en el clúster de Service Fabric mediante Azure Resource Manager. Consulte Administración de aplicaciones y servicios como recursos de Azure Resource Manager. Los siguientes son recursos específicos de la aplicación Service Fabric de procedimientos recomendados que incluir en los recursos de la plantilla de Resource Manager.

{
    "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')]"
}

Para implementar la aplicación con Azure Resource Manager, primero debe crear un archivo sfpkg (paquete de aplicación de Service Fabric). El siguiente script de Python es un ejemplo de cómo crear un 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()

Configuración de actualización automática del sistema operativo de la máquina virtual

La actualización de las máquinas virtuales es una operación iniciada por el usuario y se recomienda habilitar las actualizaciones automáticas de imágenes del conjunto de escalado de máquinas virtuales para la administración de revisiones del nodo de clúster de Service Fabric. La aplicación de orquestación de revisiones (POA) es una solución alternativa pensada para clústeres no hospedados en Azure. Aunque POA se puede usar en Azure, hospedarlo requiere más administración que simplemente habilitar las actualizaciones automáticas de imágenes del sistema operativo del conjunto de escalado. Estas son las propiedades de plantilla de Resource Manager del conjunto de escalado de máquinas virtuales para permitir la actualización automática del sistema operativo:

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

Al usar actualizaciones automáticas del sistema operativo con Service Fabric, la nueva imagen del sistema operativo se implementa en un dominio de actualización cada vez para mantener la alta disponibilidad de los servicios que se ejecutan en Service Fabric. Para utilizar las actualizaciones automáticas del sistema operativo en Service Fabric, el clúster debe estar configurado para utilizar el nivel de durabilidad Silver o superior.

Asegúrese de que la siguiente clave del Registro está establecida en false para impedir que los equipos host de Windows inicien actualizaciones no coordinadas: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU.

Establezca las siguientes propiedades de plantilla de conjunto de escalado de máquinas virtuales para deshabilitar Windows Update:

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

Configuración de actualizaciones del clúster de Service Fabric

Esta es la propiedad de la plantilla del clúster de Service Fabric para habilitar la actualización automática:

"upgradeMode": "Automatic",

Para actualizar manualmente el clúster, descargue la distribución cab/deb en una máquina virtual de clúster y, luego, invoque el siguiente comando de 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">

Pasos siguientes