Como remover o 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 de computadores físicos ou virtuais conectados via rede, nos quais os microsserviços são implantados e gerenciados. Uma máquina ou VM que faz parte de um cluster é chamada de nó. 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 dimensionamento separado. Então, 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áquinas virtuais) e todos os seus nós. É possível dimensionar o cluster a qualquer momento, mesmo quando as cargas de trabalho estiverem em execução no cluster. Na medida em que o cluster for dimensionado, os aplicativos também serão dimensionados automaticamente.
Aviso
Não recomendamos usar esta abordagem com frequência para remover um tipo de nó de um cluster de produção. Esse é um comando muito perigoso, pois ele exclui o recurso de conjunto de dimensionamento de máquinas virtuais por trás do tipo de nó.
Características de durabilidade
Segurança terá prioridade sobre velocidade quando você usa Remove-AzServiceFabricNodeType. O tipo de nó deve ser do nível de durabilidade Prata ou Ouro, porque:
- Bronze não dá nenhuma garantia sobre como salvar informações de estado.
- A durabilidade Prata ou Ouro intercepta todas as alterações para o conjunto de dimensionamento.
- Ouro também dá controle sobre as atualizações do Azure sob o conjunto de dimensionamento.
O Service Fabric "orquestra" alterações subjacentes e atualiza de forma que os dados não sejam perdidos. No entanto, quando remove um nó com durabilidade Bronze, você pode perder informações de estado. Se você está removendo um tipo de nó primário e o aplicativo é sem estado, Bronze é aceitável. Quando você executar cargas de trabalho com monitoramento de estado na produção, a configuração mínima deve ser Prata. Da mesma forma, cenários de produção do tipo de nó primário devem ser sempre Prata ou Ouro.
Mais informações sobre durabilidade de Bronze
Ao remover um tipo de nó que é Bronze, todos os nós no tipo de nó diminuem imediatamente. O Service Fabric não intercepta todas as atualizações do conjunto de dimensionamento de nós de Bronze, assim, todas as VMs ficam inativas imediatamente. Se você tiver qualquer coisa com o monitoamento de estado em nós, os dados são perdidos. Agora, mesmo se você estivesse sem estado, todos os nós no Service Fabric participam do anel, portanto, uma vizinhança inteira pode ser perdida, o que pode desestabilizar o cluster em si.
Remover um tipo de nó
Cuide destes 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. número de nós para colocar a contagem de réplicas necessárias.
Mova todos os serviços que têm restrições de posicionamento para usar o tipo de nó fora do tipo de nó.
- Modifique o manifesto do aplicativo/serviço para não referenciar mais o tipo de nó.
- Implante a alteração.
Em seguida, valide isto:
- Todos os serviços modificados acima não estão mais em execução no nó daquele tipo.
- Todos os serviços estão íntegros.
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.
- Localize 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 do Azure Resource Manager. ** Dependendo da configuração do cluster, essa etapa pode demorar um pouco.
Em seguida, valide isto:
- A seção Service Fabric do portal indica que o cluster está pronto.
- O cluster está íntegro.
- Nenhum dos nós pertencentes ao tipo de nó são marcados como nó semente.
Desabilite cada nó no tipo de nó.
Conecte-se ao cluster usando o PowerShell e realize a etapa abaixo.
$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 de bronze, aguarde até que todos os nós cheguem ao estado desabilitado
- Para durabilidade prata e ouro, alguns nós entrarão no estado desabilitado e o restante estará no estado desabilitando. Verifique a guia de detalhes dos nós no estado desabilitando. Se todos estiverem presos na garantia de quorum para partições de serviço de infraestrutura, você poderá continuar.
Interromper os dados do tipo de nó.
Conecte-se ao cluster usando o PowerShell e realize a etapa abaixo.
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 do tipo de nó sejam marcados como inativos.
Desalocar nós no conjunto de dimensionamento de máquinas virtuais original
Faça logon na assinatura do Azure em que o conjunto de dimensionamento foi implantado e remova o conjunto de dimensionamento de máquinas virtuais.
$scaleSetName="myscaleset" $scaleSetResourceType="Microsoft.Compute/virtualMachineScaleSets" Remove-AzResource -ResourceName $scaleSetName -ResourceType $scaleSetResourceType -ResourceGroupName $resourceGroupName -Force
Remova os dados do tipo de nó.
Conecte-se ao cluster usando o PowerShell e realize a etapa abaixo.
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 em SFX.
Remova o tipo de nó da seção Service Fabric.
- Localize o modelo do Azure Resource Manager usado para implantação.
- Localize 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 de durabilidade prata e mais alta, atualize o recurso de cluster no modelo e adicione
applicationDeltaHealthPolicies
ao recurso de clusterproperties
para configurar as políticas de integridade para ignorar a integridade de aplicativo de malha:/Sistema, conforme as instruções abaixo. A política abaixo deve ignorar os erros atuais, 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 do Azure Resource Manager. ** Esta etapa leva algum tempo, geralmente até duas horas. A atualização altera as configurações de InfrastructureService, portanto, é necessário reiniciar o nó. Nesse caso,
forceRestart
é ignorado. O parâmetroupgradeReplicaSetCheckTimeout
especifica o tempo máximo que Service Fabric aguarda até que uma partição esteja em um estado seguro, se ainda não estiver em um estado seguro. Depois que todas as partições de um nó passam nas verificações de segurança, o Service Fabric continua com a atualização do nó. É possível reduzir o valor do parâmetroupgradeTimeout
para 6 horas, mas você deve usar 12 horas para ter segurança máxima.
Em seguida, valide isto:
- O recurso do Service Fabric aparece como pronto no portal.
Remova todas as referências aos recursos relacionados ao tipo de nó do modelo do ARM.
- Localize o modelo do Azure Resource Manager usado para implantação.
- Remova do modelo o conjunto de dimensionamento de máquinas virtuais e outros recursos relacionados ao tipo de nó.
- Implante as alterações.
Em seguida:
- Aguarde o fim da implantação.
Remova os recursos relacionados ao tipo de nó que não estão mais em uso. Por exemplo, balanceador de carga e IP público.
- Para remover esses recursos, você pode usar o mesmo comando do PowerShell usado na etapa 6, informando o tipo de recurso e a versão da API específicos.
- Para durabilidade prata e ouro, qualquer tarefa de reparo deixada no cluster, que tem como destino qualquer um dos nós que estavam presentes no nodetype que foi removido, deve ser concluída com o comando:
Complete-ServiceFabricRepairTask -TaskId <repair task name>
Observação
Essa etapa é opcional quando você usa o mesmo balanceador de carga e IP entre tipos de nós.
Próximas etapas
- Saiba mais sobre o cluster características de durabilidade.
- Saiba mais sobre tipos de nós e Conjuntos de Dimensionamento de Máquinas Virtuais.
- Saiba mais sobre Dimensionamento do cluster do Service Fabric.