Implementar um cluster do Service Fabric do Linux numa rede virtual do Azure

Neste artigo, você aprenderá a implantar um cluster do Linux Service Fabric em uma rede virtual (VNET) do Azure usando a CLI do Azure e um modelo. Quando tiver terminado, terá um cluster em execução na cloud, no qual poderá implementar aplicações. Para criar um cluster do Windows com o PowerShell, veja Criar um cluster do Windows seguro no Azure.

Pré-requisitos

Antes de começar:

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

Transferir e explorar o modelo

Transfira os seguintes ficheiros de modelos do Resource Manager:

Para Ubuntu 18.04 LTS:

  • AzureDeploy.json
    • vmImageSku atributo é para "18.04-LTS"
    • Recursos Microsoft.ServiceFabric/clusters
      • apiVersion sendo definido como "2019-03-01"
      • Propriedade vmImage sendo definida como "Ubuntu18_04"
  • AzureDeploy.Parameters.json

Para Ubuntu 20.04 LTS:

  • AzureDeploy.json
    • vmImageSku atributo é para "20.04-LTS"
    • Recursos Microsoft.ServiceFabric/clusters
      • apiVersion sendo definido como "2019-03-01"
      • Propriedade vmImage sendo definida como "Ubuntu20_04"
  • AzureDeploy.Parameters.json

Esses modelos implantam um cluster seguro de sete máquinas virtuais e três tipos de nó em uma rede virtual. 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, é implementado um cluster Linux 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), um nó em cada um dos outros tipos de nó
  • OS: (Ubuntu 18.04 LTS / Ubuntu 20.04) (configurável nos parâmetros do modelo)
  • protegido por certificado (configurável nos parâmetros do modelo)
  • O serviço DNS está ativado
  • Nível de durabilidade de Bronze (configurável nos parâmetros do modelo)
  • Nível de fiabilidade de Prata (configurável nos parâmetros do modelo)
  • ponto final de ligação de cliente: 19000 (configurável nos parâmetros do modelo)
  • ponto final de 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 e testes e regras são configurados para as seguintes portas:

  • ponto final de ligação de cliente: 19000
  • ponto final de gateway HTTP: 19080
  • porta da aplicação: 80
  • porta da aplicação: 443

Rede virtual e sub-rede

Os nomes da rede virtual e sub-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ços de rede virtual: 10.0.0.0/16
  • espaço de endereços de sub-rede do Service Fabric: 10.0.2.0/24

Se forem necessárias quaisquer outras portas da aplicação, terá de ajustar o recurso Microsoft.Network/loadBalancers para permitir o tráfego nas mesmas.

Extensão do Service Fabric

No recurso Microsoft.Compute/virtualMachineScaleSets, a extensão Linux do Service Fabric é configurada. Essa extensão é usada para inicializar o Service Fabric em Máquinas Virtuais do Azure e configurar a Segurança do Nó.

A seguir está um trecho de modelo para a extensão Linux do Service Fabric:

"extensions": [
  {
    "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
    "properties": {
      "type": "ServiceFabricLinuxNode",
      "autoUpgradeMinorVersion": true,
      "enableAutomaticUpgrade": true,
      "protectedSettings": {
        "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
       },
       "publisher": "Microsoft.Azure.ServiceFabric",
       "settings": {
         "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
         "nodeTypeRef": "[variables('vmNodeType0Name')]",
         "durabilityLevel": "Silver",
         "enableParallelJobs": true,
         "nicPrefixOverride": "[variables('subnet0Prefix')]",
         "certificate": {
           "commonNames": [
             "[parameters('certificateCommonName')]"
           ],
           "x509StoreName": "[parameters('certificateStoreValue')]"
         }
       },
       "typeHandlerVersion": "2.0"
     }
   },

Definir parâmetros de modelo

O arquivo AzureDeploy.Parameters declara muitos valores usados para implantar o cluster e os recursos associados. Alguns dos parâmetros que poderá ser necessário modificar para a sua implementação:

Parâmetro Valor de exemplo Notas
adminUserName vmadmin O nome de utilizador administrador para as VMs do cluster.
adminPassword Password#1234 A palavra-passe de utilizador administrador para as VMs do cluster.
clusterName mysfcluster123 O nome do cluster.
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".

Implementar a rede virtual e o cluster

Em seguida, configure a topologia de rede e implemente o cluster do Service Fabric. O modelo do Resource Manager AzureDeploy.json cria uma rede virtual (VNET) e uma sub-rede para o Service Fabric. O modelo também implementa um cluster com a segurança do certificado ativada. Para clusters de produção, utilize um certificado de uma autoridade de certificação (AC) 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 do uso de impressões digitais de certificado para o uso de nomes comuns de certificado torna o gerenciamento de certificados muito mais simples. 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 através de um certificado existente

O script seguinte utiliza o comando az sf cluster create e o modelo para implementar um novo cluster protegido por um certificado existente. O comando também cria um novo cofre de chaves no Azure e carrega o certificado.

ResourceGroupName="sflinuxclustergroup"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates\MyCertificate.pem"

# sign in to your Azure account and select your subscription
az login
az account set --subscription <guid>

# Create a new resource group for your deployment and give it a name and a location.
az group create --name $ResourceGroupName --location $Location

# Create the Service Fabric cluster.
az sf cluster create --resource-group $ResourceGroupName --location $Location \
   --certificate-password $Password --certificate-file $CertPath \
   --vault-name $VaultName --vault-resource-group $ResourceGroupName  \
   --template-file AzureDeploy.json --parameter-file AzureDeploy.Parameters.json

Criar um cluster ao utilizar um novo certificado autoassinado

O script seguinte utiliza o comando az sf cluster create e o modelo para implementar um novo cluster no Azure. O comando também cria um novo cofre de chaves no Azure, adiciona um novo certificado autoassinado ao cofre de chaves e baixa o arquivo de certificado localmente.

ResourceGroupName="sflinuxclustergroup"
ClusterName="sflinuxcluster"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates"

az sf cluster create --resource-group $ResourceGroupName --location $Location \
   --cluster-name $ClusterName --template-file C:\temp\cluster\AzureDeploy.json \
   --parameter-file C:\temp\cluster\AzureDeploy.Parameters.json --certificate-password $Password \
   --certificate-output-folder $CertPath --certificate-subject-name $ClusterName.$Location.cloudapp.azure.com \
   --vault-name $VaultName --vault-resource-group $ResourceGroupName

Ligar ao cluster seguro

Ligue ao cluster com o comando sfctl cluster select da CLI do Service Fabric e a sua chave. Tenha em atenção, utilize apenas a opção --no-verify para um certificado autoassinado.

sfctl cluster select --endpoint https://aztestcluster.southcentralus.cloudapp.azure.com:19080 \
--pem ./aztestcluster201709151446.pem --no-verify

Certifique-se de que está ligado e que o cluster está em bom estado de funcionamento, com o comando sfctl cluster health.

sfctl cluster health

Clean up resources (Limpar recursos)

Se não passar imediatamente para o artigo seguinte, poderá eliminar o cluster para evitar incorrer em custos.

Próximos passos

Saiba como dimensionar um Cluster.

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 do uso de impressões digitais de certificado para o uso de nomes comuns de certificado torna o gerenciamento de certificados muito mais simples. 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.