Tutorial: Implementar um cluster do Service Fabric a executar o Windows numa rede virtual do Azure

Este tutorial é a primeira parte de uma série. Você aprende a implantar um cluster do Azure Service Fabric executando o Windows em uma rede virtual do Azure e um grupo de segurança de rede usando o PowerShell e um modelo. Quando terminar, você terá um cluster em execução na nuvem no qual poderá implantar aplicativos. Para criar um cluster Linux que usa a CLI do Azure, consulte Criar um cluster Linux seguro no Azure.

Este tutorial descreve um cenário de produção. Se você quiser criar um cluster menor para fins de teste, consulte Criar um cluster de teste.

Neste tutorial, irá aprender a:

  • Criar uma VNET no Azure com o PowerShell
  • Criar um cofre de chaves e carregar um certificado
  • Configurar a autenticação do Microsoft Entra
  • Configurar a coleção de diagnósticos
  • Configurar o serviço EventStore
  • Configurar logs do Azure Monitor
  • Criar um cluster do Service Fabric seguro no Azure PowerShell
  • Proteger o cluster com um certificado X.509
  • Ligar ao cluster com o PowerShell
  • Remover um cluster

Nesta série de tutoriais, ficará a saber como:

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Pré-requisitos

Antes de começar este tutorial:

Os procedimentos a seguir criam um cluster do Service Fabric de sete nós. Use a Calculadora de Preços do Azure para calcular o custo incorrido pela execução de um cluster do Service Fabric no Azure.

Transferir e explorar o modelo

Baixe os seguintes arquivos de modelo do Azure Resource Manager:

Este 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. Outros modelos de exemplo podem ser encontrados no GitHub. O azuredeploy.json implanta vários recursos, incluindo os seguintes.

Cluster do Service Fabric

No recurso Microsoft.ServiceFabric/clusters, é configurado um cluster Windows com as seguintes características:

  • Três tipos de nós.
  • Cinco nós no tipo de nó primário (configurável nos parâmetros do modelo) e um nó em cada um dos outros dois tipos de nós.
  • SO: Windows Server 2016 Datacenter with Containers (configurável nos parâmetros do modelo).
  • Certificado seguro (configurável nos parâmetros do modelo).
  • O proxy reverso está habilitado.
  • O serviço DNS está habilitado.
  • Nível de durabilidade do Bronze (configurável nos parâmetros do modelo).
  • Nível de fiabilidade Silver (configurável nos parâmetros do modelo).
  • Ponto de extremidade de conexão do cliente: 19000 (configurável nos parâmetros do modelo).
  • Ponto de extremidade do gateway HTTP: 19080 (configurável nos parâmetros do modelo).

Balanceador de Carga do Azure

No recurso Microsoft.Network/loadBalancers, um balanceador de carga é configurado. Testes e regras são configurados para as seguintes portas:

  • Ponto de extremidade de conexão do cliente: 19000
  • ponto final de gateway HTTP: 19080
  • Porta de aplicação: 80
  • Porta de aplicação: 443
  • Proxy inverso do Service Fabric: 19081

Se forem necessárias outras portas de aplicação, terá de ajustar o recurso Microsoft.Network/loadBalancers e o recurso Microsoft.Network/networkSecurityGroups para permitir a entrada de tráfego.

Rede virtual, sub-rede e o grupo de segurança de rede

Os nomes da rede virtual, da sub-rede e do grupo de segurança de rede são declarados nos parâmetros do modelo. Os espaços de endereços da rede virtual e da sub-rede também são declarados nos parâmetros do modelo e configurados no recurso Microsoft.Network/virtualNetworks:

  • Espaço de endereço de rede virtual: 172.16.0.0/20
  • espaço de endereços de sub-rede do Service Fabric: 172.16.2.0/23

As seguintes regras de tráfego de entrada estão ativadas no recurso Microsoft.Network/networkSecurityGroups. Pode alterar os valores das portas, alterando as variáveis no modelo.

  • ClientConnectionEndpoint (TCP): 19000
  • HttpGatewayEndpoint (HTTP/TCP): 19080
  • SMB: 445
  • Internodecommunication: 1025, 1026, 1027
  • Intervalo de portas efêmeras: 49152 a 65534 (precisa de um mínimo de 256 portas).
  • Portas para utilização de aplicações: 80 e 443
  • Intervalo de portas de aplicação: 49152 a 65534 (usado para comunicação de serviço a serviço. Outras portas não são abertas no balanceador de carga).
  • Bloquear todas as outras portas

Se forem necessárias outras portas de aplicação, terá de ajustar o recurso Microsoft.Network/loadBalancers e o recurso Microsoft.Network/networkSecurityGroups para permitir a entrada de tráfego.

Windows Defender

Por padrão, o programa antivírus do Windows Defender está instalado e funcional no Windows Server 2016. A interface do usuário é instalada por padrão em alguns SKUs, mas não é necessária. Para cada tipo de nó/conjunto de escala de VM declarado no modelo, a extensão Azure VM Antimalware é usada para excluir os diretórios e processos do Service Fabric:

{
"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 parâmetros de modelo

O ficheiro de parâmetro azuredeploy.parameters.json declara vários valores utilizados para implementar o cluster e os recursos associados. A seguir estão os parâmetros a serem modificados para sua implantação:

Parâmetro Valor de exemplo Notas
adminUserName vmadmin O nome de utilizador administrador para as VMs do cluster. Requisitos de nome de usuário para VM.
adminPassword Password#1234 A palavra-passe de utilizador administrador para as VMs do cluster. Requisitos de senha para VM.
clusterName mysfcluster123 O nome do cluster. Pode conter apenas letras e números. O comprimento pode ter entre 3 e 23 carateres.
localização E.U.A Centro-Sul A localização do cluster.
certificateThumbprint

O valor deve estar vazio, se criar um certificado autoassinado ou fornecer um ficheiro de certificado.

Para utilizar um certificado existente carregado anteriormente para um cofre de chaves, preencha o valor do thumbprint SHA-1 do certificado. Por exemplo, “6190390162C988701DB5676EB81083EA608DCCF3”.

certificateUrlValue

O valor deve estar vazio, se criar um certificado autoassinado ou fornecer um ficheiro de certificado.

Para utilizar um certificado existente carregado anteriormente para um cofre de chaves, preencha o URL do certificado. Por exemplo, "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValue

O valor deve estar vazio, se criar um certificado autoassinado ou fornecer um ficheiro de certificado.

Para utilizar um certificado existente carregado anteriormente para um cofre de chaves, preencha o valor no cofre de origem. Por exemplo, "/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT".

Configurar a autenticação de cliente do Microsoft Entra

Para clusters do Service Fabric implantados em uma rede pública hospedada no Azure, a recomendação para autenticação mútua de cliente para nó é:

  • Use o ID do Microsoft Entra para a identidade do cliente.
  • Use um certificado para identidade do servidor e criptografia TLS de comunicação HTTP.

A configuração do Microsoft Entra ID para autenticar clientes para um cluster do Service Fabric deve ser feita antes de criar o cluster. O Microsoft Entra ID permite que organizações (conhecidas como locatários) gerenciem o acesso do usuário aos aplicativos.

Um cluster do Service Fabric oferece vários pontos de entrada para sua funcionalidade de gerenciamento, incluindo o Service Fabric Explorer baseado na Web e o Visual Studio. Como resultado, você cria dois aplicativos Microsoft Entra para controlar o acesso ao cluster: um aplicativo Web e um aplicativo nativo. Depois que os aplicativos são criados, você atribui os usuários a funções somente leitura e administrador.

Nota

Você deve concluir as etapas a seguir antes de criar o cluster. Como os scripts esperam nomes de cluster e pontos de extremidade, os valores devem ser planejados e não valores que você já criou.

Neste artigo, assumimos que já criou um inquilino. Se ainda não o fez, comece por ler Como obter um inquilino do Microsoft Entra.

Para simplificar as etapas envolvidas na configuração do Microsoft Entra ID com um cluster do Service Fabric, criamos um conjunto de scripts do Windows PowerShell. Transfira os scripts para o seu computador.

Criar aplicativos Microsoft Entra e atribuir usuários a funções

Crie dois aplicativos Microsoft Entra para controlar o acesso ao cluster: um aplicativo Web e um aplicativo nativo. Depois de criar os aplicativos para representar seu cluster, atribua os usuários às funções suportadas pelo Service Fabric: somente leitura e administrador.

Execute SetupApplications.ps1e forneça o ID do locatário, o nome do cluster e a URL de resposta do aplicativo Web como parâmetros. Especifique nomes de usuário e senhas para os usuários. Por exemplo:

$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 nuvens nacionais (por exemplo, Azure Government, Microsoft Azure operado pela 21Vianet, Azure Germany), especifique o -Location parâmetro.

Você pode encontrar seu TenantId, ou ID de diretório, no portal do Azure. Selecione Propriedades da ID do Microsoft Entra e copie o valor da ID> do diretório.

ClusterName é usado para prefixar os aplicativos Microsoft Entra que são criados pelo script. Ele não precisa corresponder exatamente ao nome real do cluster. Ele apenas facilita o mapeamento de artefatos do Microsoft Entra para o cluster do Service Fabric em uso.

WebApplicationReplyUrl é o ponto de extremidade padrão que o ID do Microsoft Entra retorna aos seus usuários depois que eles terminam de entrar. Defina esse ponto de extremidade como o ponto de extremidade do Service Fabric Explorer para seu cluster, que por padrão é:

https://< cluster_domain>:19080/Explorer

Você será solicitado a entrar em uma conta que tenha privilégios administrativos para o locatário do Microsoft Entra. Depois de entrar, o script cria os aplicativos Web e nativos para representar seu cluster do Service Fabric. Nos aplicativos do locatário no portal do Azure, você verá duas novas entradas:

  • ClusterName_Cluster
  • ClusterName_Client

O script imprime o JSON exigido pelo modelo do Gerenciador de Recursos quando você cria o cluster, portanto, é uma boa ideia manter a janela do PowerShell aberta.

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

Adicionar a configuração do Microsoft Entra para usar o Microsoft Entra ID para acesso do cliente

No azuredeploy.json, configure a ID do Microsoft Entra na seção Microsoft.ServiceFabric/clusters. Adicione parâmetros para a ID do locatário, a ID do aplicativo de cluster e a ID do aplicativo cliente.

{
  "$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 no arquivo de parâmetros azuredeploy.parameters.json . Por exemplo:

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

Configurar a coleta de diagnósticos no cluster

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

Uma maneira de carregar e coletar logs é usar a extensão WAD (Diagnóstico do Azure), que carrega logs no Armazenamento do Azure e também tem a opção de enviar logs para o Azure Application Insights ou Hubs de Eventos. Você também pode usar um processo externo para ler os eventos do armazenamento e colocá-los em um produto de plataforma de análise, como logs do Azure Monitor ou outra solução de análise de log.

Se você estiver seguindo este tutorial, a coleção de diagnósticos já está configurada no modelo.

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. Modifique o modelo do Gerenciador de Recursos usado para criar o cluster existente ou baixe o modelo do portal. Modifique o arquivo template.json executando as seguintes tarefas:

Adicione um novo recurso de armazenamento à seção de recursos no modelo:

"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 nome e o tipo da conta de armazenamento à seção de parâmetros do modelo. Substitua o espaço reservado, o nome da conta de armazenamento de texto vai aqui pelo nome da conta de armazenamento desejada.

"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. Se você estiver usando o modelo de exemplo, há três conjuntos de dimensionamento de máquina virtual (um para cada tipo de nó no 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 EventStore

O serviço EventStore é uma opção de monitoramento no Service Fabric. O EventStore fornece uma maneira de entender o estado do cluster ou das cargas de trabalho em um determinado momento. O EventStore é um serviço do Service Fabric com estado que mantém eventos do cluster. O evento é exposto por meio do Service Fabric Explorer, REST e APIs. O EventStore consulta o cluster diretamente para obter dados de diagnóstico sobre qualquer entidade no cluster e deve ser usado para ajudar:

  • Diagnosticar problemas no desenvolvimento ou teste, ou onde você pode estar usando um pipeline de monitoramento
  • Confirme se as ações de gerenciamento que você está executando no cluster estão sendo processadas corretamente
  • Obtenha um "instantâneo" de como o Service Fabric está interagindo com uma entidade específica

Para habilitar o serviço EventStore em seu cluster, adicione o seguinte à propriedade fabricSettings do recurso Microsoft.ServiceFabric/clusters :

"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 cluster

Os logs do Azure Monitor são nossa recomendação para monitorar eventos no nível do cluster. 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.

O espaço de trabalho precisa estar conectado aos dados de diagnóstico provenientes do cluster. Esses dados de log são armazenados na conta de armazenamento applicationDiagnosticsStorageAccountName , nas tabelas WADServiceFabric*EventTable, WADWindowsEventLogsTable e WADETWEventTable.

Adicione o espaço de trabalho do Azure Log Analytics e adicione a solução ao espaço de trabalho:

"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 parâmetros

"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 variáveis:

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

Adicione a extensão do agente do Log Analytics a cada escala de máquina virtual definida no cluster e conecte o agente ao espaço de trabalho do Log Analytics. Isso permite coletar dados de diagnóstico sobre contêineres, aplicativos e monitoramento de desempenho. Ao adicioná-lo como uma extensão ao recurso do conjunto de dimensionamento da máquina virtual, o Azure Resource Manager garante que ele seja instalado em todos os nós, mesmo ao dimensionar o 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]"
                        }
                    }
                }
            ...
            ]
        }
    }
}

Implementar a rede virtual e o cluster

Em seguida, configure a topologia de rede e implemente o cluster do Service Fabric. O modelo azuredeploy.json Resource Manager cria uma rede virtual, sub-rede e grupo de segurança de rede para o Service Fabric. O modelo também implementa um cluster com a segurança do certificado ativada. Para clusters de produção, use um certificado de uma autoridade de certificação como o certificado de cluster. Um certificado autoassinado pode ser utilizado para proteger clusters de teste.

O modelo neste artigo implanta um cluster que usa a impressão digital do certificado para identificar o certificado do cluster. Não há dois certificados que possam ter a mesma impressão digital, o que dificulta a gestão de certificados. Alternar um cluster implantado de impressões digitais de certificado para nomes comuns de certificado simplifica o gerenciamento de certificados. Para saber como atualizar o cluster para usar nomes comuns de certificado para gerenciamento de certificados, leia Alterar cluster para gerenciamento de nomes comuns de certificado.

Criar um cluster usando um certificado existente

O script a seguir usa o cmdlet New-AzServiceFabricCluster e um modelo para implantar um novo cluster no Azure. O cmdlet cria um novo cofre de chaves no Azure e carrega seu certificado.

# 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 autoassinado

O script a seguir usa o cmdlet New-AzServiceFabricCluster e um modelo para implantar um novo cluster no Azure. O cmdlet cria um novo cofre de chaves no Azure, adiciona um novo certificado autoassinado ao cofre de chaves e baixa o arquivo de certificado localmente.

# 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

Ligar ao cluster seguro

Conecte-se ao cluster usando o módulo PowerShell do Service Fabric instalado com o SDK do Service Fabric. Primeiro, instale o certificado no arquivo Pessoal (Meu) do utilizador atual no seu computador. Execute o seguinte comando do PowerShell:

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

Agora você está pronto para se conectar ao seu cluster seguro.

O módulo Service Fabric do PowerShell fornece muitos cmdlets para gerir clusters, aplicações e serviços do Service Fabric. Utilize o cmdlet Connect-ServiceFabricCluster para ligar ao cluster seguro. Os detalhes do thumbprint SHA-1 do certificado e ponto final de ligação encontram-se nos resultados do passo anterior.

Se você configurou anteriormente a autenticação de cliente do Microsoft Entra, execute o seguinte comando:

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

Se você não configurou a autenticação de cliente do Microsoft Entra, execute o seguinte comando:

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 .

Get-ServiceFabricClusterHealth

Clean up resources (Limpar recursos)

Os outros artigos desta série de tutoriais usam o cluster que você criou. Se não passar imediatamente para o artigo seguinte, poderá eliminar o cluster para evitar incorrer em custos.

Próximos passos

Avance para o tutorial a seguir para saber como dimensionar seu cluster.

  • Criar uma VNET no Azure com o PowerShell
  • Criar um cofre de chaves e carregar um certificado
  • Configurar a autenticação do Microsoft Entra
  • Configurar a coleção de diagnósticos
  • Configurar o serviço EventStore
  • Configurar logs do Azure Monitor
  • Criar um cluster do Service Fabric seguro no Azure PowerShell
  • Proteger o cluster com um certificado X.509
  • Ligar ao cluster com o PowerShell
  • Remover um cluster

Em seguida, avance para o tutorial a seguir para saber como monitorar seu cluster.