Tutorial: Implementación de un clúster de Service Fabric con Windows una red virtual de AzureTutorial: Deploy a Service Fabric cluster running Windows into an Azure virtual network

Este tutorial es la primera parte de una serie.This tutorial is part one of a series. Con él puede aprender a implementar un clúster de Azure Service Fabric con Windows en una instancia de Azure Virtual Network y en un grupo de seguridad de red mediante PowerShell y una plantilla.You learn how to deploy an Azure Service Fabric cluster running Windows into an Azure virtual network and network security group by using PowerShell and a template. Cuando haya terminado, tendrá un clúster que se ejecuta en la nube en el que puede implementar aplicaciones.When you're finished, you have a cluster running in the cloud to which you can deploy applications. Para crear un clúster de Linux con la CLI de Azure, consulte Implementación de un clúster de Service Fabric de Linux en una red virtual de Azure.To create a Linux cluster that uses the Azure CLI, see Create a secure Linux cluster on Azure.

Este tutorial describe un escenario de producción.This tutorial describes a production scenario. Si desea crear un clúster menor para agilizar la prueba, consulte Creación de un clúster de prueba.If you want to create a smaller cluster for testing purposes, see Create a test cluster.

En este tutorial, aprenderá a:In this tutorial, you learn how to:

  • Crear una red virtual en Azure mediante PowerShellCreate a VNET in Azure using PowerShell
  • Creación de un almacén de claves y carga de un certificadoCreate a key vault and upload a certificate
  • Configuración de la autenticación de Azure Active DirectorySetup Azure Active Directory authentication
  • Configuración de la colección de diagnósticoConfigure diagnostics collection
  • Configuración del servicio EventStoreSet up the EventStore service
  • Configuración de los registros de Azure MonitorSet up Azure Monitor logs
  • Crear un clúster de Service Fabric seguro en Azure PowerShellCreate a secure Service Fabric cluster in Azure PowerShell
  • Protección del clúster con un certificado X.509Secure the cluster with an X.509 certificate
  • Conexión a un clúster con PowerShellConnect to the cluster using PowerShell
  • Eliminación de un clústerRemove a cluster

En esta serie de tutoriales, se aprende a:In this tutorial series you learn how to:

Nota

Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Aún puede usar el módulo de AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para más información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obtener instrucciones sobre la instalación del módulo Az, consulte Instalación de Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Requisitos previosPrerequisites

Antes de empezar este tutorial:Before you begin this tutorial:

Los siguientes procedimientos crean un clúster de Service Fabric de siete nodos.The following procedures create a seven-node Service Fabric cluster. Use la Calculadora de precios de Azure para calcular el costo producido por la ejecución de un clúster de Service Fabric en Azure.Use the Azure Pricing Calculator to calculate cost incurred by running a Service Fabric cluster in Azure.

Descarga y exploración de la plantillaDownload and explore the template

Descargue los siguientes archivos de plantilla de Azure Resource Manager:Download the following Azure Resource Manager template files:

Esta plantilla implementa un clúster seguro de siete máquinas virtuales y tres tipos de nodo en una red virtual y un grupo de seguridad de red.This template deploys a secure cluster of seven virtual machines and three node types into a virtual network and a network security group. Se pueden encontrar otras plantillas de ejemplo en GitHub.Other sample templates can be found on GitHub. El archivo azuredeploy.json permite implementar varios recursos, incluidos los siguientes.The azuredeploy.json deploys a number of resources, including the following.

Clúster de Service FabricService Fabric cluster

En el recurso Microsoft.ServiceFabric/clusters, un clúster de Windows está configurado con las siguientes características:In the Microsoft.ServiceFabric/clusters resource, a Windows cluster is configured with the following characteristics:

  • Tres tipos de nodo.Three node types.
  • Cinco nodos en el tipo de nodo principal (configurable en los parámetros de la plantilla) y un nodo en cada uno de los otros tipos de nodo.Five nodes in the primary node type (configurable in the template parameters), and one node in each of the other two node types.
  • Sistema operativo: Windows Server 2016 Datacenter con Containers (configurable en los parámetros de la plantilla).OS: Windows Server 2016 Datacenter with Containers (configurable in the template parameters).
  • Protección con certificado (configurable en los parámetros de la plantilla).Certificate secured (configurable in the template parameters).
  • Se habilita el proxy inverso.Reverse proxy is enabled.
  • Se habilita el servicio DNS.DNS service is enabled.
  • Nivel de durabilidad de Bronze (configurable en los parámetros de la plantilla).Durability level of Bronze (configurable in the template parameters).
  • Nivel de confiabilidad de Silver (configurable en los parámetros de la plantilla).Reliability level of Silver (configurable in the template parameters).
  • Punto de conexión de la conexión de cliente: 19000 (configurable en los parámetros de la plantilla).Client connection endpoint: 19000 (configurable in the template parameters).
  • punto de conexión de la puerta de enlace HTTP: 19080 (configurable en los parámetros de la plantilla).HTTP gateway endpoint: 19080 (configurable in the template parameters).

Azure Load BalancerAzure Load Balancer

En el recurso Microsoft.Network/loadBalancers se han configurado un equilibrador de carga.In the Microsoft.Network/loadBalancers resource, a load balancer is configured. Los sondeos y reglas se configuran para los puertos siguientes:Probes and rules are set up for the following ports:

  • Punto de conexión de la conexión de cliente: 19000Client connection endpoint: 19000
  • punto de conexión de la puerta de enlace HTTP: 19080HTTP gateway endpoint: 19080
  • Puerto de la aplicación: 80Application port: 80
  • Puerto de la aplicación: 443Application port: 443
  • Proxy inverso de Service Fabric: 19081Service Fabric reverse proxy: 19081

Si se necesitan otros puertos de aplicación, debe ajustar el recurso Microsoft.Network/loadBalancers y el recurso Microsoft.Network/networkSecurityGroups para permitir el tráfico de entrada.If other application ports are needed, you'll need to adjust the Microsoft.Network/loadBalancers resource and the Microsoft.Network/networkSecurityGroups resource to allow the traffic in.

Red virtual, subred y grupo de seguridad de redVirtual network, subnet, and network security group

Los nombres de la red virtual, la subred y el grupo de seguridad de red se declaran en los parámetros de la plantilla.The names of the virtual network, subnet, and network security group are declared in the template parameters. Los espacios de direcciones de la red virtual y de la subred se declaran también en los parámetros de plantilla y se configuran en el recurso Microsoft.Network/virtualNetworks:Address spaces of the virtual network and subnet are also declared in the template parameters and configured in the Microsoft.Network/virtualNetworks resource:

  • Espacio de direcciones de red virtual: 172.16.0.0/20Virtual network address space: 172.16.0.0/20
  • espacio de direcciones de subred de Service Fabric: 172.16.2.0/23Service Fabric subnet address space: 172.16.2.0/23

Las siguientes reglas de tráfico de entrada están habilitadas en el recurso Microsoft.Network/networksecuritygroups.The following inbound traffic rules are enabled in the Microsoft.Network/networkSecurityGroups resource. Puede cambiar los valores de puerto cambiando las variables de la plantilla.You can change the port values by changing the template variables.

  • ClientConnectionEndpoint (TCP): 19000ClientConnectionEndpoint (TCP): 19000
  • HttpGatewayEndpoint (HTTP/TCP): 19080HttpGatewayEndpoint (HTTP/TCP): 19080
  • SMB: 445SMB: 445
  • Internodecommunication: 1025, 1026, 1027Internodecommunication: 1025, 1026, 1027
  • Intervalo de puertos efímeros: 49152 a 65534 (necesita un mínimo de 256 puertos).Ephemeral port range: 49152 to 65534 (need a minimum of 256 ports).
  • Puertos para el uso de las aplicaciones: 80 y 443Ports for application use: 80 and 443
  • Intervalo de puertos de destino: 49152 a 65534 (se usan para la comunicación entre servicios.Application port range: 49152 to 65534 (used for service to service communication. Otros puertos no se abren en el equilibrador de carga).Other ports aren't opened on the Load balancer).
  • Bloqueo de todos los puertos restantesBlock all other ports

Si se necesitan otros puertos de aplicación, debe ajustar el recurso Microsoft.Network/loadBalancers y el recurso Microsoft.Network/networkSecurityGroups para permitir el tráfico de entrada.If other application ports are needed, you'll need to adjust the Microsoft.Network/loadBalancers resource and the Microsoft.Network/networkSecurityGroups resource to allow the traffic in.

Windows DefenderWindows Defender

De forma predeterminada, el programa antivirus Windows Defender está instalado y operativo en Windows Server 2016.By default, the Windows Defender antivirus program is installed and functional on Windows Server 2016. La interfaz de usuario se instala de forma predeterminada en algunas SKU, pero no es necesaria.The user interface is installed by default on some SKUs, but isn't required. En cada tipo de nodo o conjunto de escalado de máquinas virtuales que se declara en la plantilla, se usa la extensión de antimalware para máquinas virtuales de Azure para excluir los directorios y procesos de Service Fabric:For each node type/VM scale set declared in the template, the Azure VM Antimalware extension is used to exclude the Service Fabric directories and processes:

{
"name": "[concat('VMIaaSAntimalware','_vmNodeType0Name')]",
"properties": {
        "publisher": "Microsoft.Azure.Security",
        "type": "IaaSAntimalware",
        "typeHandlerVersion": "1.5",
        "settings": {
        "AntimalwareEnabled": "true",
        "Exclusions": {
                "Paths": "D:\\SvcFab;D:\\SvcFab\\Log;C:\\Program Files\\Microsoft Service Fabric",
                "Processes": "Fabric.exe;FabricHost.exe;FabricInstallerService.exe;FabricSetup.exe;FabricDeployer.exe;ImageBuilder.exe;FabricGateway.exe;FabricDCA.exe;FabricFAS.exe;FabricUOS.exe;FabricRM.exe;FileStoreService.exe"
        },
        "RealtimeProtectionEnabled": "true",
        "ScheduledScanSettings": {
                "isEnabled": "true",
                "scanType": "Quick",
                "day": "7",
                "time": "120"
        }
        },
        "protectedSettings": null
}
}

Configuración de los parámetros de plantillaSet template parameters

El archivo de parámetros azuredeploy.parameters.json permite declarar muchos valores que se usan para implementar el clúster y los recursos asociados.The azuredeploy.parameters.json parameters file declares many values used to deploy the cluster and associated resources. Los siguientes son los parámetros para modificar la implementación:The following are parameters to modify for your deployment:

ParámetroParameter Valor de ejemploExample value NotasNotes
adminUserNameadminUserName vmadminvmadmin Nombre de usuario del administrador de las máquinas virtuales del clúster.Admin username for the cluster VMs. Requisitos de nombre de usuario para la máquina virtual.Username requirements for VM.
adminPasswordadminPassword Password#1234Password#1234 Contraseña del administrador de las máquinas virtuales del clúster.Admin password for the cluster VMs. Requisitos de contraseña para la máquina virtual.Password requirements for VM.
clusterNameclusterName mysfcluster123mysfcluster123 Nombre del clúster.Name of the cluster. Solo puede contener letras y números.Can contain letters and numbers only. Puede tener entre 3 y 23 caracteres.Length can be between 3 and 23 characters.
locationlocation southcentralussouthcentralus Ubicación del clúster.Location of the cluster.
certificateThumbprintcertificateThumbprint

El valor debe estar vacío si se va a crear un certificado autofirmado o a proporcionar un archivo de certificados.Value should be empty if creating a self-signed certificate or providing a certificate file.

Para usar un certificado existente cargado previamente en un almacén de claves, rellene el valor de huella digital SHA1 del certificado.To use an existing certificate previously uploaded to a key vault, fill in the certificate SHA1 thumbprint value. Por ejemplo, "6190390162C988701DB5676EB81083EA608DCCF3".For example, "6190390162C988701DB5676EB81083EA608DCCF3".

certificateUrlValuecertificateUrlValue

El valor debe estar vacío si se va a crear un certificado autofirmado o a proporcionar un archivo de certificados.Value should be empty if creating a self-signed certificate or providing a certificate file.

Para usar un certificado existente cargado previamente en un almacén de claves, especifique la dirección URL del certificado.To use an existing certificate previously uploaded to a key vault, fill in the certificate URL. Por ejemplo, "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".For example, "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValuesourceVaultValue

El valor debe estar vacío si se va a crear un certificado autofirmado o a proporcionar un archivo de certificados.Value should be empty if creating a self-signed certificate or providing a certificate file.

Para usar un certificado existente cargado previamente en un almacén de claves, especifique el valor del almacén de claves de origen.To use an existing certificate previously uploaded to a key vault, fill in the source vault value. Por ejemplo, "/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT".For example, "/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT".

Configuración de la autenticación de cliente de Azure Active DirectorySet up Azure Active Directory client authentication

Para los clústeres de Service Fabric implementados en una red pública hospedada en Azure, la recomendación para la autenticación mutua de cliente a nodo es:For Service Fabric clusters deployed in a public network hosted on Azure, the recommendation for client-to-node mutual authentication is:

  • Usar Azure Active Directory para la identidad del cliente.Use Azure Active Directory for client identity.
  • Usar un certificado para la identidad del servidor y el cifrado SSL de la comunicación HTTP.Use a certificate for server identity and SSL encryption of HTTP communication.

La configuración de Azure Active Directory (Azure AD) para autenticar a los clientes de un clúster de Service Fabric se debe realizar antes de crear el clúster.Setting up Azure Active Directory (Azure AD) to authenticate clients for a Service Fabric cluster must be done before creating the cluster. Azure AD permite a las organizaciones (conocidas como inquilinos) administrar el acceso de los usuarios a las aplicaciones.Azure AD enables organizations (known as tenants) to manage user access to applications.

Un clúster de Service Fabric ofrece diversos puntos de entrada a su funcionalidad de administración, como Service Fabric Explorer y Visual Studio basados en web.A Service Fabric cluster offers several entry points to its management functionality, including the web-based Service Fabric Explorer and Visual Studio. Como consecuencia, creará dos aplicaciones de Azure AD para controlar el acceso al clúster: una aplicación web y una aplicación nativa.As a result, you create two Azure AD applications to control access to the cluster: one web application and one native application. Una vez creadas las aplicaciones, debe asignar usuarios a los roles de solo lectura y administrador.After the applications are created, you assign users to read-only and admin roles.

Nota

Debe realizar los pasos siguientes antes de crear el clúster.You must complete the following steps before you create the cluster. Dado que los scripts esperan los puntos de conexión y los nombres de los clústeres, los valores deben planearse y no se pueden usar los que ya haya creado.Because the scripts expect cluster names and endpoints, the values should be planned and not values that you have already created.

En este artículo, se supone que ya ha creado un inquilino.In this article, we assume that you've already created a tenant. En caso de que no lo haya hecho, lea Obtención de un inquilino de Azure Active Directory.If you haven't, start by reading How to get an Azure Active Directory tenant.

Para simplificar los pasos necesarios para configurar Azure AD con un clúster de Service Fabric, hemos creado un conjunto de scripts de Windows PowerShell.To simplify steps involved in configuring Azure AD with a Service Fabric cluster, we've created a set of Windows PowerShell scripts. Descargue los scripts en el equipo.Download the scripts to your computer.

Creación de aplicaciones de Azure AD y asignación de usuarios a rolesCreate Azure AD applications and assign users to roles

Cree dos aplicaciones de Azure AD para controlar el acceso al clúster: una aplicación web y una aplicación nativa.Create two Azure AD applications to control access to the cluster: one web application and one native application. Una vez que haya creado las aplicaciones para representar el clúster, debe asignar los usuarios a los roles compatibles con Service Fabric: solo lectura y administrador.After you've created the applications to represent your cluster, assign your users to the roles supported by Service Fabric: read-only and admin.

Ejecute SetupApplications.ps1 y proporcione el identificador de inquilino, el nombre del clúster y la dirección URL de respuesta de la aplicación web como parámetros.Run SetupApplications.ps1, and provide the tenant ID, cluster name, and web application reply URL as parameters. Especifique los nombres de usuario y las contraseñas para los usuarios.Specify usernames and passwords for the users. Por ejemplo:For example:

$Configobj = .\SetupApplications.ps1 -TenantId '<MyTenantID>' -ClusterName 'mysfcluster123' -WebApplicationReplyUrl 'https://mysfcluster123.eastus.cloudapp.azure.com:19080/Explorer/index.html' -AddResourceAccess
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestUser' -Password 'P@ssword!123'
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestAdmin' -Password 'P@ssword!123' -IsAdmin

Nota

Para las nubes nacionales (por ejemplo, Azure Government, Azure China, Azure Alemania), especifique el parámetro -Location.For national clouds (for example Azure Government, Azure China, Azure Germany), specify the -Location parameter.

Puede encontrar el identificador TenantId o el identificador de directorio en Azure Portal.You can find your TenantId, or directory ID, in the Azure portal. Seleccione Azure Active Directory > Propiedades y copie el valor de Id. de directorio.Select Azure Active Directory > Properties and copy the Directory ID value.

El valor de ClusterName se usa como prefijo en las aplicaciones de Azure AD que crea el script.ClusterName is used to prefix the Azure AD applications that are created by the script. No es necesario que coincida exactamente con el nombre del clúster real.It doesn't need to exactly match the actual cluster name. Solo facilita la asignación de artefactos de Azure AD para el clúster de Service Fabric en uso.It only makes it easier to map Azure AD artifacts to the Service Fabric cluster in use.

El valor de WebApplicationReplyUrl es el punto de conexión predeterminado al que Azure AD devuelve a los usuarios cuando terminan el inicio de sesión.WebApplicationReplyUrl is the default endpoint that Azure AD returns to your users after they finish signing in. Establézcalo como el punto de conexión de Service Fabric Explorer para el clúster, que de manera predeterminada es el siguiente:Set this endpoint as the Service Fabric Explorer endpoint for your cluster, which by default is:

https://<cluster_domain>:19080/Explorerhttps://<cluster_domain>:19080/Explorer

Se le pedirá que inicie sesión en una cuenta con privilegios administrativos para el inquilino de Azure AD.You're prompted to sign in to an account that has administrative privileges for the Azure AD tenant. Una vez iniciada la sesión, el script creará las aplicaciones web y nativa para representar el clúster de Service Fabric.After you sign in, the script creates the web and native applications to represent your Service Fabric cluster. En las aplicaciones del inquilino en Azure Portal, debería ver dos entradas nuevas:In the tenant's applications in the Azure portal, you should see two new entries:

  • ClusterName_ClústerClusterName_Cluster
  • ClusterName_ClienteClusterName_Client

El script imprimirá el código JSON que necesita la plantilla de Azure Resource Manager al crear el clúster, por lo que es buena idea mantener abierta la ventana de PowerShell.The script prints the JSON required by the Resource Manager template when you create the cluster, so it's a good idea to keep the PowerShell window open.

"azureActiveDirectory": {
  "tenantId":"<guid>",
  "clusterApplication":"<guid>",
  "clientApplication":"<guid>"
},

Adición de la configuración de Azure AD para usar Azure AD para el acceso de clienteAdd Azure AD configuration to use Azure AD for client access

En azuredeploy.json, configure Azure AD en la sección Microsoft.ServiceFabric/clusters.In the azuredeploy.json, configure Azure AD in the Microsoft.ServiceFabric/clusters section. Agregue parámetros para el identificador de inquilino, el identificador de la aplicación del clúster y el identificador de la aplicación cliente.Add parameters for the tenant ID, cluster application ID, and client application ID.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    ...

    "aadTenantId": {
      "type": "string",
      "defaultValue": "0e3d2646-78b3-4711-b8be-74a381d9890c"
    },
    "aadClusterApplicationId": {
      "type": "string",
      "defaultValue": "cb147d34-b0b9-4e77-81d6-420fef0c4180"
    },
    "aadClientApplicationId": {
      "type": "string",
      "defaultValue": "7a8f3b37-cc40-45cc-9b8f-57b8919ea461"
    }
  },

...

{
  "apiVersion": "2018-02-01",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  ...
  "properties": {
    ...
    "azureActiveDirectory": {
      "tenantId": "[parameters('aadTenantId')]",
      "clusterApplication": "[parameters('aadClusterApplicationId')]",
      "clientApplication": "[parameters('aadClientApplicationId')]"
    },
    ...
  }
}

Agregue los valores de los parámetros en el archivo de parámetros azuredeploy.parameters.json.Add the parameter values in the azuredeploy.parameters.json parameters file. Por ejemplo:For example:

"aadTenantId": {
"value": "0e3d2646-78b3-4711-b8be-74a381d9890c"
},
"aadClusterApplicationId": {
"value": "cb147d34-b0b9-4e77-81d6-420fef0c4180"
},
"aadClientApplicationId": {
"value": "7a8f3b37-cc40-45cc-9b8f-57b8919ea461"
}

Configuración de la colección de diagnóstico en el clústerConfigure diagnostics collection on the cluster

Cuando se ejecuta un clúster de Azure Service Fabric, es conveniente recopilar los registros de todos los nodos en una ubicación central.When you're running a Service Fabric cluster, it's a good idea to collect the logs from all the nodes in a central location. La presencia de los registros en una ubicación central facilita el análisis y la solución de los problemas del clúster o de las aplicaciones y los servicios que se ejecutan en ese clúster.Having the logs in a central location helps you analyze and troubleshoot issues in your cluster, or issues in the applications and services running in that cluster.

Uno de los métodos para cargar y recopilar registros es usar la extensión Azure Diagnostics (WAD), que carga registros en Azure Storage y también tiene la opción de enviar registros a Azure Application Insights o Event Hubs.One way to upload and collect logs is to use the Azure Diagnostics (WAD) extension, which uploads logs to Azure Storage, and also has the option to send logs to Azure Application Insights or Event Hubs. Además, puede usar un proceso externo para leer los eventos desde el almacenamiento y colocarlos en un producto de plataforma de análisis, como los registros de Azure Monitor u otra solución de análisis de registros.You can also use an external process to read the events from storage and place them in an analysis platform product, such as Azure Monitor logs or another log-parsing solution.

Si está siguiendo este tutorial, la recopilación de diagnóstico ya está configurada en la plantilla.If you are following this tutorial, diagnostics collection is already configured in the template.

Si tiene un clúster existente sin la extensión de Diagnostics implementada, puede agregarla o actualizarla con la plantilla del clúster.If you have an existing cluster that doesn't have Diagnostics deployed, you can add or update it via the cluster template. Modifique la plantilla de Resource Manager usada para crear el clúster existente o descargue la plantilla desde el portal.Modify the Resource Manager template that's used to create the existing cluster or download the template from the portal. Modifique el archivo template.json mediante la realización de las siguientes tareas:Modify the template.json file by performing the following tasks:

Agregue un nuevo recurso de almacenamiento a la sección de recursos en la plantilla:Add a new storage resource to the resources section in the template:

"resources": [
...
{
  "apiVersion": "2015-05-01-preview",
  "type": "Microsoft.Storage/storageAccounts",
  "name": "[parameters('applicationDiagnosticsStorageAccountName')]",
  "location": "[parameters('computeLocation')]",
  "sku": {
    "accountType": "[parameters('applicationDiagnosticsStorageAccountType')]"
  },
  "tags": {
    "resourceType": "Service Fabric",
    "clusterName": "[parameters('clusterName')]"
  }
},
...
]

A continuación, agregue parámetros para el nombre de la cuenta de almacenamiento y el tipo a la sección de parámetros de la plantilla.Next, add parameters for the storage account name and type to the parameters section of the template. Reemplace el texto del marcador de posición aquí va el nombre de la cuenta de almacenamiento por el nombre de la cuenta de almacenamiento que desee.Replace the placeholder text storage account name goes here with the name of the storage account you'd like.

"parameters": {
...
"applicationDiagnosticsStorageAccountType": {
    "type": "string",
    "allowedValues": [
    "Standard_LRS",
    "Standard_GRS"
    ],
    "defaultValue": "Standard_LRS",
    "metadata": {
    "description": "Replication option for the application diagnostics storage account"
    }
},
"applicationDiagnosticsStorageAccountName": {
    "type": "string",
    "defaultValue": "**STORAGE ACCOUNT NAME GOES HERE**",
    "metadata": {
    "description": "Name for the storage account that contains application diagnostics data from the cluster"
    }
},
...
}

A continuación, agregue la extensión IaaSDiagnostics a la matriz de extensiones de la propiedad VirtualMachineProfile de cada recurso Microsoft.Compute/virtualMachineScaleSets del clúster.Next, add the IaaSDiagnostics extension to the extensions array of the VirtualMachineProfile property of each Microsoft.Compute/virtualMachineScaleSets resource in the cluster. Si usa la plantilla de muestra, hay tres conjuntos de escalado de máquinas virtuales (uno para cada tipo de nodo del clúster).If you're using the sample template, there are three virtual machine scale sets (one for each node type in the cluster).

"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[variables('vmNodeType1Name')]",
"properties": {
    ...
    "virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat(parameters('vmNodeType0Name'),'_Microsoft.Insights.VMDiagnosticsSettings')]",
                    "properties": {
                        "type": "IaaSDiagnostics",
                        "autoUpgradeMinorVersion": true,
                        "protectedSettings": {
                        "storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
                        "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
                        "storageAccountEndPoint": "https://core.windows.net/"
                        },
                        "publisher": "Microsoft.Azure.Diagnostics",
                        "settings": {
                        "WadCfg": {
                            "DiagnosticMonitorConfiguration": {
                            "overallQuotaInMB": "50000",
                            "EtwProviders": {
                                "EtwEventSourceProviderConfiguration": [
                                {
                                    "provider": "Microsoft-ServiceFabric-Actors",
                                    "scheduledTransferKeywordFilter": "1",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricReliableActorEventTable"
                                    }
                                },
                                {
                                    "provider": "Microsoft-ServiceFabric-Services",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricReliableServiceEventTable"
                                    }
                                }
                                ],
                                "EtwManifestProviderConfiguration": [
                                {
                                    "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
                                    "scheduledTransferLogLevelFilter": "Information",
                                    "scheduledTransferKeywordFilter": "4611686018427387904",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricSystemEventTable"
                                    }
                                }
                                ]
                            }
                            }
                        },
                        "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
                        },
                        "typeHandlerVersion": "1.5"
                    }
                }
            ...
            ]
        }
    }
}

Configuración del servicio EventStoreConfigure the EventStore service

El servicio EventStore es una opción de supervisión de Service Fabric.The EventStore service is a monitoring option in Service Fabric. EventStore proporciona una manera de comprender el estado del clúster o las cargas de trabajo en un momento dado.EventStore provides a way to understand the state of your cluster or workloads at a given point in time. EventStore es un servicio de Service Fabric con estado que mantiene los eventos del clúster.The EventStore is a stateful Service Fabric service that maintains events from the cluster. El evento se expone a través de las API, de REST y de Service Fabric Explorer.The event are exposed through the Service Fabric Explorer, REST and APIs. EventStore consulta el clúster directamente para obtener datos de diagnóstico sobre cualquier entidad del clúster y debe usarse como ayuda para lo siguiente:EventStore queries the cluster directly to get diagnostics data on any entity in your cluster and should be used to help:

  • Diagnosticar problemas en el desarrollo, prueba o allí donde use una canalización de supervisiónDiagnose issues in development or testing, or where you might be using a monitoring pipeline
  • Confirmar que el clúster procesa correctamente las acciones de administración que realizaConfirm that management actions you are taking on your cluster are being processed correctly
  • Obtener una "instantánea" de cómo Service Fabric está interactuando con una entidad determinadaGet a "snapshot" of how Service Fabric is interacting with a particular entity

Para habilitar el servicio EventStore en el clúster, agregue lo siguiente a la propiedad fabricSettings del recurso Microsoft.ServiceFabric/clusters:To enable the EventStore service on your cluster, add the following to the fabricSettings property of the Microsoft.ServiceFabric/clusters resource:

"apiVersion": "2018-02-01",
"type": "Microsoft.ServiceFabric/clusters",
"name": "[parameters('clusterName')]",
"properties": {
    ...
    "fabricSettings": [
        ...
        {
            "name": "EventStoreService",
            "parameters": [
                {
                "name": "TargetReplicaSetSize",
                "value": "3"
                },
                {
                "name": "MinReplicaSetSize",
                "value": "1"
                }
            ]
        }
    ]
}

Configuración de los registros de Azure Monitor para el clústerSet up Azure Monitor logs for the cluster

Para supervisar los eventos de nivel de clúster, recomendamos los registros de Azure Monitor.Azure Monitor logs is our recommendation to monitor cluster level events. Para configurar los registros de Azure Monitor a fin de supervisar el clúster, debe tener habilitado Diagnostics para ver los eventos de nivel de clúster.To set up Azure Monitor logs to monitor your cluster, you need to have diagnostics enabled to view cluster-level events.

El área de trabajo debe conectarse a los datos de diagnóstico que proceden del clúster.The workspace needs to be connected to the diagnostics data coming from your cluster. Estos datos de registro se almacenan en la cuenta de almacenamiento applicationDiagnosticsStorageAccountName en las tablas WADServiceFabric*EventTable, WADWindowsEventLogsTable y WADETWEventTable.This log data is stored in the applicationDiagnosticsStorageAccountName storage account, in the WADServiceFabric*EventTable, WADWindowsEventLogsTable, and WADETWEventTable tables.

Agregue el área de trabajo de Azure Log Analytics y la solución al área de trabajo:Add the Azure Log Analytics workspace and add the solution to the workspace:

"resources": [
    ...
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[parameters('omsWorkspacename')]",
        "type": "Microsoft.OperationalInsights/workspaces",
        "properties": {
            "sku": {
                "name": "Free"
            }
        },
        "resources": [
            {
                "apiVersion": "2015-11-01-preview",
                "name": "[concat(variables('applicationDiagnosticsStorageAccountName'),parameters('omsWorkspacename'))]",
                "type": "storageinsightconfigs",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]"
                ],
                "properties": {
                    "containers": [],
                    "tables": [
                        "WADServiceFabric*EventTable",
                        "WADWindowsEventLogsTable",
                        "WADETWEventTable"
                    ],
                    "storageAccount": {
                        "id": "[resourceId('Microsoft.Storage/storageaccounts/', variables('applicationDiagnosticsStorageAccountName'))]",
                        "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-06-15').key1]"
                    }
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "type": "datasources",
                "name": "sampleWindowsPerfCounter",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsPerformanceCounter",
                "properties": {
                    "objectName": "Memory",
                    "instanceName": "*",
                    "intervalSeconds": 10,
                    "counterName": "Available MBytes"
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "type": "datasources",
                "name": "sampleWindowsPerfCounter2",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsPerformanceCounter",
                "properties": {
                    "objectName": "Service Fabric Service",
                    "instanceName": "*",
                    "intervalSeconds": 10,
                    "counterName": "Average milliseconds per request"
                }
            }
        ]
    },
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[variables('solution')]",
        "type": "Microsoft.OperationsManagement/solutions",
        "dependsOn": [
            "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        ],
        "properties": {
            "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        },
        "plan": {
            "name": "[variables('solution')]",
            "publisher": "Microsoft",
            "product": "[Concat('OMSGallery/', variables('solutionName'))]",
            "promotionCode": ""
        }
    }
]

Después, agregue parámetrosNext, add parameters

"parameters": {
    ...
    "omsWorkspacename": {
        "type": "string",
        "defaultValue": "mysfomsworkspace",
        "metadata": {
            "description": "Name of your OMS Log Analytics Workspace"
        }
    },
    "omsRegion": {
        "type": "string",
        "defaultValue": "West Europe",
        "allowedValues": [
            "West Europe",
            "East US",
            "Southeast Asia"
        ],
        "metadata": {
            "description": "Specify the Azure Region for your OMS workspace"
        }
    }
}

A continuación, agregue las variables:Next, add variables:

"variables": {
    ...
    "solution": "[Concat('ServiceFabric', '(', parameters('omsWorkspacename'), ')')]",
    "solutionName": "ServiceFabric"
}

Agregue la extensión del agente de Log Analytics a cada conjunto de escalado de máquinas virtuales en el clúster y conecte el agente al área de trabajo de Log Analytics.Add the Log Analytics agent extension to each virtual machine scale set in the cluster and connect the agent to the Log Analytics workspace. Esto permite recopilar datos de diagnóstico sobre los contenedores, las aplicaciones y la supervisión de rendimiento.This enables collecting diagnostics data about containers, applications, and performance monitoring. Si lo agrega como una extensión al recurso del conjunto de escalado de máquinas virtuales, Azure Resource Manager garantiza la instalación en todos los nodos, incluso cuando se ajusta la escala del clúster.By adding it as an extension to the virtual machine scale set resource, Azure Resource Manager ensures that it gets installed on every node, even when scaling the cluster.

"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[variables('vmNodeType1Name')]",
"properties": {
    ...
    "virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat(variables('vmNodeType0Name'),'OMS')]",
                    "properties": {
                        "publisher": "Microsoft.EnterpriseCloud.Monitoring",
                        "type": "MicrosoftMonitoringAgent",
                        "typeHandlerVersion": "1.0",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')), '2015-11-01-preview').customerId]"
                        },
                        "protectedSettings": {
                            "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')),'2015-11-01-preview').primarySharedKey]"
                        }
                    }
                }
            ...
            ]
        }
    }
}

Implementación de la red virtual y el clústerDeploy the virtual network and cluster

A continuación, configure la topología de red e implemente el clúster de Service Fabric.Next, set up the network topology and deploy the Service Fabric cluster. La plantilla de Resource Manager azuredeploy.json permite crear una red virtual, una subred y un grupo de seguridad de red para Service Fabric.The azuredeploy.json Resource Manager template creates a virtual network, subnet, and network security group for Service Fabric. La plantilla permite también implementar un clúster con seguridad mediante certificados habilitada.The template also deploys a cluster with certificate security enabled. Para los clústeres de producción, use un certificado de una entidad de certificación (CA) como certificado del clúster.For production clusters, use a certificate from a certificate authority as the cluster certificate. Un certificado autofirmado se puede usar para proteger los clústeres de prueba.A self-signed certificate can be used to secure test clusters.

La plantilla de este artículo implementa un clúster que usa la huella digital para identificar el certificado del clúster.The template in this article deploys a cluster that uses the certificate thumbprint to identify the cluster certificate. No hay dos certificados que puedan tener la misma huella digital, lo que dificulta la administración de certificados.No two certificates can have the same thumbprint, which makes certificate management more difficult. Si cambia un clúster implementado para que use nombres comunes del certificado en vez de las huellas digitales del mismo, se simplifica la administración de los certificados.Switching a deployed cluster from certificate thumbprints to certificate common names simplifies certificate management. Para más información sobre cómo actualizar el clúster para que use nombres comunes del certificado para la administración de certificados, consulte cómo cambiar el clúster a administración de nombre común del certificado.To learn how to update the cluster to use certificate common names for certificate management, read Change cluster to certificate common name management.

Creación de un clúster mediante un certificado existenteCreate a cluster by using an existing certificate

El script siguiente usa el cmdlet New-AzServiceFabricCluster y una plantilla para implementar un clúster nuevo en Azure.The following script uses the New-AzServiceFabricCluster cmdlet and a template to deploy a new cluster in Azure. El cmdlet crea un nuevo almacén de claves de Azure y carga el certificado.The cmdlet creates a new key vault in Azure and uploads your certificate.

# Variables.
$groupname = "sfclustertutorialgroup"
$clusterloc="southcentralus"  # Must match the location parameter in the template
$templatepath="C:\temp\cluster"

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
$clustername = "mysfcluster123"  # Must match the clustername parameter in the template
$vaultname = "clusterkeyvault123"
$vaultgroupname="clusterkeyvaultgroup123"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Sign in to your Azure account and select your subscription
Connect-AzAccount
Get-AzSubscription
Set-AzContext -SubscriptionId <guid>

# Create a new resource group for your deployment, and give it a name and a location.
New-AzResourceGroup -Name $groupname -Location $clusterloc

# Create the Service Fabric cluster.
New-AzServiceFabricCluster  -ResourceGroupName $groupname -TemplateFile "$templatepath\azuredeploy.json" `
-ParameterFile "$templatepath\azuredeploy.parameters.json" -CertificatePassword $certpwd `
-KeyVaultName $vaultname -KeyVaultResourceGroupName $vaultgroupname -CertificateFile $certpath

Creación de un clúster mediante un nuevo certificado autofirmadoCreate a cluster by using a new, self-signed certificate

El script siguiente usa el cmdlet New-AzServiceFabricCluster y una plantilla para implementar un clúster nuevo en Azure.The following script uses the New-AzServiceFabricCluster cmdlet and a template to deploy a new cluster in Azure. El cmdlet crea un almacén de claves en Azure, agrega un certificado autofirmado nuevo en el almacén de claves y carga el certificado en el archivo de certificados de forma local.The cmdlet creates a new key vault in Azure, adds a new self-signed certificate to the key vault, and downloads the certificate file locally.

# Variables.
$groupname = "sfclustertutorialgroup"
$clusterloc="southcentralus"  # Must match the location parameter in the template
$templatepath="C:\temp\cluster"

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
$certfolder="c:\mycertificates\"
$clustername = "mysfcluster123"
$vaultname = "clusterkeyvault123"
$vaultgroupname="clusterkeyvaultgroup123"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Sign in to your Azure account and select your subscription
Connect-AzAccount
Get-AzSubscription
Set-AzContext -SubscriptionId <guid>

# Create a new resource group for your deployment, and give it a name and a location.
New-AzResourceGroup -Name $groupname -Location $clusterloc

# Create the Service Fabric cluster.
New-AzServiceFabricCluster  -ResourceGroupName $groupname -TemplateFile "$templatepath\azuredeploy.json" `
-ParameterFile "$templatepath\azuredeploy.parameters.json" -CertificatePassword $certpwd `
-CertificateOutputFolder $certfolder -KeyVaultName $vaultname -KeyVaultResourceGroupName $vaultgroupname -CertificateSubjectName $subname

Conexión al clúster seguroConnect to the secure cluster

Conéctese al clúster mediante el módulo PowerShell de Service Fabric instalado con el SDK de Service Fabric.Connect to the cluster by using the Service Fabric PowerShell module installed with the Service Fabric SDK. En primer lugar, instale el certificado en el almacén personal (Mi) del usuario actual en el equipo.First, install the certificate into the Personal (My) store of the current user on your computer. Ejecute el siguiente comando de PowerShell:Run the following PowerShell command:

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My `
        -FilePath C:\mycertificates\mysfcluster20170531104310.pfx `
        -Password $certpwd

Ahora está preparado para conectarse al clúster seguro.You're now ready to connect to your secure cluster.

El módulo PowerShell de Service Fabric proporciona muchos cmdlets para administrar clústeres, aplicaciones y servicios de Service Fabric.The Service Fabric PowerShell module provides many cmdlets for managing Service Fabric clusters, applications, and services. Use el cmdlet Connect-ServiceFabricCluster para conectarse al clúster seguro.Use the Connect-ServiceFabricCluster cmdlet to connect to the secure cluster. Los detalles de la huella digital SHA1 del certificado y del punto de conexión se encuentran en la salida del paso anterior.The certificate SHA1 thumbprint and connection endpoint details are found in the output from the previous step.

Si anteriormente configuró la autenticación de cliente de Azure AD, ejecute el comando siguiente:If you previously set up Azure AD client authentication, run the following command:

Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
        -KeepAliveIntervalInSec 10 `
        -AzureActiveDirectory `
        -ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10

Si configuró la autenticación de cliente de Azure AD, ejecute el comando siguiente:If you didn't set up Azure AD client authentication, run the following command:

Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
          -KeepAliveIntervalInSec 10 `
          -X509Credential -ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10 `
          -FindType FindByThumbprint -FindValue C4C1E541AD512B8065280292A8BA6079C3F26F10 `
          -StoreLocation CurrentUser -StoreName My

Compruebe que está conectado y que el estado del clúster es correcto mediante el cmdlet Get-ServiceFabricClusterHealth.Check that you're connected and that the cluster is healthy by using the Get-ServiceFabricClusterHealth cmdlet.

Get-ServiceFabricClusterHealth

Limpieza de recursosClean up resources

En el resto de artículos de esta serie de tutoriales se usa el clúster que creó anteriormente.The other articles in this tutorial series use the cluster you've created. Si no va a pasar inmediatamente al siguiente artículo, puede eliminar el clúster para evitar incurrir en cargos.If you're not immediately moving on to the next article, you might want to delete the cluster to avoid incurring charges.

Pasos siguientesNext steps

Avance hasta el tutorial siguiente para obtener información sobre cómo escalar el clúster.Advance to the following tutorial to learn how to scale your cluster.

  • Crear una red virtual en Azure mediante PowerShellCreate a VNET in Azure using PowerShell
  • Creación de un almacén de claves y carga de un certificadoCreate a key vault and upload a certificate
  • Configuración de la autenticación de Azure Active DirectorySetup Azure Active Directory authentication
  • Configuración de la colección de diagnósticoConfigure diagnostics collection
  • Configuración del servicio EventStoreSet up the EventStore service
  • Configuración de los registros de Azure MonitorSet up Azure Monitor logs
  • Crear un clúster de Service Fabric seguro en Azure PowerShellCreate a secure Service Fabric cluster in Azure PowerShell
  • Protección del clúster con un certificado X.509Secure the cluster with an X.509 certificate
  • Conexión a un clúster con PowerShellConnect to the cluster using PowerShell
  • Eliminación de un clústerRemove a cluster

Luego, avance hasta el tutorial siguiente para obtener información sobre cómo supervisar el clúster.Next, advance to the following tutorial to learn how to monitor your cluster.