stap-voor-stap: hoe configureert u een failovercluster van SQL SERVER 2008 R2 op WINDOWS SERVER 2008 R2 in AZURE of AZURE STACK
op 9 juli 2019 eindigt de ondersteuning voor SQL Server 2008 en 2008 R2. Dat betekent het einde van de reguliere beveiligingsupdates. Echter, als je die SQL Server instances te verplaatsen naar Azure of Azure Stack (Ik zal gewoon verwijzen naar beide als Azure voor de rest van de gids), Microsoft zal u drie jaar van uitgebreide beveiligingsupdates zonder extra kosten. Als u op dit moment SQL Server 2008/2008 R2 draait en u niet in staat bent om te updaten naar een latere versie van SQL Server voor de deadline van 9 juli, zult u gebruik willen maken van deze aanbieding in plaats van het risico van een toekomstige beveiligingsprobleem. Een ongepatchte instantie van SQL Server kan leiden tot verlies van gegevens, downtime of een verwoestende inbreuk op gegevens.
een van de uitdagingen waarmee u geconfronteerd wordt bij het uitvoeren van SQL Server 2008/2008 R2 in Azure is het garanderen van hoge beschikbaarheid. Op locatie kunt u een FCI-exemplaar (SQL Server Failover Cluster) gebruiken voor hoge beschikbaarheid, of mogelijk draait u SQL Server op een virtuele machine en vertrouwt u op VMware HA of een Hyper-V-cluster voor beschikbaarheid. Bij het verplaatsen naar Azure, geen van deze opties zijn beschikbaar. Downtime in Azure is een zeer reële mogelijkheid die u stappen moet ondernemen om te beperken.
om de mogelijkheid van downtime te beperken en in aanmerking te komen voor 99,95% of 99 van Azure.99% SLA, je moet gebruik maken van SIOS DataKeeper. DataKeeper overwint het gebrek aan gedeelde opslag van Azure en stelt u in staat om een SQL Server FCI in Azure te bouwen die gebruik maakt van de lokaal aangesloten opslag op elke instantie. SIOS DataKeeper ondersteunt niet alleen SQL Server 2008 R2 en Windows Server 2008 R2 zoals gedocumenteerd in deze gids, Het ondersteunt elke versie van Windows Server, vanaf 2008 R2 via Windows Server 2019 en elke versie van SQL Server vanaf SQL Server 2008 via SQL Server 2019.
deze gids zal het proces doorlopen van het maken van een twee-knooppunt SQL Server 2008 R2 Failover Cluster Instance (FCI) in Azure, uitgevoerd op Windows Server 2008 R2. Hoewel SIOS DataKeeper ook clusters ondersteunt die beschikbaarheidszones of regio ‘ s omvatten, gaat deze gids ervan uit dat elk knooppunt zich in dezelfde azuurblauwe Regio bevindt, maar verschillende foutdomeinen. SIOS DataKeeper zal worden gebruikt in plaats van de gedeelde opslag die normaal nodig is om een SQL Server 2008 R2 FCI aan te maken.
vereisten
Active Directory
deze gids gaat ervan uit dat u een bestaand Active Directory-domein hebt. U kunt uw eigen domeincontrollers beheren of Azure Active Directory Domain Services gebruiken. Voor deze tutorial zullen we verbinding maken met een domein genaamd contoso.lokaal. Natuurlijk zult u verbinding maken met uw eigen domein bij het volgen van deze tutorial.
Open Firewall poorten
– SQL Server:1433 voor standaard Instance
– Load Balancer Health Probe: 59999
– DataKeeper: deze firewall regels worden automatisch toegevoegd aan de Windows host gebaseerde firewall tijdens de installatie. Raadpleeg de Sios-documentatie voor meer informatie over welke poorten worden geopend.
– houd er rekening mee dat als u een netwerkgebaseerde beveiliging hebt die poorten tussen de clusterknooppunten blokkeert, u daar ook rekening moet houden met deze poorten.
DataKeeper serviceaccount
Maak een domeinaccount aan. We zullen dit account specificeren wanneer we DataKeeper installeren. Dit account moet worden toegevoegd aan de lokale groep Administrators op elk knooppunt van het cluster.
Maak het eerste SQL Server-exemplaar aan in Azure
deze gids gebruikt de SQL Server 2008R2SP3 op Windows Server 2008R2-image die is gepubliceerd in de Azure Marketplace.
wanneer u de eerste instantie voorziet, moet u een nieuwe beschikbaarheidsset aanmaken. Tijdens dit proces moet u het aantal foutdomeinen verhogen tot 3. Hierdoor kunnen de twee clusterknooppunten en de file share witness elk in hun eigen foutdomein verblijven.
als u nog geen virtueel netwerk hebt geconfigureerd, kunt u met de wizard aanmaken een nieuw netwerk voor u maken.
zodra de instantie is gemaakt, ga naar de IP-configuraties en maak het privé IP-adres Statisch. Dit is vereist voor SIOS DataKeeper en is de beste praktijk voor geclusterde instanties.
zorg ervoor dat uw virtuele netwerk is geconfigureerd om de DNS-server in te stellen als een lokale Windows AD-controller, zodat u in een latere stap lid kunt worden van het domein.
nadat de virtuele machines zijn ingericht, voeg ten minste twee extra schijven toe aan elke instantie. Premium of Ultra SSD worden aanbevolen. Schakel caching uit op de schijven die gebruikt worden voor de SQL logbestanden. Schakel alleen-lezen caching in op de schijf die wordt gebruikt voor de SQL-gegevensbestanden. Raadpleeg Prestatierichtlijnen voor SQL Server in Azure Virtual Machines voor meer informatie over best practices voor opslag.
maak de tweede SQL Server-instantie aan in Azure
volg dezelfde stappen als hierboven, behalve dat u deze instantie in hetzelfde virtuele netwerk en Beschikbaarheidset plaatst die u met de eerste instantie hebt gemaakt.
Maak een File Share Witness (FSW) Instance
als u het Windows Server Failover Cluster (WSFC) optimaal wilt laten werken, moet u een ander Windows Server-instance maken en deze in dezelfde beschikbaarheidsset plaatsen als de SQL Server-instances. Door het in dezelfde beschikbaarheidsset te plaatsen, zorgt u ervoor dat elk clusterknooppunt en de FSW zich in verschillende foutdomeinen bevinden, zodat uw cluster on-line blijft als een volledig foutdomein off-line gaat. Deze gevallen vereist geen SQL Server, Het kan een eenvoudige Windows Server zijn als alles wat het hoeft te doen is hosten van een eenvoudige file share.
deze instantie zal hosten de file share witness vereist door WSFC. Deze instantie hoeft niet dezelfde grootte te hebben, noch vereist het extra schijven om te worden aangesloten. Het enige doel is om een eenvoudige file share hosten. Het kan in feite voor andere doeleinden worden gebruikt. In mijn lab omgeving is mijn FSW ook mijn domeincontroller.
Uninstall SQL Server 2008 R2
elk van de twee SQL Server-instanties die zijn ingericht, heeft al SQL Server 2008 R2 geïnstalleerd. Echter, ze zijn geïnstalleerd als standalone SQL Server instanties, niet geclusterde instanties. SQL Server moet uit elk van deze instanties worden verwijderd voordat we het cluster-exemplaar kunnen installeren. De makkelijkste manier om dat te doen is om de SQL Setup uit te voeren zoals hieronder getoond.
wanneer u instellingen uitvoert.exe / Action-RunDiscovery u ziet alles wat vooraf is geïnstalleerd
setup.exe /Action=RunDiscovery
bezig met instellen.exe / Action = Uninstall / FEATURES = SQL, AS, RS, IS, Tools / INSTANCENAME = MSSQLSERVER start het deïnstallatieproces
setup.exe /Action=Uninstall /FEATURES=SQL,AS,RS,IS,Tools /INSTANCENAME=MSSQLSERVER
bezig met instellen.exe / Action-RunDiscovery bevestigt het verwijderen voltooid
setup.exe /Action-RunDiscovery
voer dit verwijderingsproces opnieuw uit op de 2e instantie.
instanties toevoegen aan het domein
alle drie deze instanties moeten worden toegevoegd aan een Windows-domein. Zoals vermeld in het gedeelte Vereisten, moet u toegang hebben om lid te worden van een bestaande Windows Active Directory. In ons geval voegen we ons bij een domein genaamd contoso.lokaal.
toevoegen van Windows Failover Clustering functie
de Failover Clustering functie moet worden toegevoegd aan de twee SQL Server instanties
Add-WindowsFeature Failover-Clustering
installeer Convenience Rollup Update voor Windows Server 2008 R2 SP1
er is een belangrijke update (kb2854082) nodig om een Windows Server 2008 R2-exemplaar in Azure te configureren. Die update en nog veel meer zijn opgenomen in de Convenience Rollup Update voor Windows Server 2008 R2 SP1. Installeer deze update op elk van de twee SQL Server instances.
formatteer de opslag
de extra schijven die werden toegevoegd toen de twee SQL Server-instanties werden ingericht, moeten worden geformatteerd. Doe het volgende voor elk volume op elke instantie.
Microsoft best practices zegt het volgende …
” NTFS allocation unit size: Bij het formatteren van de data disk, is het raadzaam dat u een 64-KB allocation unit grootte gebruiken voor gegevens en logbestanden, evenals TempDB.”
voer Clustervalidatie uit
voer clustervalidatie uit om ervoor te zorgen dat alles klaar is om geclusterd te worden.
Import-Module FailoverClustersTest-Cluster -Node "SQL1", "SQL2"
uw rapport bevat waarschuwingen over opslag en netwerken. U kunt deze waarschuwingen negeren omdat we weten dat er geen gedeelde schijven zijn en er slechts één netwerkverbinding bestaat tussen de servers. U kunt ook een waarschuwing ontvangen over netwerk bindende volgorde die ook kan worden genegeerd. Als u fouten tegenkomt, moet u deze aanpakken voordat u verder gaat.
Fout bij het uitvoeren van Clustervalidatie?
ik ben deze fout een paar keer tegengekomen en ik probeer nog steeds uit te zoeken onder welke omstandigheden dit gebeurt. Af en toe zul je merken dat test-cluster niet werkt zoals beschreven in de forumpost.
Test-ClusterUnable to Validate a Cluster Configuration. The operation has failed. The action validate a configuration did not completeThere is an error in XML document (5, 73). Attempt by methodMicrosoft.Xml.Serialzation.GeneratedAssembly.XmlSerialzationReaderClusterPrep.Config.Read4_As...Bolean) to access methodMS.Internal.ServerClusters.Validation.TestAssemblyCollection.Add(MS.Internal.ServerClusters.V....Failed
als dit met u gebeurt, heb ik gevonden dat de volgende fix aanbevolen in het forum post werkt voor mij.
Inside C:\Windows\System32\WindowsPowerShell\v1.0 make a copy of powershell_ise.exe.config file (make a copy inside C:\Windows\System32\WindowsPowerShell\v1.0)- rename it to powershell.exe.configOpen it with notepad- delete current config line and paste:<?xml version="1.0" encoding="utf-8" ?><configuration> <system.xml.serialization> <xmlSerializer useLegacySerializerGeneration="true"/> </system.xml.serialization></configuration>- save and run test-cluster
hoewel deze oplossing u in staat stelt testcluster uit Powershell uit te voeren, heb ik ontdekt dat het uitvoeren van Validate via de GUI nog steeds een fout oplevert, zelfs met deze oplossing. Ik heb een query in Microsoft om te zien of ze een oplossing, maar voor nu als je nodig hebt om cluster validatie uit te voeren moet je misschien Test-Cluster gebruiken in Powershell.
Maak het Cluster
beste praktijken voor het maken van een cluster in Azure zou zijn om Powershell te gebruiken om een cluster te maken, met vermelding van een statisch IP-adres. Powershell stelt ons in staat om een statisch IP-adres op te geven, terwijl de GUI-methode dat niet doet. Helaas werkt Azure ‘ s implementatie van DHCP niet goed met WSFC, dus als u de GUI-methode gebruikt, zult u eindigen met een duplicaat IP-adres als het Cluster IP-adres dat moet worden vastgesteld voordat het cluster bruikbaar is.
echter, wat ik heb gevonden is dat de typische new-Cluster powershell-opdracht met de-StaticAddress-opdracht niet werkt. Om het probleem van het dubbele IP-adres te voorkomen, moeten we onze toevlucht nemen tot het cluster.exe utility en voer het volgende commando uit.
cluster /cluster:cluster1 /create /nodes:"sql1 sql2" /ipaddress:10.0.0.100/255.255.255.0
voeg de File Share Witness
toe volgende moeten we de File Share Witness toevoegen. Op de 3e server die we als FSW hebben ingericht, Maak je een map aan en deel je deze zoals hieronder getoond. U moet het Cluster Name Object (CNO) lees – /schrijfrechten verlenen op zowel het Share-als het beveiligingsniveau zoals hieronder weergegeven.
zodra de share is gemaakt, voert u de wizard Clusterquorum configureren uit op een van de clusterknooppunten en volgt u de onderstaande stappen.
installeer DataKeeper
installeer DataKeeper op elk van de twee SQL Server clusterknooppunten zoals hieronder getoond.
hier geven we het domeinaccount op dat we aan elk van de groep Lokale Domeinadministrators hebben toegevoegd.
configureer DataKeeper
zodra DataKeeper is geïnstalleerd op elk van de twee clusterknooppunten bent u klaar om DataKeeper te configureren.
opmerking-de meest voorkomende fout in de volgende stappen is beveiligingsgerelateerd, meestal door reeds bestaande Azure-beveiligingsgroepen die vereiste poorten blokkeren. Raadpleeg de Sios-documentatie om ervoor te zorgen dat de servers over de vereiste poorten kunnen communiceren.
eerst moet u verbinding maken met elk van de twee knooppunten.
als alles goed is geconfigureerd, ziet u het volgende in het Serveroverzichtrapport.
maak vervolgens een nieuwe taak aan en volg de onderstaande stappen
kies Ja hier om de DataKeeper Volume resource in beschikbare opslag te registreren
voltooi de bovenstaande stappen voor elk van de volumes. Zodra u klaar bent, ziet u het volgende in de WSFC UI.
u bent nu klaar om SQL Server in het cluster te installeren.
opmerking-op dit moment is het gerepliceerde volume alleen toegankelijk op het knooppunt dat momenteel de beschikbare opslag host. Dat wordt verwacht, dus maak je geen zorgen!
installeer SQL Server op het eerste knooppunt
Als u de installatie wilt script, heb ik het voorbeeld hieronder van een gescript cluster installatie van SQL Server 2008 R2 opgenomen in het eerste knooppunt van cluster. Het script om een knooppunt aan een bestaand cluster toe te voegen, vindt u verderop in de gids.
natuurlijk aanpassen aan uw omgeving.
c:\SQLServerFull\setup.exe /q /ACTION=InstallFailoverCluster /FEATURES=SQL /INSTANCENAME="MSSQLSERVER" /INSTANCEDIR="C:\Program Files\Microsoft SQL Server" /INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server" /SQLSVCACCOUNT="contoso\admin" /SQLSVCPASSWORD="xxxxxxxxx" /AGTSVCACCOUNT="contoso\admin" /AGTSVCPASSWORD="xxxxxxxxx" /SQLDOMAINGROUP="contoso\SQLAdmins" /AGTDOMAINGROUP="contoso\SQLAdmins" /SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" /FAILOVERCLUSTERGROUP="SQL Server 2008 R2 Group" /FAILOVERCLUSTERDISKS="DataKeeper Volume E" "DataKeeper Volume F" /FAILOVERCLUSTERIPADDRESSES="IPv4;10.0.0.101;Cluster Network 1;255.255.255.0" /FAILOVERCLUSTERNETWORKNAME="SQL2008Cluster" /SQLSYSADMINACCOUNTS="contoso\admin" /SQLUSERDBLOGDIR="E:\MSSQL10.MSSQLSERVER\MSSQL\Log" /SQLTEMPDBLOGDIR="F:\MSSQL10.MSSQLSERVER\MSSQL\Log" /INSTALLSQLDATADIR="F:\MSSQL10.MSSQLSERVER\MSSQLSERVER" /IAcceptSQLServerLicenseTerms
als u liever de GUI gebruikt, volg dan gewoon de onderstaande schermafbeeldingen.
voer op het eerste knooppunt de SQL Server setup uit.
Kies Nieuwe installatie van het failovercluster van SQL Server en volg de stappen zoals geïllustreerd.
kies alleen de opties die u nodig hebt.
let op, dit document gaat ervan uit dat u de standaard instantie van SQL Server gebruikt. Als je een Named Instance gebruikt moet je ervoor zorgen dat je de poort vergrendelt waarop het luistert, en die poort later gebruikt wanneer je de load balancer configureert. U moet ook een load balancer-regel maken voor de SQL Server Browser Service (UDP 1434) om verbinding te maken met een benoemde instantie. Geen van deze twee vereisten worden behandeld in deze handleiding, maar als u een benoemde instantie nodig heeft, zal het werken als u deze twee extra stappen doet.
hier moet u een ongebruikt IP-adres opgeven
Ga naar het tabblad gegevensmappen en verplaats gegevens-en logboekbestanden. Aan het einde van deze gids praten we over het verplaatsen van tempdb naar een niet-gespiegelde DataKeeper Volume voor optimale prestaties. Voor nu, gewoon houden op een van de geclusterde schijven.
installeer SQL Server op het tweede knooppunt
hieronder is een voorbeeld van de opdracht die u kunt uitvoeren om een extra knooppunt SQL Server 2008 R2 toe te voegen aan een bestaand cluster.
c:\SQLServerFull\setup.exe /q /ACTION=AddNode /INSTANCENAME="MSSQLSERVER" /SQLSVCACCOUNT="contoso\admin" /SQLSVCPASSWORD="xxxxxxxxx" /AGTSVCACCOUNT="contoso\admin" /AGTSVCPASSWORD="xxxxxxxx" /IAcceptSQLServerLicenseTerms
als u liever de GUI gebruikt, volg dan samen met de volgende schermafbeeldingen.
Voer de SQL Server-instelling opnieuw uit op het tweede knooppunt en kies knoop toevoegen aan een SQL Server-failovercluster.
Congratulations u bent bijna klaar! Echter, vanwege Azure ‘ s gebrek aan ondersteuning voor gratuite ARP, zullen we een interne Load Balancer (ILB) moeten configureren om te helpen met client redirection zoals getoond in de volgende stappen.
het IP-adres van het sql-Cluster
om de ILB goed te laten functioneren, moet u de volgende opdracht uitvoeren vanuit een van de clusterknooppunten. Het sql Cluster IP stelt het IP-adres van het SQL Cluster in staat om te reageren op de ILB-gezondheidssonde, terwijl het subnetmasker ook wordt ingesteld op 255.255.255.255 om conflicten met het IP-adres met de gezondheidssonde te voorkomen.
cluster res <IPResourceName> /priv enabledhcp=0 address=<ILBIP> probeport=59999 subnetmask=255.255.255.255
opmerking-Ik weet niet of het een toevalstreffer is, maar af en toe heb ik dit commando uitgevoerd en het lijkt erop dat het wordt uitgevoerd, maar het voltooit de taak niet en ik moet het opnieuw uitvoeren. De manier waarop ik kan zien of het werkte is door te kijken naar het subnetmasker van de SQL Server IP-bron, als het niet 255.255.255.255 dan weet je dat het niet met succes uitgevoerd. Het kan eenvoudig een GUI-verversingsprobleem zijn, dus u kunt ook proberen de cluster-GUI opnieuw op te starten om te controleren of het subnetmasker is bijgewerkt.
nadat het succesvol is uitgevoerd, neemt u de bron offline en brengt u deze weer online zodat de wijzigingen van kracht worden.
maak de Load Balancer
de laatste stap is het maken van de load balancer. In dit geval gaan we ervan uit dat je de standaard instantie van SQL Server draait, luisterend op poort 1433.
het privé-IP-adres dat u definieert bij het aanmaken van de load balancer is precies hetzelfde adres dat uw SQL Server FCI gebruikt.
voeg alleen de twee SQL Server-instanties toe aan de backend-pool. Voeg de FSW niet toe aan de backend pool.
In deze taakverdelingsregel moet u zwevend IP inschakelen
valideer het Cluster
voordat u doorgaat, voert u clustervalidatie nog een keer uit. Het Clustervalidatierapport moet dezelfde netwerk-en opslagwaarschuwingen geven als de eerste keer dat u het hebt uitgevoerd. Als er geen nieuwe fouten of waarschuwingen zijn, is uw cluster correct geconfigureerd.
Sqlserv bewerken.exe configuratiebestand
in map C:\Program bestanden(x86)\Microsoft SQL Server\100\Tools \ binnen we hebben een sqlps gemaakt.executable.configuratiebestand en sqlservr.executable.config met de volgende regels in het configuratiebestand:
<configuration> <startup> <supportedRuntime version="v2.0.50727"/> </startup></configuration>
deze bestanden zullen standaard niet bestaan en kunnen worden aangemaakt. Als dit bestand(en) al bestaat voor uw installatie, moet de <supportedRuntime version=”v2.0.50727″/> regel eenvoudig worden geplaatst met de <startup>…</startup> sub-sectie van de <configuratie>…</configuratie> sectie. Dit moet op beide servers gebeuren.
Test het Cluster
de eenvoudigste test is het openen van SQL Server Management Studio op het passieve knooppunt en het verbinden met het cluster. Als je in staat bent om verbinding te maken, gefeliciteerd, je deed alles correct! Als je geen verbinding kunt maken, wees dan niet bang, je zou niet de eerste persoon zijn die een fout maakt. Ik schreef een blog artikel om te helpen het probleem op te lossen. Het cluster beheren is precies hetzelfde als het beheren van een traditioneel gedeeld opslagcluster. Alles wordt geregeld via Failover Cluster Manager.
optioneel-Verplaats Tempdb
voor optimale prestaties is het raadzaam om tempdb naar de lokale, niet-gerepliceerde SSD te verplaatsen. SQL Server 2008 R2 vereist echter dat tempdb zich op een geclusterde schijf bevindt. SIOS heeft een oplossing genaamd een niet-gespiegelde Volumebron die dit probleem aanpakt. Het zou raadzaam zijn om een niet-gespiegelde volumebron van de lokale SSD-schijf te maken en daar tempdb te verplaatsen. De lokale SSD-schijf is echter niet-persistent, dus u moet ervoor zorgen dat de map met tempdb en de machtigingen op die map opnieuw worden gemaakt elke keer dat de server opnieuw opstart.