Um sich diesem, doch etwas umfangreichen Thema zu widmen, würde ich zum Einstieg ein paar Artikel als Lektüre empfehlen (Sammlung am Ende dieses Beitrags).
Speziell sollte man sich mit der von VMware und Microsoft unterstützen Konfiguration von virtuellen oder auch gemischten MSCS Konstrukten beschäftigen.
Diese ist unter anderem auch abhängig von den eingesetzten Versionen.
Zwei Beispiele:
ESXi 5.5 Update 3 unterstützt den PVSCSI Adapter in einem MSCS Node, ESXi 5.5 Update 2 aber nicht!
Keine Snapshots mehr von VMs möglich mit einem SCSI Adapter der Bus-Sharing aktiviert hat!
Die Umgebung
- 2x 19″ Server
- je lokales RAID für OS
- je 2x 10 Gigabit Ethernet
- je 2x 8 Gigabit Fiberchannel
- Microsoft Windows 2012 R2
- Microsoft SQL 2012 SP1 Standard (mehrere Instanzen)
Grober Ablauf meines Vorgehens
- Ersten physikalischen Cluster Node entfernen
- Ersten physikalischen Cluster Node als ESXi neu installieren
- Neuen virtuellen Cluster Node installieren
- Ressourcen schwenken
- Zweiten physikalischen Cluster Node entfernen
- Zweiten physikalischen Cluster Node als ESXi neu installieren
- Weiteren virtuellen Cluster Node installieren
Deinstallation des physikalischen Microsoft Cluster Service SQL Node (pMSCS SQL Node)
- Alle Rollen incl. Disks von betroffenem pMSCS Node wegschieben
- Pause – Drain Roles
- Resume – Do not Fail Roles back
- Für jede SQL Instanz auf dem pMSCS Node
- SQL Setup starten
- SQL Instanz für die Deinstallation auswählen
- Shared LUNs (CSV`s) vom pMSCS Node trennen
- pMSCS Node aus Cluster entfernen
- SQL Setup starten
Neuinstallation des virtuellen Cluster Service SQL Node (vMSCS SQL Node)
VMware ESXi Installation
- Firmware Update der Hardware
- BIOS Anpassungen für VMware ESXi
- ESXi Installation (5.5 Update 2)
ESXi Konfiguration
- SSL Zertifikat tauschen
Hierzu verwende ich Dereks (@vDerekS) Toolkit für vSphere 5.5 (Download)
- ESXi Basis Konfiguration
Hierzu verwende ich ein etwas überarbeitungsbedürftiges PowerCLI Script
$ESXiHostList = Get-VMHost
$syslog = „udp://syslog.test.lan:514„
$NTP1 = „192.168.2.1„
$NTP2 = „192.168.2.2„
foreach ($ESXiHost in $ESXiHostList)
{
#Enable SSH and disable SSH Warning
$SSHService = $ESXiHost | Get-VMHostService | where {$_.Key -eq ‚TSM-SSH‚}
Start-VMHostService -HostService $SSHService -Confirm:$false
Set-VMHostService -HostService $SSHService -Policy „Automatic„
$ESXiHost | Set-VMHostAdvancedConfiguration -Name „UserVars.SuppressShellWarning„ -Value 1
Write-Host $ESXiHost „: SSH, configured.„
#Config NTP
$ESXiHost | add-vmhostntpserver -ntpserver $NTP1 -confirm:$False
$ESXiHost | add-vmhostntpserver -ntpserver $NTP2 -confirm:$False
$ntpservice = $ESXiHost | get-vmhostservice | Where-Object {$_.key -eq „ntpd„}
Set-vmhostservice -HostService $ntpservice -Policy „on„ -confirm:$False
$hosttimesystem = get-view $ESXiHost.ExtensionData.ConfigManager.DateTimeSystem
$hosttimesystem.UpdateDateTime([DateTime]::UtcNow)
start-vmhostservice -HostService $ntpservice -confirm:$False
Write-Host $ESXiHost „: NTP, configured.„
#Remove PG
$defaultPG = $ESXiHost | Get-VirtualSwitch -Name vSwitch0 | Get-VirtualPortGroup -Name „VM Network„
Remove-VirtualPortGroup -VirtualPortGroup $defaultPG -confirm:$False
Write-Host $ESXiHost „: Default PG Removed.„
#Configre Static HighPower
$view = ($ESXiHost | Get-View)
(Get-View $view.ConfigManager.PowerSystem).ConfigurePowerPolicy(1)
Write-Host $ESXiHost „: PowerPolicy Configured„
#configure Syslog
$ESXiHost | Get-VMHostFirewallException |?{$_.Name -eq ‚syslog‚} | Set-VMHostFirewallException -Enabled:$true
$ESXiHost | Set-VMHostAdvancedConfiguration -NameValue @{‚Syslog.global.logHost‚=$syslog}
Write-Host $ESXiHost „: Firewall for Syslog Configured„
#Configure HP 3PAR SATP/PSP Rule
$SATPesxcli = $ESXiHost | Get-EsxCli
$SATPesxcli.storage.nmp.satp.rule.add($null,„tpgs_on„,„P 3PAR custom rule„,$null,$null,$null,„VV„,$null,„VMW_PSP_RR„,„iops=100„,„VMW_SATP_ALUA„,$null,$null,„3PARdata„)
Write-Host $ESXiHost „: HP 3PAR SATP/PSP Rule, configured.„
#Disable ATS HB (http://kb.vmware.com/kb/2113956)
Get-AdvancedSetting -Entity $ESXiHost.name -Name VMFS3.UseATSForHBOnVMFS5 | Set-AdvancedSetting -Value 0 -Confirm:$false
}
GitHub Gist:
- Weitere manuelle Konfigurationen
- Netzwerkkonfiguration fertigstellen (Helferlein)
- LUNs anbinden
- Für die Shared Disks den VMware KB 1016106 (Link) beachten
- HP iLO Log zurücksetzen und Agenten anpassen (ESXi Shell)
localcli hardware ipmi sel clear
chkconfig hp-ams.sh off
/etc/init.d/hp-ams.sh stop
/etc/init.d/sfcbd-watchdog stop
/etc/init.d/sfcbd-watchdog start
Exit
HP iLO Anpassung
- DNS Eintrag für HP iLO des Servers korrigieren
- DNS Namen neu setzen und SSL Zertifikat generieren
Für beides verwende ich ein etwas angepasstes Script von Ben Short (@practicalsa)
Original:
https://practicaladmin.wordpress.com/2014/11/26/hp-ilo-ssl-certificate-script-v3-now-available/
Meine Variante:
https://gist.github.com/mycloudrevolution/002a1ee6a8ca7ba493de
Virtuelle Windows Installation
- VM erstellen und anpassen
- RAM voll reserviert
- LSI Logic SAS SCSI Controller
- VMXNET3 Netzwerkkarten
- Basis Bereitstellung des Windows 2012 R2
- UAC deaktivieren
- Windows Updates
VMware Cluster Konfiguration für vMSCS Nodes
Dei beiden virtuellen MSCS Nodes sollen in der finalen Konstellation nicht auf einem ESXi Host zusammen laufen, daher sind ein paar DRS Regeln erforderlich.

DRS – Host Affinity Regeln
Wem das Ganze zu statisch ist, der kann auch mit VM -Anti Affinity Regeln arbeiten und das DRS für die VMs auf „Partially automated“ stellen.

DRS – VM Anti Affinity Regel
! Vorsicht ! DRS Option „ForceAffinePoweron = 1“ erforderlich (Details)
Windows Firewall Konfiguration für SQL
- SQL Ports (feste Ports für drei Instanzen und SQL Server Browser)
New-NetFirewallRule -DisplayName “SQL Server (TCP-in)” -Direction Inbound –Protocol TCP –LocalPort 1433–1435 -Action allow -description „Allows inbound Microsoft SQL connections.„
New-NetFirewallRule -DisplayName “SQL Server Browser (UDP-in)” -Direction Inbound –Protocol UDP –LocalPort 1434 -Action allow -Description „Allows inbound Microsoft SQL browser connections.„
- DTC Ports
Wenn DTC eingesetzt wird, kann hier noch eine weitere Regel erforderlich sein. Per Default wird hier die „RPC Dynmaic Port Rage“ verwendet.
Failover Cluster Konfiguration
- Failover Clustering Feature hinzufügen
- Auf weitere Windows Updates prüfen
- Den neuen Node dem Cluster hinzufügen
- Die Cluster Verifizierung wird mindestens die fehlenden Disks und vermutlich auch fehlende SQL Updates bemängeln
- Node im Failover Cluster Manager pausieren
Shared Disks der ersten VM hinzufügen
Es empfiehlt sich die Raw-Devices auf unterschiedliche SCSI Controller aufzuteilen.
Ich ging wie folgt vor:
SCSI 0:x – Betriebssystem
SCSI 1:x – Quorum, Verify und DTC LUNs
SCSI 2:x – Datenbanken LUNs
SCSI 3:x – Log LUNs
Wenn dann am Ende beide Nodes virtuell sind, sollten die SCSI ID`s übereinstimmen.

VM Konfiguration – Beispiel
! Vorsicht ! Keine Shared Disks auf SCSI 0:x hängen
! Vorsicht ! Für alle anderen SCSI Controller muss SCSI Bus Sharing aktiviert werden

SCSI Bus Sharing – VM eingeschaltet
! Vorsicht ! Nur möglich beim Hinzufügen oder wenn VM ausgeschaltet ist
Tests
- Cluster Verification
- Wenn die Konstellation pMSCS und vMSCS Nodes vorhanden ist, kann es zu einem Fehler im Bereich Disks kommen.
Grund hierfür ist, dass MPIO / nicht MPIO für Shared Disks nicht freigegeben ist. Typischerweise hat man aber auf einem physikalischen Server einen MPIO Treiber im Einsatz und innerhalb einer VM nicht…
- Wenn die Konstellation pMSCS und vMSCS Nodes vorhanden ist, kann es zu einem Fehler im Bereich Disks kommen.
- Ressourcen schwenken
- Move-ClusterGroup -Name „Cluster Group“
- Move-ClusterGroup -Name „Available Storage”
SQL Node hinzufügen
- Für jede SQL Instanz auf dem vMSCS Node
- SQL Setup starten
- Bei dem MPIO Verify Fehler den Setup wie folgt aufrufen:
Setup /SkipRules=Cluster_VerifyForErrors /Action=AddNode
- Bei dem MPIO Verify Fehler den Setup wie folgt aufrufen:
- SQL Instanz für die Installation auswählen
- Windows Update erneut starten
- SQL Setup starten
Weiterer MSCS Node
Das ganze Prozedere wiederholt sich dann mit dem zweiten Host, bis auf eine Ausnahme:
- Die Shared Disks an der zweiten VM werden nicht als Raw Device hinzugefügt, sondern als „bereits existierende Festplatte“ von dem bestehenden vMSCS Node (Details).
! Vorsicht ! Hier auch wieder auf das SCSI Bus Sharing achten
Referenzen
Microsoft – Add or Remove Nodes in a SQL Server Failover Cluster
https://msdn.microsoft.com/en-us/library/ms191545(v=sql.110).aspx
Microsoft – Recommended hotfixes and updates for Windows Server 2012 R2-based failover clusters
https://support.microsoft.com/en-us/kb/2920151
VMware – Setup for Failover Clustering and Microsoft Cluster Service
VMware – ESXi/ESX hosts with visibility to RDM LUNs being used by MSCS nodes with RDMs may take a long time to start or during LUN rescan (1016106)
http://kb.vmware.com/kb/1016106
VMware – Microsoft Clustering on VMware vSphere: Guidelines for supported configurations (1037959)
http://kb.vmware.com/kb/1037959
VMware – Unable to use Snapshots or perform a backup on virtual machines configured with bus-sharing (1006392)
http://kb.vmware.com/kb/1006392
Blog – SQL 2012 Failover Cluster
http://www.derekseaman.com/2013/09/sql-2012-failover-cluster-pt-1-introduction.html
No Responses