O cmdlet Get-Cluster falha ao usar -Name param

2

Resumo

Quando eu chamo Get-Cluster powershell, retorna o nome do meu cluster. Por uma questão de simplicidade, vamos chamá-lo de Cluster1 . Se eu chamar Get-Cluster -Name Cluster1 , ele falhará com um erro.

Erro:

Get-Cluster : Check the spelling of the cluster name. Otherwise, there might be a problem with your network. Make sure
the cluster nodes are turned on and connected to the network or contact your network administrator.
    The RPC server is unavailable
At line:1 char:1
+ Get-Cluster -Name Cluster1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ConnectionError: (:) [Get-Cluster], ClusterCmdletException
    + FullyQualifiedErrorId : ClusterRpcConnection,Microsoft.FailoverClusters.PowerShell.GetClusterCommand

Detalhes

Meu primeiro pensamento é que estou usando o cmdlet errado ou o winrm não está funcionando (é). Eu também pensei que talvez haja uma diferença na maneira como isso é chamado que está causando o fracasso. Seguindo essa lógica, examinei a seguinte página de technet no cmdlet:

Pesquisa : link

Com base na escrita lá, não consegui discernir um erro óbvio do usuário. Então eu tentei algumas coisas para descobrir isso. Primeiro eu pensei que talvez eu estivesse apenas estragando a digitação, então fiz isso:

$Cluster = Get-Cluster
($cluster.Name -like "Cluster1")

Os retornos condicionais True , então não sou um cluster f na digitação. Em seguida, tentei o seguinte:

Get-Cluster | Where-Object{$_.Name -like "Cluster1"}

Que naturalmente retorna o objeto de cluster. Então, o que está acontecendo aqui? O que há de diferente com Get-Cluster -Name "Cluster1" ?

Editar

Informações da versão do Powershell:

PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.34209
BuildVersion                   6.3.9600.17090
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2
    
por Colyn1337 14.10.2014 / 21:32

1 resposta

1

Com base na minha observação da execução de Get-Cluster contra alguns dos clusters que tenho no trabalho, pareceu-me que -Name usa resolução de nomes, portanto, se houver algo que cause um problema na resolução de nomes, ele falhará se o nome que você der é a máquina local.

Eu tentei com nomes de cluster e nomes de serviço de cluster, bem como nomes dos nós individuais no cluster.

Também adicionei uma entrada no meu arquivo HOSTS apontando um nome falso para um dos clusters e consegui usar esse nome com êxito com Get-Cluster .

Para mim, isso sugere strongmente que o uso de -Name depende inteiramente da resolução de nomes padrão no sistema operacional.

O caso em que Get-Cluster sem nome funcionaria enquanto Get-Cluster -Name localhost (ou o nome do host real da máquina atual) não funcionaria, sugere que sem um parâmetro de nome, Get-Cluster tenta se comunicar com o serviço de cluster diretamente na máquina atual, o que não exigiria nenhuma resolução de nomes.

Além da resolução de nomes, acredito que uma conexão RPC é feita ao servidor de destino ao usar -Name (mesmo que seja a máquina local), portanto, mesmo que a resolução de nomes funcione, o serviço RPC está realmente indisponível ou um firewall ligado pode realmente bloquear essa conexão e causar o erro que você viu.

Eu não consegui testar isso, pois atualmente não tenho um cluster em nosso ambiente de teste e não posso quebrar intencionalmente a resolução de nomes ou o RPC em um cluster de produção!

Infelizmente, não pude fazer backup dessa hipótese com nenhum tipo de fonte autoritativa (não consegui encontrar uma descrição definitiva desse comportamento).

    
por 17.11.2014 / 21:46