Tutorial: Implantar um cluster do Service Fabric executando o Windows em uma rede virtual do AzureTutorial: Deploy a Service Fabric cluster running Windows into an Azure virtual network

Este tutorial é a primeira parte de uma série.This tutorial is part one of a series. Você aprenderá como implantar um cluster do Microsoft Azure Service Fabric executando o Windows em uma rede virtual do Azure e em grupo de segurança de rede usando o PowerShell e um modelo.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. Ao terminar, você terá um cluster em execução na nuvem no qual você poderá implantar aplicativos.When you're finished, you have a cluster running in the cloud to which you can deploy applications. Para criar um cluster do Linux usando a CLI do Azure, consulte Criar um cluster seguro do Linux no Azure.To create a Linux cluster that uses the Azure CLI, see Create a secure Linux cluster on Azure.

Este tutorial descreve um cenário de produção.This tutorial describes a production scenario. Se você quiser criar um cluster pequeno para fins de teste, consulte Criar um cluster de teste.If you want to create a smaller cluster for testing purposes, see Create a test cluster.

Neste tutorial, você aprenderá como:In this tutorial, you learn how to:

  • Criar uma VNET no Azure usando o PowerShellCreate a VNET in Azure using PowerShell
  • Criar um cofre de chaves e carregar um certificadoCreate a key vault and upload a certificate
  • Configurar a autenticação do Azure Active DirectorySetup Azure Active Directory authentication
  • Configurar a coleção de diagnósticoConfigure diagnostics collection
  • Configurar o serviço EventStoreSet up the EventStore service
  • Configurar os logs do Azure MonitorSet up Azure Monitor logs
  • Criar um cluster do Service Fabric seguro no Azure PowerShellCreate a secure Service Fabric cluster in Azure PowerShell
  • Proteger o cluster com um certificado X.509Secure the cluster with an X.509 certificate
  • Conectar o cluster usando o PowerShellConnect to the cluster using PowerShell
  • Remover um clusterRemove a cluster

Nesta série de tutoriais, você aprenderá a:In this tutorial series you learn how to:

Observação

Este artigo foi atualizado para usar o novo módulo Az do Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Você ainda pode usar o módulo AzureRM, que continuará a receber as correções de bugs até pelo menos dezembro de 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para saber mais sobre o novo módulo Az e a compatibilidade com o AzureRM, confira Apresentação do novo módulo Az do Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obter instruções de instalação do módulo Az, confira Instalar o Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Pré-requisitosPrerequisites

Antes de começar este tutorial:Before you begin this tutorial:

Os procedimentos a seguir criam um cluster de sete nós do Service Fabric.The following procedures create a seven-node Service Fabric cluster. Para calcular o custo incorrido ao executar um cluster do Service Fabric no Azure, use a Calculadora de Preços do Azure.Use the Azure Pricing Calculator to calculate cost incurred by running a Service Fabric cluster in Azure.

Baixar e explorar o modeloDownload and explore the template

Baixe os seguintes arquivos do modelo do Azure Resource Manager:Download the following Azure Resource Manager template files:

Esse modelo implanta um cluster seguro de sete máquinas virtuais e três tipos de nó em uma rede virtual e um Grupo de Segurança de Rede.This template deploys a secure cluster of seven virtual machines and three node types into a virtual network and a network security group. Outros modelos de exemplo podem ser encontrados no GitHub.Other sample templates can be found on GitHub. O azuredeploy.json implanta uma série de recursos, incluindo os seguintes.The azuredeploy.json deploys a number of resources, including the following.

Cluster do Service FabricService Fabric cluster

No recurso Microsoft.ServiceFabric/clusters, um cluster do Windows é configurado com as seguintes características:In the Microsoft.ServiceFabric/clusters resource, a Windows cluster is configured with the following characteristics:

  • Três tipos de nó.Three node types.
  • Cinco nós no tipo de nó primário (configurável nos parâmetros de modelo), um nó em cada um dos outros dois tipos de nó.Five nodes in the primary node type (configurable in the template parameters), and one node in each of the other two node types.
  • sistema operacional: Windows Server 2016 Datacenter com Contêineres (configuráveis nos parâmetros de modelo).OS: Windows Server 2016 Datacenter with Containers (configurable in the template parameters).
  • Certificado protegido (configurável nos parâmetros de modelo).Certificate secured (configurable in the template parameters).
  • Proxy reverso está habilitado.Reverse proxy is enabled.
  • Serviço DNS está habilitado.DNS service is enabled.
  • Nível de durabilidade de Bronze (configurável nos parâmetros de modelo).Durability level of Bronze (configurable in the template parameters).
  • Nível de confiabilidade de Prata (configurável nos parâmetros de modelo).Reliability level of Silver (configurable in the template parameters).
  • Ponto de extremidade de conexão do cliente: 19000 (configurável nos parâmetros de modelo).Client connection endpoint: 19000 (configurable in the template parameters).
  • ponto de extremidade de gateway HTTP: 19080 (configurável nos parâmetros de modelo).HTTP gateway endpoint: 19080 (configurable in the template parameters).

Azure Load BalancerAzure Load Balancer

No recurso Microsoft.Network/loadBalancers, um balanceador de carga é configurado.In the Microsoft.Network/loadBalancers resource, a load balancer is configured. Investigações e regras estão configuradas para as seguintes portas:Probes and rules are set up for the following ports:

  • Ponto de extremidade de conexão do cliente: 19000Client connection endpoint: 19000
  • ponto de extremidade de gateway HTTP: 19080HTTP gateway endpoint: 19080
  • Porta do aplicativo: 80Application port: 80
  • Porta do aplicativo: 443Application port: 443
  • Proxy inverso do Service Fabric: 19081Service Fabric reverse proxy: 19081

Se forem necessárias outras portas de aplicativo, você precisará ajustar o recurso Microsoft.Network/loadBalancers e o recurso Microsoft.Network/networkSecurityGroups para permitir o tráfego 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.

Rede virtual, sub-rede e grupo de segurança de redeVirtual network, subnet, and network security group

Os nomes de rede virtual, sub-rede e grupo de segurança de rede são declarados nos parâmetros de modelo.The names of the virtual network, subnet, and network security group are declared in the template parameters. Espaços de endereço de rede virtual e sub-rede também são declarados nos parâmetros de modelo e configurados no 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:

  • Espaço de endereço da rede virtual: 172.16.0.0/20Virtual network address space: 172.16.0.0/20
  • espaço de endereço de sub-rede do Service Fabric: 172.16.2.0/23Service Fabric subnet address space: 172.16.2.0/23

As regras de tráfego de entrada a seguir estão habilitadas no recurso Microsoft.Network/networkSecurityGroups.The following inbound traffic rules are enabled in the Microsoft.Network/networkSecurityGroups resource. Você pode alterar os valores de porta, alterando as variáveis de modelo.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 porta efêmera: 49152 a 65534 (necessário um mínimo de 256 portas).Ephemeral port range: 49152 to 65534 (need a minimum of 256 ports).
  • Portas para o uso do aplicativo: 80 e 443Ports for application use: 80 and 443
  • Intervalo de portas de destino: 49152 a 65534 (usado para comunicação serviço a serviço.Application port range: 49152 to 65534 (used for service to service communication. Outras portas não estão abertas no balanceador de carga).Other ports aren't opened on the Load balancer).
  • Bloquear todas as outras portasBlock all other ports

Se forem necessárias outras portas de aplicativo, você precisará ajustar o recurso Microsoft.Network/loadBalancers e o recurso Microsoft.Network/networkSecurityGroups para permitir o tráfego 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

Por padrão, o Windows Defender Antivírus está instalado e funcional no Windows Server 2016.By default, the Windows Defender antivirus program is installed and functional on Windows Server 2016. A interface do usuário é instalada por padrão em alguns SKUs, mas não é necessária.The user interface is installed by default on some SKUs, but isn't required. Para cada tipo de nó/conjunto de dimensionamento de VMs declarado no modelo, a extensão Antimalware de VM do Azure é usada para excluir os diretórios e os processos do 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
}
}

Definir os parâmetros do modeloSet template parameters

O arquivo de parâmetros azuredeploy.parameters.json declara muitos valores usados para implantar o cluster e recursos associados.The azuredeploy.parameters.json parameters file declares many values used to deploy the cluster and associated resources. Estes são os parâmetros para modificar para sua implantação:The following are parameters to modify for your deployment:

ParâmetroParameter Valor de exemploExample value ObservaçõesNotes
adminUserNameadminUserName vmadminvmadmin Um nome de usuário de administrador para as VMs do cluster.Admin username for the cluster VMs. Requisitos de nome de usuário para máquina virtual.Username requirements for VM.
adminPasswordadminPassword Password#1234Password#1234 Uma senha de administrador para as VMs do cluster.Admin password for the cluster VMs. Requisitos de senha para máquina virtual.Password requirements for VM.
clusterNameclusterName mysfcluster123mysfcluster123 Nome do cluster.Name of the cluster. Pode conter apenas letras e números.Can contain letters and numbers only. O comprimento deve ter entre 3 e 23 caracteres.Length can be between 3 and 23 characters.
locationlocation southcentralussouthcentralus Localização do cluster.Location of the cluster.
certificateThumbprintcertificateThumbprint

O valor deve estar vazio se for criado um certificado auto-assinado ou for fornecido um arquivo de certificado.Value should be empty if creating a self-signed certificate or providing a certificate file.

Para usar um certificado existente que já foi carregado em um cofre de chaves, preencha o valor da impressão digital SHA1 do certificado.To use an existing certificate previously uploaded to a key vault, fill in the certificate SHA1 thumbprint value. Por exemplo, "6190390162C988701DB5676EB81083EA608DCCF3".For example, "6190390162C988701DB5676EB81083EA608DCCF3".

certificateUrlValuecertificateUrlValue

O valor deve estar vazio se for criado um certificado auto-assinado ou for fornecido um arquivo de certificado.Value should be empty if creating a self-signed certificate or providing a certificate file.

Para usar um certificado existente que foi previamente carregado para um cofre de chaves, preencha a URL do certificado.To use an existing certificate previously uploaded to a key vault, fill in the certificate URL. Por exemplo, "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".For example, "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValuesourceVaultValue

O valor deve estar vazio se for criado um certificado auto-assinado ou for fornecido um arquivo de certificado.Value should be empty if creating a self-signed certificate or providing a certificate file.

Para usar um certificado existente que foi previamente carregado para um cofre de chaves, preencha o valor do cofre de origem.To use an existing certificate previously uploaded to a key vault, fill in the source vault value. For example, "/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".

Configurar a autenticação de cliente do Azure Active DirectorySet up Azure Active Directory client authentication

Para clusters do Service Fabric implantados em uma rede pública hospedada no Azure, a recomendação para a autenticação mútua do cliente para nó é:For Service Fabric clusters deployed in a public network hosted on Azure, the recommendation for client-to-node mutual authentication is:

  • Usar o Azure Active Directory para identidade de cliente.Use Azure Active Directory for client identity.
  • Use um certificado para identidade do servidor e criptografia SSL da comunicação HTTP.Use a certificate for server identity and SSL encryption of HTTP communication.

A configuração do Azure Active Directory para autenticação de clientes de um cluster do Service Fabric precisa ser feita antes da criação do cluster.Setting up Azure Active Directory (Azure AD) to authenticate clients for a Service Fabric cluster must be done before creating the cluster. O Azure AD permite que as organizações (conhecidas como locatários) gerenciem o acesso dos usuários aos aplicativos.Azure AD enables organizations (known as tenants) to manage user access to applications.

Um cluster do Service Fabric oferece vários pontos de entrada para a funcionalidade de gerenciamento, incluindo o Service Fabric Explorer e o Visual Studio baseados na Web.A Service Fabric cluster offers several entry points to its management functionality, including the web-based Service Fabric Explorer and Visual Studio. Como resultado, você criará dois aplicativos do Azure AD para controlar o acesso ao cluster, um aplicativo Web e um aplicativo nativo.As a result, you create two Azure AD applications to control access to the cluster: one web application and one native application. Depois que os aplicativos forem criados, você atribuirá usuários a funções de administrador e somente leitura.After the applications are created, you assign users to read-only and admin roles.

Observação

Você deve concluir as etapas a seguir para poder criar o cluster.You must complete the following steps before you create the cluster. Como os scripts esperam pontos de extremidade e nomes de cluster, os valores devem ser planejados, não os valores que você já tinha criado.Because the scripts expect cluster names and endpoints, the values should be planned and not values that you have already created.

Neste artigo, partimos do pressuposto que você já tenha criado um locatário.In this article, we assume that you've already created a tenant. Se não for o caso, comece lendo Como obter um locatário do Azure Active Directory.If you haven't, start by reading How to get an Azure Active Directory tenant.

Para simplificar as etapas envolvidas na configuração do Microsoft Azure Active Directory com um cluster do Service Fabric, criamos um conjunto de scripts do Windows PowerShell.To simplify steps involved in configuring Azure AD with a Service Fabric cluster, we've created a set of Windows PowerShell scripts. Faça download dos scripts em seu computador.Download the scripts to your computer.

Criar aplicativos do Azure AD e atribuir usuários a funçõesCreate Azure AD applications and assign users to roles

Crie dois aplicativos do Azure AD para controlar o acesso ao cluster: um aplicativo Web e um aplicativo nativo.Create two Azure AD applications to control access to the cluster: one web application and one native application. Depois de criar os aplicativos para representar seu cluster, atribua os usuários às funções compatíveis com o Service Fabric: somente leitura e 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.

Execute SetupApplications.ps1 e forneça a ID de locatário, o nome do cluster e a URL de resposta do aplicativo Web como parâmetros.Run SetupApplications.ps1, and provide the tenant ID, cluster name, and web application reply URL as parameters. Especifique também nomes de usuário e senhas para os usuários.Specify usernames and passwords for the users. Por exemplo: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

Observação

Para nuvens nacionais (por exemplo, Azure Governamental, Azure China e Azure Alemanha), especifique o parâmetro -Location.For national clouds (for example Azure Government, Azure China, Azure Germany), specify the -Location parameter.

Encontre a TenantId ou a ID de diretório no portal do Azure.You can find your TenantId, or directory ID, in the Azure portal. Selecione Azure Active Directory > Propriedades e copie o valor Directory ID.Select Azure Active Directory > Properties and copy the Directory ID value.

O ClusterName é usado para prefixar os aplicativos do Azure AD criados pelo script.ClusterName is used to prefix the Azure AD applications that are created by the script. Ele não precisa corresponder exatamente ao nome real do cluster.It doesn't need to exactly match the actual cluster name. Ele só torna mais fácil mapear artefatos do Azure Active Directory ao cluster do Service Fabric em uso.It only makes it easier to map Azure AD artifacts to the Service Fabric cluster in use.

WebApplicationReplyUrl é o ponto de extremidade padrão retornado pelo Azure AD para os usuários depois que eles concluem a entrada.WebApplicationReplyUrl is the default endpoint that Azure AD returns to your users after they finish signing in. Defina esse ponto de extremidade como o ponto de extremidade do Service Fabric Explorer para o seu cluster, que por padrão é: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

Você precisará entrar em uma conta que tenha privilégios administrativos para o locatário do Azure Active Directory.You're prompted to sign in to an account that has administrative privileges for the Azure AD tenant. Depois de entrar, o script criará aplicativos Web e nativos para representar seu cluster do Service Fabric.After you sign in, the script creates the web and native applications to represent your Service Fabric cluster. Nos aplicativos do locatário no portal do Azure, você deverá ver duas novas entradas:In the tenant's applications in the Azure portal, you should see two new entries:

  • ClusterName_ClusterClusterName_Cluster
  • ClusterName_ClienteClusterName_Client

O script imprime o JSON necessário para o modelo do Resource Manager quando você cria o cluster, portanto, é uma boa ideia manter a janela do PowerShell aberta.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>"
},

Adicionar a configuração do Azure AD para usar o Azure AD para acesso de clienteAdd Azure AD configuration to use Azure AD for client access

Em azuredeploy.json, configure o Azure AD na seção Microsoft.ServiceFabric/clusters.In the azuredeploy.json, configure Azure AD in the Microsoft.ServiceFabric/clusters section. Adicione parâmetros para a ID de locatário, a ID do aplicativo do cluster e a ID do aplicativo 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')]"
    },
    ...
  }
}

Adicione os valores de parâmetro ao arquivo de parâmetros azuredeploy.parameters.json.Add the parameter values in the azuredeploy.parameters.json parameters file. Por exemplo:For example:

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

Configurar a coleção de diagnóstico no clusterConfigure diagnostics collection on the cluster

Quando você estiver executando um cluster de Service Fabric do Azure, é uma boa ideia coletar os logs de todos os nós em um local 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. Ter os logs em um local central ajuda a analisar e solucionar problemas no cluster ou nos aplicativos e serviços em execução nesse cluster.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.

Uma maneira de fazer upload e coletar logs é utilizar a extensão de Diagnóstico do Microsoft Azure (WAD) que faz upload dos logs no Armazenamento do Microsoft Azure e, além disso, possui a opção de enviar os logs para o Azure Application Insights ou Hubs de Evento.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. Também é possível utilizar um processo externo para ler os eventos do armazenamento e colocá-los em um produto da plataforma de análise, como os logs do Azure Monitor ou outra solução de análise de log.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.

Se você estiver seguindo este tutorial, a coleta de diagnóstico já estará configurada no modelo.If you are following this tutorial, diagnostics collection is already configured in the template.

Se você tiver um cluster existente que não tenha o Diagnóstico implantado, poderá adicioná-lo ou atualizá-lo por meio do modelo de cluster.If you have an existing cluster that doesn't have Diagnostics deployed, you can add or update it via the cluster template. Modifique o modelo do Resource Manager usado para criar o cluster existente ou baixe o modelo do portal.Modify the Resource Manager template that's used to create the existing cluster or download the template from the portal. Modifique o arquivo template.json executando as tarefas a seguir:Modify the template.json file by performing the following tasks:

Adicione um novo recurso de armazenamento à seção de recursos no modelo: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')]"
  }
},
...
]

Em seguida, adicione parâmetros para o tipo e o nome da conta de armazenamento para a seção de parâmetros do modelo.Next, add parameters for the storage account name and type to the parameters section of the template. Substitua o texto do espaço reservado nome da conta de armazenamento aqui pelo nome da conta de armazenamento que você deseja.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"
    }
},
...
}

Em seguida, adicione a extensão IaaSDiagnostics à matriz de extensões da propriedade VirtualMachineProfile de cada recurso Microsoft.Compute/virtualMachineScaleSets no cluster.Next, add the IaaSDiagnostics extension to the extensions array of the VirtualMachineProfile property of each Microsoft.Compute/virtualMachineScaleSets resource in the cluster. Se você está usando o modelo de exemplo, há três conjuntos de dimensionamento de máquinas virtuais (um para cada tipo de nó no cluster).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"
                    }
                }
            ...
            ]
        }
    }
}

Configurar o serviço EventStoreConfigure the EventStore service

O serviço EventStore introduzido é uma opção de monitoramento no Service Fabric.The EventStore service is a monitoring option in Service Fabric. O EventStore fornece uma maneira de entender o estado do cluster ou cargas de trabalho em um determinado ponto no tempo.EventStore provides a way to understand the state of your cluster or workloads at a given point in time. O EventStore é um serviço do Service Fabric com monitoramento de estado que mantém os eventos do cluster.The EventStore is a stateful Service Fabric service that maintains events from the cluster. Os eventos são expostos por meio do Service Fabric Explorer, REST e APIs.The event are exposed through the Service Fabric Explorer, REST and APIs. As consultas do EventStore permitem que você consulte o cluster diretamente para obter dados de diagnóstico em qualquer entidade no cluster e devem ser usadas para ajudar a:EventStore queries the cluster directly to get diagnostics data on any entity in your cluster and should be used to help:

  • Diagnosticar problemas em desenvolvimento ou teste, ou em que talvez você possa estar usando um pipeline de monitoramentoDiagnose issues in development or testing, or where you might be using a monitoring pipeline
  • Confirmar que as ações de gerenciamento que você está realizando no cluster estão sendo processadas corretamente por eleConfirm that management actions you are taking on your cluster are being processed correctly
  • Obter um "instantâneo" de como o Service Fabric está interagindo com uma entidade específicaGet a "snapshot" of how Service Fabric is interacting with a particular entity

Para habilitar o serviço do EventStore no seu cluster, adicione o seguinte para a propriedade fabricSettings do 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"
                }
            ]
        }
    ]
}

Configurar logs do Azure Monitor para o clusterSet up Azure Monitor logs for the cluster

Os logs do Azure Monitor é nossa recomendação para monitorar eventos de nível de cluster.Azure Monitor logs is our recommendation to monitor cluster level events. Para configurar os logs do Azure Monitor para monitorar seu cluster, você precisa ter o diagnóstico habilitado para exibir eventos no nível do cluster ou da plataforma.To set up Azure Monitor logs to monitor your cluster, you need to have diagnostics enabled to view cluster-level events.

O workspace precisa estar conectado aos dados de diagnóstico provenientes do seu cluster.The workspace needs to be connected to the diagnostics data coming from your cluster. Esses dados de log são armazenados na conta de armazenamento applicationDiagnosticsStorageAccountName, na tabelas WADServiceFabric*EventTable, WADWindowsEventLogsTable, e WADETWEventTable.This log data is stored in the applicationDiagnosticsStorageAccountName storage account, in the WADServiceFabric*EventTable, WADWindowsEventLogsTable, and WADETWEventTable tables.

Adicione o espaço de trabalho do Log Analytics do Azure e adicione a solução ao espaço de trabalho: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": ""
        }
    }
]

Em seguida, adicione os 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"
        }
    }
}

Em seguida, adicione as variáveis:Next, add variables:

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

Adicione a extensão do agente do Log Analytics a cada conjunto de dimensionamento de máquinas virtuais no cluster e conecte o agente ao workspace do 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. Isso permite coletar dados de diagnóstico sobre contêineres, aplicativos e monitoramento do desempenho.This enables collecting diagnostics data about containers, applications, and performance monitoring. Ao adicioná-lo como uma extensão para o recurso de conjunto de dimensionamento de máquinas virtuais, o Azure Resource Manager garante que ele seja instalado em cada nó, mesmo ao dimensionar o cluster.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]"
                        }
                    }
                }
            ...
            ]
        }
    }
}

Implantar a rede virtual e o clusterDeploy the virtual network and cluster

Em seguida, configure a topologia de rede e implante o cluster do Service Fabric.Next, set up the network topology and deploy the Service Fabric cluster. O modelo do Resource Manager azuredeploy.json cria uma rede virtual, uma sub-rede e também um grupo de segurança de rede para o Service Fabric.The azuredeploy.json Resource Manager template creates a virtual network, subnet, and network security group for Service Fabric. O modelo também implanta um cluster com a segurança de certificado habilitada.The template also deploys a cluster with certificate security enabled. Para clusters de produção, use um certificado de uma autoridade de certificação como o certificado de cluster.For production clusters, use a certificate from a certificate authority as the cluster certificate. Um certificado autoassinado pode ser usado para proteger clusters de teste.A self-signed certificate can be used to secure test clusters.

O modelo deste artigo implanta um cluster que usa a impressão digital do certificado para identificar o certificado de cluster.The template in this article deploys a cluster that uses the certificate thumbprint to identify the cluster certificate. Dois certificados não podem ter a mesma impressão digital, o que dificulta o gerenciamento de certificados.No two certificates can have the same thumbprint, which makes certificate management more difficult. Alternar um cluster implantado do uso de impressões digitais de certificado para certificar os nomes comuns simplifica o gerenciamento de certificado.Switching a deployed cluster from certificate thumbprints to certificate common names simplifies certificate management. Para saber como atualizar o cluster para que ele use nomes comuns de certificado para o gerenciamento de certificados, leia Alterar o cluster para o gerenciamento de nomes comuns de certificado.To learn how to update the cluster to use certificate common names for certificate management, read Change cluster to certificate common name management.

Criar um cluster usando um certificado existenteCreate a cluster by using an existing certificate

O script a seguir usa o cmdlet New-AzServiceFabricCluster e um modelo para implantar um novo cluster no Azure.The following script uses the New-AzServiceFabricCluster cmdlet and a template to deploy a new cluster in Azure. O cmdlet cria um novo cofre de chaves no Azure e carrega o 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

Criar um cluster usando um novo certificado autoassinadoCreate a cluster by using a new, self-signed certificate

O script a seguir usa o cmdlet New-AzServiceFabricCluster e um modelo para implantar um novo cluster no Azure.The following script uses the New-AzServiceFabricCluster cmdlet and a template to deploy a new cluster in Azure. O cmdlet cria um cofre de chaves no Azure, adiciona um certificado autoassinado a ele e baixa o arquivo de certificado localmente.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

Conectar-se ao cluster seguroConnect to the secure cluster

Conecte-se ao cluster usando o módulo do PowerShell do Service Fabric instalado com o SDK do Service Fabric.Connect to the cluster by using the Service Fabric PowerShell module installed with the Service Fabric SDK. Primeiro, instale o certificado no repositório pessoal (Meu) do usuário atual no seu computador.First, install the certificate into the Personal (My) store of the current user on your computer. Execute o seguinte comando do 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

Agora você já está pronto para se conectar ao seu cluster seguro.You're now ready to connect to your secure cluster.

O módulo do PowerShell do Service Fabric fornece vários cmdlets para gerenciar clusters, aplicativos e serviços do Service Fabric.The Service Fabric PowerShell module provides many cmdlets for managing Service Fabric clusters, applications, and services. Use o cmdlet Connect-ServiceFabricCluster para se conectar ao cluster seguro.Use the Connect-ServiceFabricCluster cmdlet to connect to the secure cluster. Os detalhes do ponto de extremidade de conexão e de impressão digital do SHA1 do certificado podem ser encontrados na saída da etapa anterior.The certificate SHA1 thumbprint and connection endpoint details are found in the output from the previous step.

Se você já tiver configurado a autenticação de cliente do Azure Active Directory anteriormente, execute o seguinte: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

Se você já não tiver configurado a autenticação de cliente do Azure Active Directory anteriormente, execute o seguinte: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

Verifique se você está conectado e se o cluster está íntegro usando o cmdlet Get-ServiceFabricClusterHealth.Check that you're connected and that the cluster is healthy by using the Get-ServiceFabricClusterHealth cmdlet.

Get-ServiceFabricClusterHealth

Limpar recursosClean up resources

Os outros artigos nesta série de tutoriais usam o cluster que você criou.The other articles in this tutorial series use the cluster you've created. Se você não for imediatamente para o próximo artigo, exclua o cluster para evitar a cobrança de encargos.If you're not immediately moving on to the next article, you might want to delete the cluster to avoid incurring charges.

Próximas etapasNext steps

Avance para o próximo tutorial para saber como dimensionar o cluster.Advance to the following tutorial to learn how to scale your cluster.

  • Criar uma VNET no Azure usando o PowerShellCreate a VNET in Azure using PowerShell
  • Criar um cofre de chaves e carregar um certificadoCreate a key vault and upload a certificate
  • Configurar a autenticação do Azure Active DirectorySetup Azure Active Directory authentication
  • Configurar a coleção de diagnósticoConfigure diagnostics collection
  • Configurar o serviço EventStoreSet up the EventStore service
  • Configurar os logs do Azure MonitorSet up Azure Monitor logs
  • Criar um cluster do Service Fabric seguro no Azure PowerShellCreate a secure Service Fabric cluster in Azure PowerShell
  • Proteger o cluster com um certificado X.509Secure the cluster with an X.509 certificate
  • Conectar o cluster usando o PowerShellConnect to the cluster using PowerShell
  • Remover um clusterRemove a cluster

Em seguida, avance para o próximo tutorial para saber como monitorar o cluster.Next, advance to the following tutorial to learn how to monitor your cluster.