Crie um cluster Azure Stack HCI usando o PowerShell do Windows

Aplica-se a: Azure Stack HCI, versão 22H2

Important

O Azure Stack HCI agora faz parte do Azure Local. No entanto, versões mais antigas do Azure Stack HCI, por exemplo o 22H2, continuam a referenciar o Azure Stack HCI e não refletem a mudança de nome. Saiba mais.

Warning

As instruções de implementação fornecidas neste artigo aplicam-se a uma versão mais antiga, Azure Stack HCI, versão 22H2. Para novas implementações, recomendamos que utilize a versão mais recente e geralmente disponível do Azure Local, consulte Sobre a implementação do Azure Local.

Neste artigo, aprende como usar o PowerShell do Windows para criar um cluster hiperconvergente Azure Stack HCI que utiliza o Espaços de Armazenamento Direto. Se preferir usar o assistente de criação de clusters no Windows Admin Center para criar o cluster, veja Criar o cluster com o Windows Admin Center.

Note

Se estiveres a fazer uma instalação de servidor único do Azure Stack HCI 21H2, usa o PowerShell para criar o cluster.

Tens a escolha entre dois tipos de clusters:

  • Cluster padrão com um ou dois nós de servidor, todos a residir num único local.
  • Cluster estendido com pelo menos quatro nós de servidor que se estendem por dois locais, com dois nós por site.

Para o cenário de um único servidor, complete as mesmas instruções para um servidor.

Note

Os clusters stretch não são suportados numa configuração de servidor único.

Neste artigo, criamos um cluster de exemplo chamado Cluster1, composto por quatro nós de servidor chamados Server1, Server2, Server3 e Server4.

Para o cenário do cluster alongado, usamos ClusterS1 como nome e usamos os mesmos quatro nós de servidor espalhados pelos sites Site1 e Site2.

Para mais informações sobre aglomerados esticados, consulte a visão geral dos aglomerados esticados.

Antes de começares

Antes de começar, certifique-se de que:

Utilizar o Windows PowerShell

Pode correr o PowerShell localmente numa sessão RDP num servidor anfitrião, ou pode executar o PowerShell remotamente a partir de um computador de gestão. Este artigo aborda a opção remota.

Ao correr PowerShell a partir de um computador de gestão, inclua o -Name parâmetro ou -Cluster com o nome do servidor ou cluster que está a gerir. Além disso, pode ser necessário especificar o nome de domínio totalmente qualificado (FQDN) ao utilizar o parâmetro -ComputerName para um nó de servidor.

Precisa dos cmdlets Remote Server Administration Tools (RSAT) e dos módulos PowerShell para Hyper-V e Clustering de Failover. Se os cmdlets e módulos ainda não estiverem disponíveis na sua sessão PowerShell no seu computador de gestão, pode adicioná-los usando o seguinte comando: Add-WindowsFeature RSAT-Clustering-PowerShell.

Passo 1: Configurar os servidores

Primeiro, ligue-se a cada um dos servidores, junte-os a um domínio (o mesmo domínio em que está o computador de gestão) e instale os papéis e funcionalidades necessários.

Passo 1.1: Liga-te aos servidores

Para se ligar aos servidores, deve primeiro ter conectividade de rede, estar ligado ao mesmo domínio ou a um domínio totalmente confiável, e ter permissões administrativas locais para os servidores.

Abre o PowerShell e usa o nome de domínio totalmente qualificado ou o endereço IP do servidor ao qual queres ligar-te. Será solicitado uma palavra-passe depois de executar o comando seguinte em cada servidor.

Neste exemplo, assumimos que os servidores se chamam Servidor1, Servidor2, Servidor3 e Servidor4:

Enter-PSSession -ComputerName "Server1" -Credential "Server1\Administrator"

Aqui está outro exemplo de fazer o mesmo:

$myServer1 = "Server1"
$user = "$myServer1\Administrator"

Enter-PSSession -ComputerName $myServer1 -Credential $user

Tip

Ao executar comandos PowerShell a partir do teu PC de gestão, podes receber um erro como o WinRM não conseguir processar o pedido. Para resolver isto, use o PowerShell para adicionar cada servidor à lista de Anfitriões Confiáveis no seu computador de gestão. Esta lista suporta wildcards, por exemplo Server* .

Set-Item WSMAN:\Localhost\Client\TrustedHosts -Value Server1 -Force

Para ver a sua lista de Anfitriões Fidedignos, escreva Get-Item WSMAN:\Localhost\Client\TrustedHosts.

Para esvaziar a lista, digite Clear-Item WSMAN:\Localhost\Client\TrustedHost.

Passo 1.2: Junte-se ao domínio e adicione contas de domínio

No passo anterior, ligaste-te a cada nó de servidor com a conta de administrador local <ServerName>\Administrator.

Para avançar, deve juntar os servidores a um domínio e usar a conta de domínio que está no grupo local de Administradores em cada servidor.

Use o Enter-PSSession cmdlet para se ligar a cada servidor e execute o seguinte cmdlet, substituindo o nome do servidor, nome de domínio e credenciais de domínio:

Add-Computer -NewName "Server1" -DomainName "contoso.com" -Credential "Contoso\User" -Restart -Force  

Se a sua conta de administrador não for membro do grupo de Administradores de Domínio, adicione a sua conta de administrador ao grupo local de Administradores em cada servidor – ou melhor ainda, adicione o grupo que usa para administradores. Pode usar o seguinte comando para o fazer:

Add-LocalGroupMember -Group "Administrators" -Member "king@contoso.local"

Passo 1.3: Instalar funções e funcionalidades

O passo seguinte é instalar as funções e funcionalidades necessárias do Windows em todos os servidores do cluster. Aqui estão as funções a serem instaladas:

  • BitLocker
  • Data Center Bridging
  • Cluster de Tolerância a Falhas
  • Servidor de arquivos
  • Módulo FS-Data-Deduplication
  • Hyper-V
  • Hyper-V PowerShell
  • Módulo RSAT-Clustering-PowerShell
  • Módulo RSAT-AD-PowerShell
  • NetworkATC
  • Limite de largura de banda SMB
  • Storage Replica (para clusters geograficamente dispersos)

Use o seguinte comando para cada servidor (se estiver ligado via Ambiente de Trabalho Remoto, omita o -ComputerName parâmetro aqui e nos comandos seguintes):

Install-WindowsFeature -ComputerName "Server1" -Name "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "FS-SMBBW", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "Storage-Replica" -IncludeAllSubFeature -IncludeManagementTools

Para executar o comando em todos os servidores do cluster ao mesmo tempo, use o seguinte script, modificando a lista de variáveis no início para se adaptar ao seu ambiente:

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"
$FeatureList = "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "FS-SMBBW", "Storage-Replica"

# This part runs the Install-WindowsFeature cmdlet on all servers in $ServerList, passing the list of features in $FeatureList.
Invoke-Command ($ServerList) {
    Install-WindowsFeature -Name $Using:Featurelist -IncludeAllSubFeature -IncludeManagementTools
}

Em seguida, reinicie todos os servidores:

$ServerList = "Server1", "Server2", "Server3", "Server4"
Restart-Computer -ComputerName $ServerList -WSManAuthentication Kerberos

Passo 2: Preparar para a configuração do cluster

De seguida, verifique se os seus servidores estão prontos para clustering.

Como verificação de sanidade, considere executar os seguintes comandos para garantir que os seus servidores não pertencem já a um cluster:

Use Get-ClusterNode para mostrar todos os nós:

Get-ClusterNode

Use Get-ClusterResource para mostrar todos os nós do cluster:

Get-ClusterResource

Use Get-ClusterNetwork para mostrar todas as redes de cluster:

Get-ClusterNetwork

Passo 2.1: Preparar os discos

Antes de ativar o Espaços de Armazenamento Direto, certifique-se de que os discos permanentes estão vazios. Execute o script seguinte para remover quaisquer partições antigas e outros dados.

Note

Exclua do script quaisquer unidades amovíveis ligadas a um nó de servidor. Se estiveres a executar este script localmente a partir de um nó servidor, por exemplo, não queres apagar o disco removível que possas estar a usar para implantar o cluster.

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"

Invoke-Command ($ServerList) {
    Update-StorageProviderCache
    Get-StoragePool | ? IsPrimordial -eq $false | Set-StoragePool -IsReadOnly:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Get-VirtualDisk | Remove-VirtualDisk -Confirm:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Remove-StoragePool -Confirm:$false -ErrorAction SilentlyContinue
    Get-PhysicalDisk | Reset-PhysicalDisk -ErrorAction SilentlyContinue
    Get-Disk | ? Number -ne $null | ? IsBoot -ne $true | ? IsSystem -ne $true | ? PartitionStyle -ne RAW | % {
        $_ | Set-Disk -isoffline:$false
        $_ | Set-Disk -isreadonly:$false
        $_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false
        $_ | Set-Disk -isreadonly:$true
        $_ | Set-Disk -isoffline:$true
    }
    Get-Disk | Where Number -Ne $Null | Where IsBoot -Ne $True | Where IsSystem -Ne $True | Where PartitionStyle -Eq RAW | Group -NoElement -Property FriendlyName
} | Sort -Property PsComputerName, Count

Passo 2.2: Configuração do cluster de testes

Neste passo, certifique-se de que os nós do servidor estão configurados corretamente para criar um cluster. O Test-Cluster cmdlet é usado para executar testes e verificar se a sua configuração é adequada para funcionar como um cluster hiperconvergente. O exemplo seguinte utiliza o -Include parâmetro, com as categorias específicas de testes especificadas para garantir que os testes corretos são incluídos na validação.

Test-Cluster -Node $ServerList -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"

Passo 3: Criar o cluster

Agora está pronto para criar um cluster com os nós do servidor que validou nos passos anteriores.

Ao criar o cluster, pode receber um aviso que diz - "There were issues while creating the clustered role that may prevent it from starting. For more information, view the report file below." Pode ignorar este aviso em segurança. Este aviso deve-se ao facto de não haver discos disponíveis para a testemunha do cluster. A testemunha do cluster é criada nos passos seguintes.

Note

Se os servidores estiverem a usar endereços IP estáticos, modifique o seguinte comando para refletir o endereço IP estático adicionando o seguinte parâmetro e especificando o endereço IP: -StaticAddress <X.X.X.X>;.

$ClusterName="cluster1" 
New-Cluster -Name $ClusterName –Node $ServerList –nostorage

Depois de criado o cluster, pode demorar algum tempo até o nome do cluster ser replicado via DNS em todo o domínio, especialmente se os servidores de grupo de trabalho forem adicionados recentemente ao Active Directory. Embora o cluster possa ser exibido no Windows Admin Center, pode ainda não estar disponível para ligar.

Uma boa verificação para garantir que todos os recursos do cluster estão online:

Get-Cluster -Name $ClusterName | Get-ClusterResource

Se resolver o cluster não for bem-sucedido após algum tempo, na maioria dos casos pode ligar-se usando o nome de um dos servidores agrupados em vez do nome do cluster.

Passo 4: Configurar a rede do host

A Microsoft recomenda usar Network ATC para implementar rede de host se estiver a usar Azure Stack HCI versão 21H2 ou mais recente. Caso contrário, consulte Requisitos da rede anfitriã para requisitos e informações específicas.

O ATC de rede pode automatizar a implementação da configuração de rede pretendida se especificar um ou mais tipos de intenção para os seus adaptadores. Para mais informações sobre tipos específicos de intenção, veja: Tipos de Tráfego de Rede.

Passo 4.1: Verificar os adaptadores físicos

Num dos nós do cluster, execute Get-NetAdapter para rever os adaptadores físicos. Certifique-se de que cada nó do cluster tem adaptadores físicos com o mesmo nome e que apresentam o estado como 'Ativo'.

Get-NetAdapter -Name pNIC01, pNIC02 -CimSession $ClusterName | Select Name, PSComputerName

Se o nome de um adaptador físico variar entre nós no seu cluster, pode renomeá-lo usando Rename-NetAdapter.

Rename-NetAdapter -Name oldName -NewName newName

Passo 4.2: Configurar uma intenção

Neste exemplo, é criada uma intenção que especifica a intenção de computação e armazenamento. Consulte Simplifique a rede do anfitrião com o Network ATC para mais exemplos de intenções.

Execute o seguinte comando para adicionar os tipos de intenção de armazenamento e computação a pNIC01 e pNIC02. Note-se, especificamos o -ClusterName parâmetro.

Add-NetIntent -Name Cluster_ComputeStorage -Compute -Storage -ClusterName $ClusterName -AdapterName pNIC01, pNIC02

O comando deve regressar imediatamente após alguma verificação inicial.

Passo 4.3: validar a implementação da intenção

Executa o Get-NetIntent cmdlet para ver a intenção do cluster. Se tiver mais do que uma intenção, pode especificar o Name parâmetro para ver detalhes apenas de uma intenção específica.

Get-NetIntent -ClusterName $ClusterName

Para ver o estado de provisionamento da intenção, execute o Get-NetIntentStatus comando:

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

Note o parâmetro de estado que mostra Provisionamento, Validação, Sucesso, Falha.

O estado deve indicar sucesso dentro de alguns minutos. Se o estado de sucesso não ocorrer ou se vires uma falha no parâmetro de estado, verifica o visualizador de eventos para ver se há problemas.

Note

Neste momento, o Network ATC não configura endereços IP para nenhum dos seus adaptadores geridos. Depois de Get-NetIntentStatus concluído o estado dos relatórios, deve adicionar endereços IP aos adaptadores.

Passo 5: Configurar sites (cluster esticado)

Esta tarefa só se aplica se estiveres a criar um cluster estendido entre dois sites com pelo menos dois servidores em cada site.

Note

Se já configurou os Sites e Serviços do Active Directory anteriormente, não precisa de criar os sites manualmente como descrito na secção seguinte.

Passo 5.1: Criar sites

No cmdlet seguinte, FaultDomain é simplesmente outro nome para um site. Este exemplo usa "ClusterS1" como nome do cluster esticado.

New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site1"
New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site2"

Use o Get-ClusterFaultDomain cmdlet para verificar se ambos os sites foram criados para o cluster.

Get-ClusterFaultDomain -CimSession $ClusterName

Passo 5.2: Atribuir nós do servidor

Em seguida, atribuímos os quatro nós de servidor aos respetivos sites. No exemplo seguinte, o Servidor1 e o Servidor2 são atribuídos ao Site1, enquanto o Server3 e o Server4 estão atribuídos ao Site2.

Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server1", "Server2" -Parent "Site1"
Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server3", "Server4" -Parent "Site2"

Usando o Get-ClusterFaultDomain cmdlet, verifique se os nós estão nos locais corretos.

Get-ClusterFaultDomain -CimSession $ClusterName

Passo 5.3: Definir um local preferido

Também pode definir um site preferencial global, o que significa que os recursos e grupos especificados devem funcionar no site preferido. Esta configuração pode ser definida ao nível do local usando o seguinte comando:

(Get-Cluster).PreferredSite = "Site1"

Especificar um Sítio preferido para aglomerados esticados traz os seguintes benefícios:

  • Arranque a frio - durante um arranque a frio, as máquinas virtuais são colocadas no local preferido

  • Votação do quórum

    • Com um quórum dinâmico, a ponderação é reduzida primeiro do local passivo (replicado) para garantir que o local preferido sobreviva se todas as outras condições forem iguais. Além disso, os nós do servidor são removidos primeiro do site passivo durante o reagrupamento, após eventos como falhas assimétricas de conectividade de rede.

    • Durante uma divisão de quórum entre dois locais, se a testemunha do agrupamento não puder ser contactada, o local preferido é automaticamente eleito como vencedor. Os nós de servidor no site passivo deixam então de pertencer ao cluster, permitindo que o cluster sobreviva a uma perda simultânea de 50% dos votos.

O local preferencial pode também ser configurado ao nível do cluster ou do grupo. Neste caso, pode ser configurado um site preferencial diferente para cada grupo de máquinas virtuais, permitindo que um site seja ativo e preferido para máquinas virtuais específicas.

Passo 5.4: Configurar o Stretch Cluster com o ATC da Rede

Após a versão 22H2, podes usar o Network ATC para configurar clustering Stretch. O Network ATC adiciona o Stretch como tipo de intenção a partir da versão 22H2. Para implementar uma intenção com clustering Stretch com Network ATC, execute o seguinte comando:

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01", "pNIC02"

Uma intenção de extensão também pode ser combinada com outras intenções, ao implementar com o Network ATC.

SiteOverrides

Com base nos passos 5.1-5.3, pode adicionar os seus sites pré-criados à sua intenção de extensão implementada com o Network ATC. O ATC de rede trata disto usando SiteOverrides. Para criar um SiteOverride, execute:

 $siteOverride = New-NetIntentSiteOverrides

Depois de o seu siteOverride ser criado, pode definir qualquer propriedade do siteOverride. Certifique-se de que a propriedade "name" de siteOverride tem exatamente o mesmo nome que o seu site tem em ClusterFaultDomain. Uma incompatibilidade de nomes entre o ClusterFaultDomain e o siteOverride faz com que o siteOverride não seja aplicado.

As propriedades que pode definir para um siteOverride específico são: Name, StorageVlan e StretchVlan. Por exemplo, cria 2 siteOverrides para os seus dois sites - site1 e site2 usando:

$siteOverride1 = New-NetIntentSiteOverrides
$siteoverride1.Name = "site1"
$siteOverride1.StorageVLAN = 711
$siteOverride1.StretchVLAN = 25

$siteOverride2 = New-NetIntentSiteOverrides
$siteOverride2.Name = "site2"
$siteOverride2.StorageVLAN = 712
$siteOverride2.StretchVLAN = 26

Podes executar $siteOverride1, $siteOverride2 na tua janela PowerShell para garantir que todas as tuas propriedades estão definidas da forma desejada.

Finalmente, para adicionar um ou mais siteOverrides à sua intenção, execute:

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01" , "pNIC02" -SiteOverrides $siteOverride1, $siteOverride2

Passo 6: Ativar Espaços de Armazenamento Direto

Depois de criar o cluster, use o Enable-ClusterStorageSpacesDirect cmdlet, que ativará o Espaços de Armazenamento Direto e fará o seguinte automaticamente:

  • Crie um pool de armazenamento: Cria um pool de armazenamento para o cluster que tem um nome como "Cluster1 Storage Pool".

  • Crie um disco de Histórico de Desempenho do Cluster: Cria um disco virtual de Histórico de Desempenho do Cluster no pool de armazenamento.

  • Criar volumes de dados e de registo: Cria um volume de dados e um volume de registo no agrupamento de armazenamento.

  • Configurar caches do Espaços de Armazenamento Direto: Se houver mais do que um tipo de media (drive) disponível para o Espaços de Armazenamento Direto, isso permite os dispositivos de cache mais rápidos (na maioria dos casos de leitura e escrita).

  • Crie níveis: Cria dois níveis como níveis padrão. Um chama-se "Capacidade" e o outro chama-se "Desempenho". O cmdlet analisa os dispositivos e configura cada camada com a combinação de tipos de dispositivos e resiliência.

No cenário de um único servidor, o único FaultDomainAwarenessDefault é o PhysicalDisk. Enable-ClusterStorageSpacesDirect o cmdlet deteta um único servidor e configura automaticamente o FaultDomainAwarenessDefault como um PhysicalDisk durante a ativação.

Para clusters alongados, o Enable-ClusterStorageSpacesDirect cmdlet também irá:

  • Verifique se os sites estão configurados
  • Determinar quais os nós que estão em que sites
  • Determina o armazenamento disponível em cada nó
  • Verifica se a funcionalidade Storage Replica está instalada em cada nó
  • Cria um pool de armazenamento para cada local e identifica-o com o nome do local
  • Cria volumes de dados e registos em cada pool de armazenamento - um por local

O comando seguinte permite o Espaços de Armazenamento Direto num cluster de múltiplos nós. Também pode especificar um nome amigável para um pool de armazenamento, como mostrado aqui:

Enable-ClusterStorageSpacesDirect -PoolFriendlyName "$ClusterName Storage Pool" -CimSession $ClusterName

Eis um exemplo de como desativar a cache de armazenamento num cluster de um único nó:

Enable-ClusterStorageSpacesDirect -CacheState Disabled

Para ver os pools de armazenamento, use o seguinte comando:

Get-StoragePool -CimSession $ClusterName

Depois de criares o cluster

Agora que o seu cluster foi criado, há outras tarefas importantes que precisa de completar:

Passos seguintes