Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Antes de criar qualquer cluster do Azure Service Fabric ou dimensionar recursos de computação que hospedam seu cluster, é importante planejar a capacidade. Para obter mais informações sobre como planejar a capacidade, consulte Planejando a capacidade do cluster do Service Fabric. Para obter mais orientações de práticas recomendadas para escalabilidade de cluster, consulte Considerações sobre escalabilidade do Service Fabric.
Além de considerar o tipo de nó e as características do cluster, você deve esperar que as operações de dimensionamento levem mais de uma hora para serem concluídas em um ambiente de produção. Essa consideração é verdadeira independentemente do número de VMs que você está adicionando.
Dimensionamento automático
Você deve executar operações de dimensionamento por meio de modelos do Azure Resource Manager, porque é a prática recomendada tratar as configurações de recursos como código.
O uso do dimensionamento automático por meio de conjuntos de dimensionamento de máquina virtual fará com que seu modelo do Gerenciador de Recursos versionado defina incorretamente suas contagens de instâncias para conjuntos de dimensionamento de máquina virtual. A definição imprecisa aumenta o risco de que implantações futuras causem operações de dimensionamento não intencionais. Em geral, você deve usar o dimensionamento automático se:
A implantação dos seus modelos do Gerenciador de Recursos, com a capacidade apropriada declarada, não é compatível com o seu caso de uso.
Além do dimensionamento manual, você pode configurar um pipeline de integração e entrega contínua nos Serviços de DevOps do Azure usando projetos de implantação de grupo de recursos do Azure. Esse pipeline geralmente é acionado por um aplicativo lógico que usa métricas de desempenho de máquina virtual consultadas da API REST do Azure Monitor. O pipeline é dimensionado automaticamente com base em quaisquer métricas desejadas, enquanto otimiza para modelos do Resource Manager.
Você precisa dimensionar horizontalmente apenas um nó de conjunto de escala de máquina virtual de cada vez.
Para expandir em três ou mais nós de cada vez, você deve expandir um cluster do Service Fabric adicionando um conjunto de dimensionamento de máquina virtual. É mais seguro aumentar e diminuir conjuntos de escalonamento de máquinas virtuais horizontalmente, um nó de cada vez.
Você tem confiabilidade Silver ou superior para seu cluster do Service Fabric e durabilidade Silver ou superior em qualquer escala em que configure regras de dimensionamento automático.
A capacidade mínima para regras de dimensionamento automático deve ser igual ou maior que cinco instâncias de máquina virtual. Ele também deve ser igual ou maior do que o seu nível de confiabilidade mínimo para o tipo de nó principal.
Nota
A malha de serviços com estado do Service Fabric em /System/InfrastructureService/<NODE_TYPE_NAME> funciona em todos os tipos de nó com durabilidade Silver ou superior. É o único serviço do sistema com suporte para execução no Azure em qualquer um dos tipos de nó de clusters.
Importante
O dimensionamento automático do Service Fabric oferece suporte a Default e NewestVM as configurações de redução de escala dos conjuntos de dimensionamento de máquinas virtuais.
Considerações sobre dimensionamento vertical
O dimensionamento vertical de um tipo de nó no Azure Service Fabric requer várias etapas e considerações. Por exemplo:
- O cluster deve estar saudável antes do dimensionamento. Caso contrário, você desestabilizará ainda mais o cluster.
- O nível de durabilidade prata ou superior é necessário para todos os tipos de nó de cluster do Service Fabric que hospedam serviços com estado.
Nota
O tipo de nó principal que hospeda serviços do sistema Service Fabric com estado persistente deve ter um nível de durabilidade Prata ou superior. Depois de habilitar a durabilidade Silver, as operações de cluster, como atualizações, adição ou remoção de nós e assim por diante, serão mais lentas porque o sistema otimiza a segurança dos dados em relação à velocidade das operações.
O dimensionamento vertical de uma escala de máquina virtual definida simplesmente alterando sua SKU de recurso é uma operação destrutiva, porque recria imagens de seus hosts, removendo assim todo o estado persistente localmente. Em vez disso, você desejará dimensionar horizontalmente seu cluster adicionando um novo conjunto de escala com a SKU desejada e, em seguida, migrar seus serviços para o novo conjunto de escala para concluir uma operação segura de dimensionamento vertical.
O teu cluster utiliza as propriedades de nó do Service Fabric e as restrições de posicionamento para decidir onde hospedar os serviços da tua aplicação. Ao dimensionar verticalmente um tipo de nó primário, você implantará um segundo tipo de nó primário e, em seguida, definirá ("isPrimary": false) no tipo de nó primário original e prosseguirá para desabilitar seus nós e remover seu conjunto de escala e seus recursos relacionados. Para obter detalhes, consulte Dimensionar um tipo de nó primário de cluster do Service Fabric.
Nota
Sempre valide operações em ambientes de teste antes de tentar alterações no ambiente de produção. Por padrão, os serviços do sistema de cluster do Service Fabric têm uma restrição de posicionamento que se aplica exclusivamente ao tipo de nó primário de destino.
Com as propriedades do nó e as restrições de posicionamento declaradas, execute as etapas a seguir uma instância de VM de cada vez. Isso permite que os serviços do sistema (e os seus serviços com estado) sejam desligados de forma suave na instância da VM que está a remover enquanto novas réplicas são criadas noutro local.
- No PowerShell, execute
Disable-ServiceFabricNodecom a intençãoRemoveNodede desabilitar o nó que você vai remover. Remova o tipo de nó que tem o número mais alto. Por exemplo, se você tiver um cluster de seis nós, remova a instância de máquina virtual "MyNodeType_5". - Execute
Get-ServiceFabricNodepara certificar-se de que o nó transitou para desativado. Caso contrário, aguarde até que o nó seja desativado. Isso pode levar algumas horas para cada nó. Não prossiga até que o nó tenha transitado para o estado de desativado. - Diminua o número de VMs em uma nesse tipo de nó. A instância de VM mais alta será removida.
- Repita as etapas 1 a 3 conforme necessário, mas nunca dimensione o número de instâncias nos tipos de nós primários abaixo do que a camada de confiabilidade exige. Consulte Planeamento da capacidade do cluster do Service Fabric para obter uma lista de instâncias recomendadas.
- Quando todas as VMs estiverem desligadas (representadas como "Inativas"), a infra-estrutura:/System/InfrastructureService/[nome do nó] mostrará um estado de erro. Em seguida, você pode atualizar o recurso de cluster para remover o tipo de nó. Você pode usar a implantação do modelo ARM ou editar o recurso de cluster por meio do gerenciador de recursos Azure. Isso iniciará uma atualização de cluster que removerá o serviço fabric:/System/InfrastructureService/[node type] que está no estado de falha.
- Depois disso, pode opcionalmente eliminar o VMScaleSet; no entanto, ainda verá os nós como "Inativos" na vista do Service Fabric Explorer. O último passo seria limpá-los com o comando
Remove-ServiceFabricNodeState.
Dimensionamento horizontal
Você pode fazer o dimensionamento horizontal manualmente ou programaticamente.
Nota
Se você estiver dimensionando um tipo de nó com durabilidade Silver ou Gold, o dimensionamento será lento.
Aumentar horizontalmente
Expanda um cluster do Service Fabric aumentando a contagem de instâncias para um determinado conjunto de máquinas virtuais escaláveis. Você pode expandir programaticamente usando AzureClient e o ID para o conjunto de escalas desejado a fim de aumentar a capacidade.
var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);
var newCapacity = (int)Math.Min(MaximumNodeCount, scaleSet.Capacity + 1);
scaleSet.Update().WithCapacity(newCapacity).Apply();
Para dimensionar manualmente, atualize a capacidade na propriedade SKU do recurso desejado de conjunto de escala de máquina virtual.
"sku": {
"name": "[parameters('vmNodeType0Size')]",
"capacity": "[parameters('nt0InstanceCount')]",
"tier": "Standard"
}
Escalonamento em
A redução de escala requer mais consideração do que o aumento de escala. Por exemplo:
- Os serviços do sistema Service Fabric são executados no tipo de nó primário do cluster. Nunca desligue ou dimensione o número de instâncias para esse tipo de nó para que você tenha menos instâncias do que o que a camada de confiabilidade garante.
- Para um serviço de estado, é necessário um certo número de nós que estejam sempre disponíveis para manter a disponibilidade e preservar o estado do seu serviço. No mínimo, você precisa de um número de nós igual à contagem do conjunto de réplicas de destino da partição ou serviço.
Para ajustar manualmente, siga estas etapas:
- No PowerShell, execute
Disable-ServiceFabricNodecom a intençãoRemoveNodede desabilitar o nó que você vai remover. Remova o tipo de nó que tem o número mais alto. Por exemplo, se você tiver um cluster de seis nós, remova a instância de máquina virtual "MyNodeType_5". - Execute
Get-ServiceFabricNodepara certificar-se de que o nó transitou para desativado. Caso contrário, aguarde até que o nó seja desativado. Isso pode levar algumas horas para cada nó. Não prossiga até que o nó tenha transitado para o estado de desativado. - Diminua o número de VMs em uma nesse tipo de nó. A instância de VM mais alta será removida.
- Repita as etapas 1 a 3, conforme necessário, até provisionar a capacidade desejada. Não dimensione o número de instâncias nos tipos de nó primário para menos do que o nível garantido pela confiabilidade. Consulte Planeamento da capacidade do cluster do Service Fabric para obter uma lista de instâncias recomendadas.
Para dimensionar manualmente, atualize a capacidade na propriedade SKU do recurso conjunto de escala de máquina virtual desejado.
"sku": {
"name": "[parameters('vmNodeType0Size')]",
"capacity": "[parameters('nt0InstanceCount')]",
"tier": "Standard"
}
Você deve preparar o nó para o desligamento para ser dimensionado programaticamente. Encontre o nó a ser removido (o nó de maior instância). Por exemplo:
using (var client = new FabricClient())
{
var mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync())
.Where(n => n.NodeType.Equals(NodeTypeToScale, StringComparison.OrdinalIgnoreCase))
.Where(n => n.NodeStatus == System.Fabric.Query.NodeStatus.Up)
.OrderByDescending(n =>
{
var instanceIdIndex = n.NodeName.LastIndexOf("_");
var instanceIdString = n.NodeName.Substring(instanceIdIndex + 1);
return int.Parse(instanceIdString);
})
.FirstOrDefault();
Desative e remova o nó usando a mesma FabricClient instância (client neste caso) e a mesma instância do nó (instanceIdString neste caso) que você usou no código anterior:
var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);
// Remove the node from the Service Fabric cluster
ServiceEventSource.Current.ServiceMessage(Context, $"Disabling node {mostRecentLiveNode.NodeName}");
await client.ClusterManager.DeactivateNodeAsync(mostRecentLiveNode.NodeName, NodeDeactivationIntent.RemoveNode);
// Wait (up to a timeout) for the node to gracefully shut down
var timeout = TimeSpan.FromMinutes(5);
var waitStart = DateTime.Now;
while ((mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Up || mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Disabling) &&
DateTime.Now - waitStart < timeout)
{
mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync()).FirstOrDefault(n => n.NodeName == mostRecentLiveNode.NodeName);
await Task.Delay(10 * 1000);
}
// Decrement virtual machine scale set capacity
var newCapacity = (int)Math.Max(MinimumNodeCount, scaleSet.Capacity - 1); // Check min count
scaleSet.Update().WithCapacity(newCapacity).Apply();
Nota
Ao dimensionar em um cluster, você verá a instância de nó/VM removida exibida em um estado não íntegro no Service Fabric Explorer. Para obter uma explicação desse comportamento, consulte Comportamentos que você pode observar no Service Fabric Explorer. Pode:
- Chame o comando Remove-ServiceFabricNodeState com o nome do nó apropriado.
- Implante o aplicativo auxiliar de dimensionamento automático do Service Fabric em seu cluster. Este aplicativo garante que os nós reduzidos sejam removidos do Service Fabric Explorer.
Níveis de fiabilidade
O nível de confiabilidade é uma propriedade do seu recurso de cluster do Service Fabric. Não é possível configurá-lo de forma diferente para tipos de nó individuais. Ele controla o fator de replicação dos serviços do sistema para o cluster e é uma configuração no nível de recurso do cluster.
O nível de confiabilidade determinará o número mínimo de nós que seu tipo de nó principal deve ter. A camada de confiabilidade pode ter os seguintes valores:
- Platinum: Executa os serviços do sistema com uma contagem de conjuntos de réplicas de destino de sete e nove nós de semente.
- Gold: Executa os serviços do sistema com uma contagem alvo de conjuntos de réplicas de sete réplicas e sete nós semente.
- Prata: executa os serviços do sistema com uma contagem alvo de conjuntos de réplicas de cinco e cinco nós semente.
- Bronze: Executa os serviços do sistema com um conjunto de réplicas de destino de três e três nós semente.
O nível mínimo de fiabilidade recomendado é Silver.
O nível de confiabilidade é definido na seção de propriedades do recurso Microsoft.ServiceFabric/clusters, da seguinte forma:
"properties":{
"reliabilityLevel": "Silver"
}
Níveis de durabilidade
Aviso
Os tipos de nós executados com durabilidade de Bronze não adquirem privilégios. Os trabalhos de infraestrutura que afetam as suas cargas de trabalho sem estado não serão parados ou adiados, o que pode impactar essas cargas de trabalho.
Use a durabilidade Bronze apenas para tipos de nó que executam cargas de trabalho sem monitoração de estado. Para cargas de trabalho de produção, execute a versão Silver ou superior para garantir a consistência do estado. Escolha a confiabilidade certa com base nas orientações na documentação de planejamento de capacidade.
O nível de durabilidade deve ser fixado em dois recursos. Um é o perfil de extensão do recurso de conjunto de escalas de máquinas virtuais:
"extensionProfile": {
"extensions": {
"name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
"properties": {
"settings": {
"durabilityLevel": "Bronze"
}
}
}
}
O outro recurso está sob nodeTypes no recurso Microsoft.ServiceFabric/clusters:
"nodeTypes": [
{
"name": "[variables('vmNodeType0Name')]",
"durabilityLevel": "Bronze"
}
]
Próximos passos
- Crie um cluster em VMs ou computadores que executam o Windows Server: criação de cluster do Service Fabric para Windows Server.
- Criar um cluster em VMs ou computadores que executam Linux: Crie um cluster Linux.
- Saiba mais sobre as opções de suporte do Service Fabric.