Windows Cluster is geen garantie voor verlies van data
Windows Failover Clustering (WSFC) beschermt de Windowsomgeving en applicaties tegen uitval van een servernode. Het biedt weliswaar een High Availability (HA) oplossing maar geen garantie tegen het verlies van data bij bedrijfkritische Windowsapplicaties als SQL Server. Want in een zogenaamde shared-nothing clusterconfiguratie vormt de shared storage een single-point of failure (spof). Wanneer de shared storage uitvalt, dan heeft geen enkele clusternode meer toegang tot de applicatiedata. De enige beschermde bestanden binnen een Windows cluster zijn de binary files van de SQL engine die zich lokaal op elke servernode bevinden.
Door een of meer kopieën van de SQL databestanden te maken, kan het risico van verlies van kritische databasedata sterk worden verkleind. Dit biedt een zogenaamde Disaster-Recovery (DR) oplossing. Microsoft biedt daarvoor het concept ‘SQL Server AlwaysOn’. De firma SIOS biedt met het product DataKeeper Cluster Editon (DKCE) een alternatief voor een dergelijke replicatie-oplossing. DKCE is een in hoge mate geoptimaliseerde host-gebaseerde replicatie-oplossing die naadloos aansluit op Microsoft Windows Server 2008 Failover Clustering (WSFC) en Microsoft Cluster Server (MSCS).
De SANless Cluster
Voor de SQL Server Always on in combinatie met WSFC is shared storage nodig, voor WSFC in combinatie met DKCE niet. De komst van SQL Server 2012 bracht de mogelijkheid om op basis van Server Message Block (SMB) 3.0 shares (in feite netwerk-gebaseerde storage) te creëren. Daardoor is voor shared storage niet langer meer een dure, op iSCSI of Fibre Channel gebaseerde, SAN nodig.
Werking DataKeeper Cluster Edition
Een van DataKeeper’s sleutelcomponenten is de kernel mode driver die verantwoordelijk is voor alle mirroringactiviteiten tussen de source en target mirror endpoints. De synchrone- of asynchrone replicatie vindt plaats op volume block level niveau. Bij de creatie van een mirror wordt eerst alle data gerepliceerd van het source naar het target volume. Na de initiële replicatie (ook wel ‘full resync’ genaamd) zijn beide volumes exact gelijk. Daarna onderschept DataKeeper alle writes naar het source volume en repliceert de datablocken via het netwerk naar het target volume.
DataKeeper maakt van een intent log file (ook wel aangeduid als een ‘bitmap file’) gebruik waarin de in het source volume aangebrachte wijzigingen worden bijgehouden. De log file geeft DataKeeper de mogelijkheid om een fout in het source systeem te herstellen zonder een volledige mirror resync te moeten uitvoeren na herstel van de uitgevallen source server. Het bijhouden van de log file gaat wel ten koste van de prestaties, reden waarom wordt aanbevolen om deze file op een SSD te plaatsen.
Volumes die niet kunnen worden gerepliceerd zijn: Windows system volume, volume(s) met Windows page file, niet-NTFS volumes, non-fixed drive types (cd-roms en dergelijke) en target volumes die kleiner zijn dan de source volumes. Er is geen limiet voor wat betreft de grootte van het gerepliceerde volume.
De ingebouwde WAN-optimalisatie maakt optimaal gebruik van de bestaande netwerkverbinding zonder dat een WAN accelerator nodig is. Door een efficiënt gebruik van compressie algoritmen wordt optimaal gebruik gemaakt van de beschikbare netwerkbandbreedte. DataKeeper is in staat om bij een 1 GbE netwerk een snelheid van 520 Mbps te halen.
Replicatie typen
Replicatie met DataKeeper kan op verschillende manieren en configuraties worden toegepast. Ten eerste, door een tweede fysieke copy van de data te maken. Ten tweede, een bestaande MSCS/WSFC cluster uit te breiden met een remote disaster recovery side en door de spof van de storage van de traditionele MSCS/WSFC cluster weg te nemen.
DataKeeper is te configureren in een eenvoudige disk replicatiefunctie van disk-to-disk; one-to-one, one-to-many en many-to-one. Disk-to-disk repliceert data tussen twee volumes op dezelfde server, one-to-one, one-to-many en many-to-one tussen een of meer volumes tussen server(s). De MSCS of WSFC cluster is uit te breiden met replicatie van een shared volume naar een remote system via N-shared-disk to one; N-shared-disk to N-shared-disk of N-shared-disk to multiple N-shared-disk.
Testconfiguratie DataKeeper
Figuur 1: Testopstelling DataKeeper Cluster Edition
Onze test baseren we op een basis 2-node Windows Server 2012 R2 cluster. De cluster draait in een Active Directory Domain die op een aparte DC server geïnstalleerd moet worden. Beide clusternodes zijn verbonden via twee netwerken, een 100Mb LAN en een 10GbE voor replicatie. De Remote Disaster Recovery Site ‘Remoteback-up’ is ook een Windows 2012 R2 server die deel uitmaakt van de dezelfde Domain. Op de primaire, secondaire en back-up Windows Servers wordt de DKCE software geïnstalleerd. Voor de replicatie tussen de twee clusternodes en de Remote Site Server worden Solid State Disks gebruikt. Op de cluster wordt SQL Server failover cluster software geïnstalleerd. Om de failover en disaster recovery functies van de cluster te testen maken we gebruik van de standaard database TPC-C test van de Benchmark Factory Databases test suite versie 7 van de firma Quest Software.
Installatie Windows 2012 Cluster
Voor de cluster installatie volgen we de standaard installatieprocedure. Omdat we een SANless cluster configureren en geen gebruik van shared storage maken, vinken we niet ‘add all eligble storage tot the cluster’ aan. Want, we maken geen gebruik van een ‘Node and Majority’ quorum; dit is wel de default keuze bij een cluster installatie. In plaats daarvan maken we gebruik van SMB 3.0 van Node en selecteren ‘File Share Majority quorum’.
Een File Share Witness moet op een server, in ons geval de ‘Domain Controller’, worden geconfigureerd die geen deel van de cluster mag uitmaken. De eerste stap is om een file share te creëren en onze ‘mycluster’ cluster daartoe read/write access op zowel share als NTFS level te geven. We geven de share de naam ‘FSW’.
Figuur 2: Installatie Failover Cluster op basis van File Share Witness
Nu we een file share op de DC hebben gecreëerd, keren we terug naar de Primary node en maken we van ‘Failover Cluster Manager’ gebruik om het quorum type te veranderen. We selecteren ‘Configure a file share wittness’ en selecteren de aangemaakte \\w2kr2green\fsw share. We hebben nu een basis 2-node cluster en gaan verder met de volgende stap: de creatie van de cluster resources. Daarbij maken we gebruik van een replicated disk resource op basis van de third-party software ‘DataKeeper Cluster Edition’, in plaats van een shared disk resource.
Installatie DataKeeper Cluster Edition
We hebben nu een basis 2-node ‘SAN-loos’ cluster gecreëerd en kunnen we beginnen met de installatie van de DKCE software op beide clusternodes. Hierbij wordt een mirror gecreëerd tussen twee Solid State Devices; de Kingston SSDNOW 50 SSDs met een capaciteit van 240GB; 130/160 MB/s read/write-snelheden en 3000 IOPs. Beide SSDs zijn SATA disk drives die direct verbonden zijn met de clusternodes.
Figuur 3: Mirror details
Als eerste installeren we DataKeeper op de primaire node. In de achtereenvolgende menu’s wordt de Domain of Server account gespecificeerd en de license file. Na een reboot van de server wordt het DataKeeper User Interface gestart. Na het intypen van de primaire en secondaire servernaam wordt een verbinding met beide gemaakt. Na klikken van de ‘Create Job’ volgen we de menu’s om een mirror op de ‘r’ drive te creëren. In het ‘New Mirror’ menu typen we de naam van het source volume, het IP adres op de server en het ‘r’ volume. Dezelfde input geldt voor de Target Server. In het ‘Details’ menu zijn de instellingen van de mirror te specificeren, waaronder: asynchroon of synchroon, de hoeveelheid te comprimeren data en de maximale bandbreedte (meestal gebruikt bij WAN replicatie). Wij kiezen voor synchroon. Na de creatie kan de mirror als volume aan WSFC worden geregistreerd.
Installatie SQL Server 2012
We vervolgen met de installatie van SQL Server 2012 op de primaire clusternode. In het SQL Server Installation Center menu selecteren we ‘New SQL failover cluster installation’. In het ‘Instance Configuration’ menu geven we een naam aan het SQL Server Network. Als ‘Cluster Disk Selection’ tabblad selecteren we als shared disk het geregistreerde DataKeeper Volume ‘r’ en in het Network Configuration’ tabblad een IP-adres van de primaire server. Na het aanklikken van de ‘Add node to a Server failover cluster’ starten we op dezelfde wijze de installatie op de secondaire clusternode.
Remote Disaster Recovery
Voor het geval de primaire site uitvalt, kan de MSCS of WSFC cluster worden uitgebreid met een shared volume die via een LAN/WAN verbinding naar een remote target wordt gerepliceerd. Op de remoteback-up server creëren we een 400GB volume op een Intel SSD S3700 Series. Na installatie van DataKeeper software op de remoteback-up server creëren we vanuit de bestaande ‘SQL Replication’ job op de primaire server ook een synchrone mirror naar de remote server.
Figuur 4: Overzicht beide mirrors
Een alternatief is om een remote back-up in de cloud te plaatsen. In samenwerking met Amazon heeft SIOS een replicatie-oplossing ontworpen die data en applicatie in de cloud repliceert. De SANless software synchroniseert real-time kopieën van data over meerdere nodes. Failover binnen en tussen EC2 Availability Zones (AZs) wordt ondersteund availability en disaster protectie in een Amazon cloud.
Failover test
Figuur 5: Benchmark Factory TPC-C test
Het idee achter de failover test is om aan te tonen dat bij uitval van een clusternode de SQL applicatie blijft functioneren en er geen applicatiedata verloren gaat. De SQL data blijft via de remoteback-up replicatie mirror beschermd de data bij uitval van een clusternode. Om de DR-functie te testen maken we gebruik van een trial Quest Database Benchmark gestandaardiseerde TPC-C test. De trial licentie is slechts voor tien gebruikers waarvan het geringe aantal voor ons doel niet uitmaakt. Na de configuratie van de TPC-C benchmarktest starten we deze TPC-C test op.
Uitschakeling primaire node
We trekken nu ‘rücksichtslos’ de 220V stekker uit de primaire server. Het WSFC systeem detecteert de uitval van de primaire node en schakelt over na de passieve node die nu de actieve clusternode wordt. De mirror tussen de primaire- en secondaire node is nu verbroken en krijgt de status ‘Resync pending’. De data van de SQL applicatie op de secondaire node wordt nu beschermd door de mirror tussen de secondaire- en remote back-up node. We zien dat geen enkele data verloren gaat en de gebruiker zal zo goed als niets merken dat een van de nodes verloren is gegaan. De Benchmark test laat geen enkele foutmelding zien. Na inschakeling van de primaire clusternode zien we dat WSFC service de uitgevallen node weer oppikt. Zodra de primaire node weer deel uitmaakt van de cluster wordt de status gemeld aan de DataKeeper. Daarna wordt de mirror tussen de primaire- en secondaire node gesynchroniseerd en is de oude situatie weer hersteld.
Uitschakeling secondaire node
We herhalen de test maar nu met uitschakeling van de secondaire node. De mirror naar de remote-back-up node wordt overgenomen door de primaire node. Ook hier blijft de SQL data beschermd door de mirror. We schakelen de secondaire node weer in en wachten tot de cluster volledig is hersteld. Automatisch wordt de mirror tussen de primaire en secondaire clusternode weer herstelt.
Ook constateren we dat er voor de gebruiker geen merkbare gevolgen waarneembaar zijn. Alleen geeft de benchmark een OCBC-error aan met als oorzaak een ‘SQL Server Native Client Communication Link failure’. Er gaat echter geen data verloren en de test verloopt verder zonder foutmeldingen.
Conclusie
Figuur 7: Uitgevallen mirror bij afschakeling secondaire node
Het product DataKeeper Cluster Edition van de firma SIOS biedt in combinatie met Windows Cluster een volledige HA/DR-oplossing voor de Windows omgeving. DataKeeper is in verschillende omgevingen toepasbaar: op basis van een traditioneel SAN-gebaseerde shared storage of via de nieuwe SMB 3.0 Node en File Share Majority quorum van Windows Server 2012 R2. De laatste maakt een ‘SANless’ cluster mogelijk, de omgeving waarop onze test is gebaseerd. De installatie van de DataKeeper software op elke cluster is betrekkelijk eenvoudig en verloopt zonder problemen. De creatie van de cluster mirrors en de remoteback-up mirror is vanuit de GUI snel geregeld.
Als applicatie draaiden we een database TCP-C test. De failover naar beide kanten van de cluster verloopt zonder problemen. Na herstel van de afgeschakelde clusternode wordt de mirror snel hersteld en er treedt geen verlies van data op tijdens de SQL TPC-C database test.
Voor meer informatie over DataKeeper Cluster Edition: FT Systems
Bram Dons is consultant bij IT trendwatch