Criar um cluster HCI do Azure Stack usando o Windows PowerShell

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

Aviso

As instruções de implantação fornecidas neste artigo aplicam-se a uma versão mais antiga, Azure Stack HCI, versão 22H2. Para novas implantações, recomendamos que você use a versão mais recente disponível em geral, Azure Stack HCI, versão 23H2. Para obter instruções de implantação, consulte Sobre a implantação do Azure Stack HCI, versão 23H2.

Neste artigo, você aprenderá a usar o Windows PowerShell para criar um cluster hiperconvergente HCI do Azure Stack que usa Espaços de Armazenamento Diretos. Se preferir usar o assistente de Criação de Cluster no Windows Admin Center para criar o cluster, consulte Criar o cluster com o Windows Admin Center.

Nota

Se você estiver fazendo uma instalação de servidor único do Azure Stack HCI 21H2, use o PowerShell para criar o cluster.

Você pode escolher entre dois tipos de cluster:

  • Cluster padrão com um ou dois nós de servidor, todos residindo em um único site.
  • Cluster estendido com pelo menos quatro nós de servidor que se estendem por dois sites, com dois nós por site.

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

Nota

Não há suporte para clusters stretch em uma configuração de servidor único.

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

Para o cenário de cluster estendido, usamos ClusterS1 como o nome e usamos os mesmos quatro nós de servidor estendidos entre os sites Site1 e Site2.

Para obter mais informações sobre clusters estendidos, consulte Visão geral de clusters estendidos.

Para testar o Azure Stack HCI com mínimo ou nenhum hardware extra, você pode conferir o Guia de Avaliação do Azure Stack HCI. Neste guia, orientamos você sobre a experiência do Azure Stack HCI usando virtualização aninhada dentro de uma VM do Azure. Ou tente o tutorial Criar um laboratório baseado em VM para HCI do Azure Stack para criar seu próprio ambiente de laboratório privado usando virtualização aninhada em um servidor de sua escolha para implantar VMs executando o Azure Stack HCI para clustering.

Antes de começar

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

  • Leia e compreenda os requisitos de sistema do Azure Stack HCI.
  • Leia e compreenda os requisitos de rede física e os requisitos de rede de host para o Azure Stack HCI.
  • Instale o sistema operacional HCI do Azure Stack em cada servidor do cluster. Consulte Implantar o sistema operacional Azure Stack HCI.
  • Verifique se todos os servidores estão no fuso horário correto.
  • Ter uma conta que seja membro do grupo Administradores local em cada servidor.
  • Ter direitos no Ative Directory para criar objetos.
  • Para clusters estendidos, configure seus dois sites com antecedência no Ative Directory.

Utilizar o Windows PowerShell

Você pode executar o PowerShell localmente em uma sessão RDP em um servidor host ou executar o PowerShell remotamente a partir de um computador de gerenciamento. Este artigo aborda a opção remota.

Ao executar o PowerShell a partir de um computador de gerenciamento, inclua o -Name parâmetro ou -Cluster com o nome do servidor ou cluster que você está gerenciando. Além disso, talvez seja necessário especificar o nome de domínio totalmente qualificado (FQDN) ao usar o parâmetro para um nó de -ComputerName servidor.

Você precisa dos cmdlets RSAT (Ferramentas de Administração de Servidor Remoto) e dos módulos do PowerShell para Hyper-V e Clustering de Failover. Se os cmdlets e módulos ainda não estiverem disponíveis em sua sessão do PowerShell no computador de gerenciamento, você poderá adicioná-los usando o seguinte comando: Add-WindowsFeature RSAT-Clustering-PowerShell.

Etapa 1: Configurar os servidores

Primeiro, conecte-se a cada um dos servidores, associe-os a um domínio (o mesmo domínio em que o computador de gerenciamento está) e instale as funções e os recursos necessários.

Etapa 1.1: Conectar-se aos servidores

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

Abra o PowerShell e use o nome de domínio totalmente qualificado ou o endereço IP do servidor ao qual você deseja se conectar. Ser-lhe-á solicitada uma palavra-passe depois de executar o seguinte comando em cada servidor.

Neste exemplo, assumimos que os servidores são denominados Server1, Server2, Server3 e Server4:

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

Aqui está outro exemplo de fazer a mesma coisa:

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

Enter-PSSession -ComputerName $myServer1 -Credential $user

Gorjeta

Ao executar comandos do PowerShell a partir do seu PC de gerenciamento, você pode receber um erro como o WinRM não pode processar a solicitação. Para corrigir isso, use o PowerShell para adicionar cada servidor à lista de Hosts Confiáveis em seu computador de gerenciamento. Esta lista suporta curingas, como Server* , por exemplo.

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.

Etapa 1.2: ingressar no domínio e adicionar contas de domínio

Na etapa anterior, você se conectou a cada nó do servidor com, a conta <ServerName>\Administratorde administrador local .

Para continuar, você deve associar os servidores a um domínio e usar a conta de domínio que está no grupo Administradores local em cada servidor.

Use o Enter-PSSession cmdlet para se conectar a cada servidor e execute o seguinte cmdlet, substituindo o nome do servidor, o nome de domínio e as 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 Administradores do Domínio, adicione a sua conta de administrador ao grupo Administradores local em cada servidor - ou, melhor ainda, adicione o grupo que utiliza para administradores. Você pode usar o seguinte comando para fazer isso:

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

Etapa 1.3: Instalar funções e recursos

A próxima etapa é instalar as funções e recursos necessários do Windows em cada servidor para o cluster. Aqui estão as funções a serem instaladas:

  • BitLocker
  • Data Center Bridging
  • Clustering de Ativação Pós-falha
  • Servidor de Ficheiros
  • Módulo FS-Data-Deduplication
  • Hyper-V
  • Hyper-V PowerShell
  • Módulo RSAT-Clustering-PowerShell
  • Módulo RSAT-AD-PowerShell
  • RedeATC
  • RedeHUD
  • Limite de largura de banda SMB
  • Réplica de armazenamento (para clusters estendidos)

Use o seguinte comando para cada servidor (se você estiver conectado via Área de Trabalho Remota, omita o -ComputerName parâmetro aqui e nos comandos subsequentes):

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", "NetworkHUD", "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 adequar 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", "NetworkHUD", "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

Etapa 2: Preparação para a configuração do cluster

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

Como verificação de sanidade, considere executar os seguintes comandos para garantir que seus servidores ainda não pertençam 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

Etapa 2.1: Preparar unidades

Antes de ativar os Espaços de Armazenamento Diretos, verifique se as unidades permanentes estão vazias. Execute o seguinte script para remover quaisquer partições antigas e outros dados.

Nota

Exclua todas as unidades amovíveis anexadas a um nó de servidor do script. Por exemplo, se estiver a executar este script localmente a partir de um nó de servidor, não quererá limpar a unidade amovível que poderá estar a utilizar para implementar 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

Etapa 2.2: Testar a configuração do cluster

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

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

Etapa 3: Criar o cluster

Agora você está pronto para criar um cluster com os nós de servidor validados nas etapas anteriores.

Ao criar o cluster, você pode receber um aviso informando - "There were issues while creating the clustered role that may prevent it from starting. For more information, view the report file below." Você pode ignorar esse aviso com segurança. Este aviso deve-se ao facto de não existirem discos disponíveis para a testemunha do cluster. A testemunha de cluster é criada em etapas posteriores.

Nota

Se os servidores estiverem usando 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 que o cluster é criado, pode levar algum tempo para que o nome do cluster seja replicado via DNS em todo o domínio, especialmente se os servidores do grupo de trabalho forem adicionados recentemente ao Ative Directory. Embora o cluster possa ser exibido no Windows Admin Center, ele pode não estar disponível para conexão ainda.

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

Get-Cluster -Name $ClusterName | Get-ClusterResource

Se a resolução do cluster não for bem-sucedida após algum tempo, na maioria dos casos, você poderá se conectar usando o nome de um dos servidores clusterizados em vez do nome do cluster.

Etapa 4: Configurar a rede do host

A Microsoft recomenda usar o ATC de rede para implantar a rede de host se você estiver executando o Azure Stack HCI versão 21H2 ou mais recente. Caso contrário, consulte Requisitos de rede do host para obter informações e requisitos específicos.

O ATC de rede pode automatizar a implantação da configuração de rede pretendida se você especificar um ou mais tipos de intenção para seus adaptadores. Para obter mais informações sobre tipos de intenção específicos, consulte: Tipos de tráfego de rede.

Etapa 4.1: Revisar adaptadores físicos

Em um dos nós do cluster, execute Get-NetAdapter para revisar os adaptadores físicos. Certifique-se de que cada nó no cluster tenha os mesmos adaptadores físicos nomeados e que eles relatem o status como 'Up'.

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

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

Rename-NetAdapter -Name oldName -NewName newName

Etapa 4.2: Configurar uma intenção

Neste exemplo, é criada uma intenção que especifica a intenção de computação e armazenamento. Consulte Simplificar a rede de host com ATC de rede para obter mais exemplos de intenção.

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

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

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

Etapa 4.3: Validar a implantação de intenção

Execute o Get-NetIntent cmdlet para ver a intenção do cluster. Se você tiver mais de uma intenção, poderá especificar o Name parâmetro para ver detalhes de apenas uma intenção específica.

Get-NetIntent -ClusterName $ClusterName

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

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

Observe o parâmetro de status que mostra Provisionamento, Validação, Êxito, Falha.

O status deve exibir sucesso em poucos minutos. Se o status de êxito não ocorrer ou você vir uma falha no parâmetro de status, verifique se há problemas no visualizador de eventos.

Nota

No momento, o ATC de rede não configura endereços IP para nenhum de seus adaptadores gerenciados. Depois Get-NetIntentStatus que o status dos relatórios for concluído, você deverá adicionar endereços IP aos adaptadores.

Etapa 5: Configurar sites (cluster estendido)

Essa tarefa só se aplica se você estiver criando um cluster estendido entre dois sites com pelo menos dois servidores em cada site.

Nota

Se você configurou os Sites e Serviços do Ative Directory anteriormente, não precisará criar os sites manualmente, conforme descrito na próxima seção.

Etapa 5.1: Criar sites

No cmdlet a seguir, FaultDomain é simplesmente outro nome para um site. Este exemplo usa "ClusterS1" como o nome do cluster estendido.

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

Etapa 5.2: Atribuir nós de servidor

Em seguida, atribuímos os quatro nós do servidor aos seus respetivos sites. No exemplo a seguir, Server1 e Server2 são atribuídos a Site1, enquanto Server3 e Server4 são atribuídos a 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 sites corretos.

Get-ClusterFaultDomain -CimSession $ClusterName

Etapa 5.3: Definir um site preferido

Você também pode definir um site preferencial global, o que significa que os recursos e grupos especificados devem ser executados no site preferencial. Essa configuração pode ser definida no nível do site usando o seguinte comando:

(Get-Cluster).PreferredSite = "Site1"

Especificar um Site preferencial para clusters estendidos tem os seguintes benefícios:

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

  • Votação do quórum

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

    • Durante uma divisão de quórum de dois sites, se a testemunha do cluster não puder ser contatada, o site preferido será automaticamente eleito para vencer. Os nós do servidor no site passivo então abandonam a associação ao cluster, permitindo que o cluster sobreviva a uma perda simultânea de 50% dos votos.

O site preferencial também pode ser configurado no nível da função de cluster ou do grupo. Nesse caso, um site preferencial diferente pode ser configurado para cada grupo de máquinas virtuais, permitindo que um site seja ativo e preferencial para máquinas virtuais específicas.

Etapa 5.4: Configurar o Stretch Clustering com ATC de rede

Após a versão 22H2, você pode usar o ATC de rede para configurar o cluster Stretch. Network ATC adiciona Stretch como um tipo de intenção a partir da versão 22H2. Para implantar uma intenção com o Stretch clustering com ATC de rede, execute o seguinte comando:

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

Uma intenção de alongamento também pode ser combinada com outras intenções, ao implantar com ATC de rede.

SiteSubstituições

Com base nas etapas 5.1-5.3, você pode adicionar seus sites pré-criados à sua intenção de alongamento implantada com o ATC de rede. O ATC de rede lida com isso usando SiteOverrides. Para criar um SiteOverride, execute:

 $siteOverride = New-NetIntentSiteOverrides

Depois que o siteOverride for criado, você poderá definir qualquer propriedade para o siteOverride. Certifique-se de que a propriedade name do siteOverride tem exatamente o mesmo nome, como o nome que seu site tem no ClusterFaultDomain. Uma incompatibilidade de nomes entre o ClusterFaultDomain e o siteOverride resulta na não aplicação do siteOverride.

As propriedades que você pode definir para um determinado siteOverride são: Name, StorageVlan e StretchVlan. Por exemplo, você cria 2 siteOverrides para 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

Você pode executar $siteOverride1o , $siteOverride2 na janela do PowerShell para garantir que todas as suas propriedades estejam definidas da maneira desejada.

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

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

Etapa 6: Habilitar espaços de armazenamento diretos

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

  • Criar um pool de armazenamento: cria um pool de armazenamento para o cluster que tem um nome como "Pool de Armazenamento Cluster1".

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

  • Criar volumes de dados e de log: cria um volume de dados e um volume de log no pool de armazenamento.

  • Configurar caches diretos de Espaços de Armazenamento: Se houver mais de um tipo de mídia (unidade) disponível para Espaços de Armazenamento Diretos, ele habilitará o mais rápido como dispositivos de cache (leitura e gravação na maioria dos casos).

  • Criar camadas: cria duas camadas como camadas padrão. Uma é denominada “Capacidade” e a outra é denominada “Desempenho”. O cmdlet analisa os dispositivos e configura cada camada com a mistura dos tipos de dispositivos e resiliência.

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

Para clusters estendidos, o Enable-ClusterStorageSpacesDirect cmdlet também:

  • Verifique se os sites estão configurados
  • Determinar quais nós estão em quais sites
  • Determina o armazenamento que cada nó tem disponível
  • Verifica se o recurso Réplica de Armazenamento está instalado em cada nó
  • Cria um pool de armazenamento para cada site e o identifica com o nome do site
  • Cria volumes de dados e logs em cada pool de armazenamento - um por site

O comando a seguir habilita os Espaços de Armazenamento Diretos em um cluster de vários nós. Você também pode especificar um nome amigável para um pool de armazenamento, conforme mostrado aqui:

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

Veja um exemplo de desativação do cache de armazenamento em um cluster de nó único:

Enable-ClusterStorageSpacesDirect -CacheState Disabled

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

Get-StoragePool -CimSession $ClusterName

Depois de criar o cluster

Agora que o cluster foi criado, há outras tarefas importantes que você precisa concluir:

Próximos passos