Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Zapnutí Kerberos delegace pro Hyper-V live migration
září 26
Zapnutí Kerberos delegace pro Hyper-V live migration

Když zapínáte Hyper-V live migration na Windows 2012, tak už nepotřebujete cluster (jak jsem tu psal zrovna před pár dny). K tomu, abyste live migration zapnuli mezi několika hyper-v hosty, musíte jim povolit Kerberos constrained delegation na hodnotu Trust this computer for delegation to specified services only - use Kerberos only. K tomu, aby Kerberos delegace fungovala, musí být počítačové účty nodeů vaší farmy členem skupiny Windows Authorization Access Group (WAAG) - viz článek o Kerberos delegaci.

Jenže to musíte povolit všem nodeům vzájemě a ještě navíc musíte povolit delegaci i do SMB storage. Což je drbačka i v případě dvou členů farmy, natož když jich máte více.

Tak jsem si na to napsal skript v PowerShell. Je to napsáno obecně pro Windows 2003 a novější, takže nepoužívám ActiveDirectory module, který nemám rád už z principu, že to nepoužívá LDAP, ale nějakou podivnou web servisu. Navíc ten ActiveDirectory mobule blbne na Windows 8.1, hanba :-)

Myslím, že je jasné, že změnit musíte akorát první tři proměnné.

$domain = 'gopas.virtual'
$nodes = @('noda', 'nodb', 'nodc')
$storages = @('stor', 'stor2')



$domainDN = ($domain.Split('.') | % { "DC=$_" }) -join ','

$WAAG = dsquery * $domainDN -filter "(&(sAMAccountName=Windows Authorization Access Group)(objectClass=group))" | % { $_.Trim('"') } | % { [ADSI] "LDAP://$_" }

$nodes | % {

  dsquery * $domainDN -filter "(&(sAMAccountName=$_`$)(objectClass=computer))" 

} | % { $_.Trim('"') } | % {

  $oneNode = [ADSI] "LDAP://$_"
    
  $spns = $nodes -ne $oneNode.name | % { 
    
    'Microsoft Virtual System Migration Service/{0}' -f $_
    'Microsoft Virtual System Migration Service/{0}.{1}' -f $_, $domain
  }

  $spns += $storages | % { 

    'cifs/{0}' -f $_
    'cifs/{0}.{1}' -f $_, $domain
  }
    
  Write-Host '-----------------------'
  Write-Host ('One host: {0} | {1}' -f $oneNode.name.Value, $oneNode.dNSHostName.Value)
  Write-Host ('SPNs: {0}' -f ($spns | Out-String))
 
  $oneNode.PutEx(3, 'msDS-AllowedToDelegateTo', $spns)
  $oneNode.SetInfo()


  $WAAG.Add($oneNode.Path)
}

Tak užívejte :-)

Comments

Re: Zapnutí Kerberos delegace pro Hyper-V live migration

Pokud při pokusech o hyper-v live migration dostáváte hlášku jako "There was an error during move operation", "General access denied error", nebo "Operace migrace virtuálního počítače se v cíli migrace nezdařila" a "Obecná chyba odepření přístupu" (0x80070005), tak vězte že:

a) SMB storage musíte uvádět jako \\jmenoSMBserveru a nikoliv jako \\ip.ip.ip.ip. Pro IP adresou zadané úložiště nefunguje Kerberos, ale jen NTLM. Pro Kerberos delegaci potřebujete Kerberos :-) Musíte tedy používat jméno počítače, místo jeho IP adresy.

b) po zapnutí delegace musíte na všech nodech farmy udělat GPUPDATE a restart! Bez toho to nepojede.

c) pokud to hlásí podivné chyby, restartujte VMMS službu (Hyper-V Virtual Machine Management)
ondass on 26.9.2014 10:13

Add Comment

Sorry comments are disable due to the constant load of spam *


Omlouvám se, ale příval spamu nelze kontrolovat, takže mi prosím pošlete email, pokud máte nějaký dotaz, nebo připomínku.

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments