headerpic
« Hem

VM Clouds i Windows Azure Pack visar “Unavailable”

Skrivet av: Patrik Lundin
April 19, 2016

Det kan finns flera olika anledningar till varför det här typet av fel uppstår i WAP. När jag kom i kontakt med det senast så började jag att kolla på följande bloggpost:
http://blogs.technet.com/b/privatecloud/archive/2013/11/08/troubleshooting-windows-azure-pack-spf-amp-vmm.aspx

Det är en väldigt trevlig bloggpost som beskriver i detalj hur man löser ett antal olika fel i i WAP, tyvärr så löste det inte mitt, mitt var mycket mer konstigt än det som fanns beskriver där.

Jag kunde ganska snabbt konstatera att felet hade på något sätt att göra med SPF, frågan var bara hur. När man öppnar upp WAP Admin portalen och klickar på VM Clouds-fliken så går en förfrågan till SPF, SPF skickar sedan vidare förfrågan till VMM och VMM i sin tur frågar databasen efter information om det aktuella molnen och returnerar det till Admin portalen. Med det i åtanke så började jag kolla på SPF, dock kunde jag inte hitta några Errors eller ens några Warnings i eventloggen, det var inte förens jag aktiverade debugging i SPF som jag började hitta intressanta meddelanden, här kommer det meddelandet som jag såg:

“Exception:

System.Management.Automation.RuntimeException: VMM is unable to find the capacity settings for the specified private cloud. The private cloud may have been moved or deleted.
Verify that the private cloud is correct and that the private cloud exists on the VMM management server. —> Microsoft.VirtualManager.Utils.CarmineException: VMM is unable to find the capacity settings for the specified private cloud. The private cloud may have been moved or deleted.
Verify that the private cloud is correct and that the private cloud exists on the VMM management server.
at Microsoft.SystemCenter.VirtualMachineManager.Remoting.ServerConnection.MapIndigoExceptions(Exception e)
at Microsoft.SystemCenter.VirtualMachineManager.Cmdlets.CmdletBase.ProcessRecord()
— End of inner exception stack trace —
at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at System.Management.Automation.PowerShell.Worker.ConstructPipelineAndDoWork(Runspace rs, Boolean performSyncInvoke)
at System.Management.Automation.PowerShell.Worker.CreateRunspaceIfNeededAndDoWork(Runspace rsToUse, Boolean isSync)
at System.Management.Automation.PowerShell.CoreInvokeHelper[TInput,TOutput](PSDataCollection`1 input, PSDataCollection`1 output, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.CoreInvoke[TInput,TOutput](PSDataCollection`1 input, PSDataCollection`1 output, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.CoreInvoke[TOutput](IEnumerable input, PSDataCollection`1 output, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.Invoke(IEnumerable input, PSInvocationSettings settings)
at Microsoft.SystemCenter.Foundation.Utility.PowerShellAbstractionLayer.<>c__DisplayClass1.b__0()
at Microsoft.ManagementServices.Diagnostics.Activity.ActivityMonitorExtensions.TryCatchRethrow[TResult](IActivityMonitor monitor, Func`1 instrumentedAction)
at Microsoft.SystemCenter.Foundation.Psws.PowerShellRequestInvoker.<>c__DisplayClass1a.b__19()
at Microsoft.ManagementServices.Diagnostics.Activity.ActivityMonitorExtensions.TryCatchRethrow[TResult](IActivityMonitor monitor, Func`1 instrumentedAction)
at Microsoft.SystemCenter.Foundation.Psws.PowerShellRequestInvoker.GetAssociatedDataForCollection(ISpfOperationManagerContext context, String resourceTypeName, String navigationProperty, Guid resourceId, Guid relatedResourceId)
at Microsoft.SystemCenter.Foundation.Psws.PowerShellRequestInvoker.<>c__DisplayClass7.b__6()
at Microsoft.ManagementServices.Diagnostics.Activity.ActivityMonitorExtensions.TryCatchRethrow[TResult](IActivityMonitor monitor, Func`1 instrumentedAction)
at Microsoft.SystemCenter.Foundation.Psws.RequestInvokerDecorator.Get(ISpfOperationManagerContext context, String resourceTypeName, PropertyManager propertyManager, Nullable`1& totalCount, AssociationInfo associationInfo)”

Vad felmeddelanden säger är att en “capacity setting” för ett specifikt moln inte kunde hittas av VMM, där var anledningen till att jag fick status “Unavailable” i Admin portalen, låt oss gå vidare ner i VMMs databas.

Kollar man i tbl_Cloud_Cloud så finns det en kolumn som mappar CapacitySettingsID till det rätta IDt för Cloud Capacity posten i tbl_Cloud_CloudCapacity tabellen.

(tbl_Cloud_Cloud)
VMM1png

(tbl_Cloud_CloudCapacity)
VMM2

I mitt fall så kunde jag se en post för varje moln i tbl_Cloud_Cloud (låt oss säga att det var 12 st) men en saknades i tbl_Cloud_CloudCapacity (låt oss säga att det var 11), så vi har alltså ett ojämnt antal mellan antalet moln och antalet kapacitets poster.
Efter ytterligare utredning och en backup av VMMs databas så hittade jag den försvunna posten och la återigen in den i tbl_Cloud_CloudCapacity tabellen och allt började återigen att fungera.

Det som kvarstår är egentligen hur det här kunde hända? Mitt korta svar är att jag inte vet, det kanske har att göra med att någon har försökt att ta bort ett moln på felaktigt sätt, det kan också ha att göra med att någon gjorde något som den inte skulle ha gjort, vem vet :).

Mvh
Patrik

Postad i: Private Cloud | SQL | System Center 2012 R2 | VMM | Windows Azure Pack |

Lämna en kommentar


Problem med att ta bort ett “Cloud” från VMM 2012 R2

Skrivet av: Patrik Lundin
April 18, 2016

Har du någonsin försökt att ta bort ett Cloud i VMM 2012 R2 och du är 100% säker på att alla relationer till det molnet är borttaget? Samma här…

Det här felmeddelandet brottades jag med ett tag när jag försökte ta bort ett Cloud:
Warning (22019)
The virtual machine host group or private cloud “Cloud Name” cannot be removed because it is referenced by one or more services, service configurations or VMs.

Recommended Action
Ensure that there are no services or service configurations referencing this object, and then try again.”

Allt såg helt rätt ut, jag hittade ingen relation till molnet via VMM konsolen. Jag började borra ner mig i Powershell och försökte hitta ett sätt att se relationer som inte gick att se via GUIt, och till slut så hittade jag följande kommando:

Get-CloudResource | select CloudName, Name, ID

Det här visade mig Cloud Resources som fortfarande var aktiva på det aktuella molnet. Cloud Resources skapas när man använder sig av Gallery Items via Windows Azure Pack. Hur som helst, när jag hittade det rätta ID och Name för dom resurserna som blockerade min borttagning så körde jag följande kommando för att ta bort dom:

Get-CloudResource -ID 1692ec17-e1cf-4742-88c6-f29e267c23cc | Delete-CloudResource

Efter att samtliga resurser var borttagna gick det även att ta bort molnet från VMM.

Mvh
Patrik

Postad i: Private Cloud | System Center 2012 R2 | VMM | Windows Azure Pack |

Lämna en kommentar


Uppdatering av certifikat i ADFS 3.0 och WAP

Skrivet av: Patrik Lundin
April 18, 2016

Först och främst så behöver man importera certifikatet till rätt plats på alla ADFS och WAP noder som ingår i din federationstjänst. Det enklaste sättet att göra det är genom följande PS-script (ändra mypassword till ditt lösenord för .pfx-filen):

 $certpassword = ConvertTo-SecureString -String "mypassword" -Force –AsPlainText
Import-PfxCertificate –FilePath C:\Cert\mypfx.pfx cert:\localMachine\my -Password $certpassword 

Glöm inte heller bort att kolla så att rätt root/mellancertifikat finns installerat

Nästa del som behöver ställas in är att sätta “Read”-rättigheter för tjänstekontot som ADFS går under till den privata nyckeln för det nyimporterade certifikatet, den inställningen gör man under
MMC -> Certificate Module.

Efter det så ska du välja det nya certifikatet i ADFS-konsolen på din primäare ADFS-nod (om du har flera), det gör man under Service -> Certificate -> Set Service Communications Certificate.
ADFS

Man skulle kunna tro att det är klart nu, men man behöver även köra följande PS-script på alla ADFS-noder (byt ut Thumprintvärdet mot det som just ditt certifkat har):

Set-AdfsSslCertificate –Thumbprint '9012nksaui81u78djnasd81i902yjnasdn1123sa' 

Nu är vi klara med ADFS-noderna, nu går vi vidare till WAP.
Först så måste vi ändra det certificatet som används som Proxy SSL cert, det här man man göra med följande script (byt ut Thumprintvärdet mot det som just ditt certifkat har):

Set-WebApplicationProxySslCertificate –Thumbprint '9012nksaui81u78djnasd81i902yjnasdn1123sa'

Nästa och även det sista steget är att ändra certifikatet för varje enskild applikation som går via WAP. Alla ni som tidigare har jobbat med ISA eller TMG får troligtvis en viss känsla av huvudvärk, men ni kan vara lugna, Powershell är våran vän (byt ut Thumprintvärdet mot det som just ditt certifikat har):

Get-WebApplicationProxyApplication | Set-WebApplicationProxyApplication –ExternalCertificateThumbprint '9012nksaui81u78djnasd81i902yjnasdn1123sa'

Mvh
Patrik

Postad i: ADFS | PKI |

Lämna en kommentar