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:
- Se não tiver uma subscrição do Azure, crie uma conta gratuita
- Instale a CLI do Service Fabric
- Instalar a CLI do Azure
- Para aprender os principais conceitos de clusters, leia Visão geral dos clusters do Azure
- Planeje e prepare-se para uma implantação de cluster de produção.
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.