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

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 *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


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

Attachments