Partilhar via


Como remover um tipo de nó do Service Fabric

Este artigo descreve como dimensionar um cluster do Azure Service Fabric removendo um tipo de nó existente de um cluster. Um cluster do Service Fabric é um conjunto ligado à rede de máquinas virtuais ou físicas, no qual os microsserviços são implementados e geridos. Uma máquina ou VM que faz parte de um cluster é chamada de nó. Os conjuntos de dimensionamento de máquinas virtuais são um recurso de computação do Azure que você usa para implantar e gerenciar uma coleção de máquinas virtuais como um conjunto. Cada tipo de nó definido em um cluster do Azure é configurado como um conjunto de escala separado. Cada tipo de nó pode ser gerenciado separadamente. Depois de criar um cluster do Service Fabric, você pode dimensionar um cluster horizontalmente removendo um tipo de nó (conjunto de dimensionamento de máquina virtual) e todos os seus nós. Você pode dimensionar o cluster a qualquer momento, mesmo quando as cargas de trabalho estão em execução no cluster. À medida que o cluster é dimensionado, seus aplicativos também são dimensionados automaticamente.

Aviso

O uso dessa abordagem para remover um tipo de nó de um cluster de produção não é recomendado para ser usado com frequência. É um comando perigoso, pois exclui o recurso do conjunto de escala da máquina virtual atrás do tipo de nó.

Características de durabilidade

A segurança é priorizada sobre a velocidade ao usar Remove-AzServiceFabricNodeType. O tipo de nó deve ser nível de durabilidade Silver ou Gold, porque:

  • Bronze não lhe dá quaisquer garantias sobre como salvar informações do estado.
  • A durabilidade Silver e Gold retém quaisquer alterações no conjunto de escalas.
  • O Gold também lhe dá controlo sobre as atualizações do Azure por baixo do conjunto de escalas.

O Service Fabric "orquestra" alterações e atualizações subjacentes para que os dados não sejam perdidos. No entanto, quando você remove um tipo de nó com durabilidade Bronze, você pode perder informações de estado. Se você estiver removendo um tipo de nó primário e seu aplicativo for sem monitoração de estado, o Bronze será aceitável. Quando você executa cargas de trabalho com monitoração de estado na produção, a configuração mínima deve ser Silver. Da mesma forma, para cenários de produção, o tipo de nó primário deve ser sempre Prata ou Ouro.

Mais sobre a durabilidade do bronze

Ao remover um tipo de nó que é Bronze, todos os nós no tipo de nó caem imediatamente. O Service Fabric não interceta nenhuma atualização de conjunto de escala de nós Bronze, portanto, todas as VMs ficam inativas imediatamente. Se você tinha algo stateful nesses nós, os dados são perdidos. Agora, mesmo que você fosse apátrida, todos os nós do Service Fabric participam do anel, então uma vizinhança inteira pode ser perdida, o que pode desestabilizar o próprio cluster.

Remover um tipo de nó

  1. Cuide desses pré-requisitos antes de iniciar o processo.

    • O cluster está íntegro.
    • Ainda haverá capacidade suficiente depois que o tipo de nó for removido, por exemplo, o número de nós para colocar a contagem de réplicas necessária.
  2. Mova todos os serviços que têm restrições de posicionamento para usar o tipo de nó para fora do tipo de nó.

    • Modifique o Manifesto do Aplicativo/Serviço para não fazer mais referência ao tipo de nó.
    • Implante a alteração.

    Em seguida, valide isso:

    • Todos os serviços modificados acima não estão mais em execução no nó pertencente ao tipo de nó.
    • Todos os serviços são saudáveis.
  3. Desmarcar o tipo de nó como não primário (Ignorar para tipos de nó não primários)

    • Localize o modelo do Azure Resource Manager usado para implantação.
    • Encontre a seção relacionada ao tipo de nó na seção Service Fabric.
    • Altere a propriedade isPrimary para false. ** Não remova a seção relacionada ao tipo de nó nesta tarefa.
    • Implante o modelo modificado do Azure Resource Manager. ** Dependendo da configuração do cluster, esta etapa pode demorar um pouco.

    Em seguida, valide isso:

    • A Seção do Service Fabric no Portal indica que o cluster está pronto.
    • O cluster está íntegro.
    • Nenhum dos nós pertencentes ao tipo de nó é marcado como Nó Semente.
  4. Desative cada nó no tipo de nó.

    Conecte-se ao cluster usando o PowerShell e execute a etapa a seguir.

    $nodeType = "" # specify the name of node type
    $nodes = Get-ServiceFabricNode
    
    foreach($node in $nodes)
    {
      if ($node.NodeType -eq $nodeType)
      {
        $node.NodeName
    
        Disable-ServiceFabricNode -Intent RemoveNode -NodeName $node.NodeName -Force
      }
    }
    
    • Para durabilidade bronze, aguarde até que todos os nós cheguem ao estado desativado
    • Para durabilidade de prata e ouro, alguns nós entram em desativado e o resto estará em estado incapacitante. Verifique a guia de detalhes dos nós em estado de desativação, se todos eles estiverem presos em garantir quórum para partições de serviço de infraestrutura, então é seguro continuar.
  5. Pare os dados para o tipo de nó.

    Conecte-se ao cluster usando o PowerShell e execute a etapa a seguir.

    foreach($node in $nodes)
    {
      if ($node.NodeType -eq $nodeType)
      {
        $node.NodeName
    
        Start-ServiceFabricNodeTransition -Stop -OperationId (New-Guid) -NodeInstanceId $node.NodeInstanceId -NodeName $node.NodeName -StopDurationInSeconds 10000
      }
    }
    

    Aguarde até que todos os nós para o tipo de nó sejam marcados como Down.

  6. Desalocar nós no Conjunto de Escala de Máquina Virtual original

    Faça logon na assinatura do Azure onde o conjunto de escala foi implantado e remova o Conjunto de Dimensionamento de Máquina Virtual.

    $scaleSetName="myscaleset"
    $scaleSetResourceType="Microsoft.Compute/virtualMachineScaleSets"
    
    Remove-AzResource -ResourceName $scaleSetName -ResourceType $scaleSetResourceType -ResourceGroupName $resourceGroupName -Force
    
  7. Remova os dados do tipo de nó.

    Conecte-se ao cluster usando o PowerShell e execute a etapa a seguir.

    foreach($node in $nodes)
    {
      if ($node.NodeType -eq $nodeType)
      {
        $node.NodeName
    
        Remove-ServiceFabricNodeState -NodeName $node.NodeName -Force
      }
    }
    

    Aguarde até que todos os nós sejam removidos do cluster. Os nós não devem ser exibidos no SFX.

  8. Remova o tipo de nó da seção Service Fabric.

    • Localize o modelo do Azure Resource Manager usado para implantação.
    • Encontre a seção relacionada ao tipo de nó na seção Service Fabric.
    • Remova a seção correspondente ao tipo de nó.
    • Somente para clusters Silver e de maior durabilidade, atualize o recurso de cluster no modelo e configure as políticas de integridade para ignorar a malha:/Integridade do aplicativo do sistema adicionando applicationDeltaHealthPolicies em recurso properties de cluster, conforme indicado abaixo. A política abaixo deve ignorar os erros existentes, mas não permitir novos erros de integridade.
    "upgradeDescription":  
    { 
     "forceRestart": false, 
     "upgradeReplicaSetCheckTimeout": "10675199.02:48:05.4775807", 
     "healthCheckWaitDuration": "00:05:00", 
     "healthCheckStableDuration": "00:05:00", 
     "healthCheckRetryTimeout": "00:45:00", 
     "upgradeTimeout": "12:00:00", 
     "upgradeDomainTimeout": "02:00:00", 
     "healthPolicy": { 
       "maxPercentUnhealthyNodes": 100, 
       "maxPercentUnhealthyApplications": 100 
     }, 
     "deltaHealthPolicy":  
     { 
       "maxPercentDeltaUnhealthyNodes": 0, 
       "maxPercentUpgradeDomainDeltaUnhealthyNodes": 0, 
       "maxPercentDeltaUnhealthyApplications": 0, 
       "applicationDeltaHealthPolicies":  
       { 
           "fabric:/System":  
           { 
               "defaultServiceTypeDeltaHealthPolicy":  
               { 
                       "maxPercentDeltaUnhealthyServices": 0 
               } 
           } 
       } 
     } 
    },
    
    • Implante o modelo modificado do Azure Resource Manager. ** Esta etapa demora um pouco, geralmente até duas horas. Essa atualização altera as configurações para o InfrastructureService, portanto, uma reinicialização do nó é necessária. Neste caso forceRestart é ignorado. O parâmetro upgradeReplicaSetCheckTimeout especifica o tempo máximo que o Service Fabric aguarda para que uma partição esteja em um estado seguro, se ainda não estiver em um estado seguro. Depois que as verificações de segurança forem aprovadas para todas as partições em um nó, o Service Fabric prosseguirá com a atualização nesse nó. O valor para o parâmetro upgradeTimeout pode ser reduzido para 6 horas, mas para segurança máxima devem ser utilizadas 12 horas.

    Em seguida, valide isso:

    • O recurso do Service Fabric no portal mostra pronto.
  9. Remova todas as referências aos recursos relacionados ao tipo de nó do modelo ARM.

    • Localize o modelo do Azure Resource Manager usado para implantação.
    • Remova o conjunto de dimensionamento da máquina virtual e outros recursos relacionados ao tipo de nó do modelo.
    • Implante as alterações.

    Em seguida:

    • Aguarde a conclusão da implantação.
  10. Remova recursos relacionados ao tipo de nó que não estão mais em uso. Exemplo de balanceador de carga e IP público.

    • Para remover esses recursos, você pode usar o mesmo comando do PowerShell usado na etapa 6, especificando o tipo de recurso específico e a versão da API.
    • Para durabilidade prata e ouro, qualquer tarefa de reparo deixada no cluster, que tenha como alvo qualquer um dos nós que estavam presentes no tipo de nó que foi removido, deve ser concluída com o comando:
       Complete-ServiceFabricRepairTask -TaskId <repair task name>
    

Nota

Esta etapa é opcional se o mesmo Balanceador de Carga e IP for reutilizado entre tipos de nó.

Próximos passos