ProHoster > Blog > administration > Opbygning af en fejltolerant løsning baseret på Oracle RAC og AccelStor Shared-Nothing arkitektur
Opbygning af en fejltolerant løsning baseret på Oracle RAC og AccelStor Shared-Nothing arkitektur
Et betydeligt antal Enterprise-applikationer og virtualiseringssystemer har deres egne mekanismer til at bygge fejltolerante løsninger. Specifikt er Oracle RAC (Oracle Real Application Cluster) en klynge af to eller flere Oracle-databaseservere, der arbejder sammen for at balancere belastning og give fejltolerance på server-/applikationsniveau. For at arbejde i denne tilstand har du brug for et delt lager, som normalt er et lagersystem.
Som vi allerede har diskuteret i en af vores artikler, selve lagersystemet, på trods af tilstedeværelsen af duplikerede komponenter (inklusive controllere), har stadig fejlpunkter - hovedsageligt i form af et enkelt sæt data. Derfor, for at bygge en Oracle-løsning med øgede krav til pålidelighed, skal "N servere - ét lagersystem"-skemaet være kompliceret.
Først skal vi selvfølgelig beslutte, hvilke risici vi forsøger at forsikre os imod. I denne artikel vil vi ikke overveje beskyttelse mod trusler som "en meteorit er ankommet." Så opbygning af en geografisk spredt disaster recovery-løsning vil forblive et emne for en af de følgende artikler. Her vil vi se på den såkaldte Cross-Rack disaster recovery løsning, når beskyttelse er bygget på niveau med serverkabinetter. Selve skabene kan placeres i samme rum eller i forskellige, men normalt inden for samme bygning.
Disse kabinetter skal indeholde hele det nødvendige sæt udstyr og software, der tillader driften af Oracle-databaser uanset tilstanden af "naboen". Med andre ord, ved at bruge Cross-Rack-katastrofegendannelsesløsningen eliminerer vi risikoen for fejl:
Oracle applikationsservere
Opbevaring systemer
Skifte systemer
Fuldstændig fejl på alt udstyr i kabinettet:
Afslag på strøm
Fejl i kølesystemet
Eksterne faktorer (menneske, natur osv.)
Duplikering af Oracle-servere indebærer selve driftsprincippet i Oracle RAC og implementeres gennem en applikation. Duplikering af omstillingsfaciliteter er heller ikke et problem. Men med duplikering af lagersystemet er alt ikke så enkelt.
Den enkleste mulighed er datareplikering fra hovedlagersystemet til backupsystemet. Synkron eller asynkron, afhængigt af lagersystemets muligheder. Ved asynkron replikering opstår der straks spørgsmålet om at sikre datakonsistens i forhold til Oracle. Men selv hvis der er softwareintegration med applikationen, vil der under alle omstændigheder, hvis der er en fejl på hovedlagersystemet, kræves manuel indgriben fra administratorer for at skifte klyngen til backuplager.
En mere kompleks mulighed er software- og/eller hardwarelagrings-"virtualizere", der vil eliminere konsistensproblemer og manuel indgriben. Men kompleksiteten af implementeringen og den efterfølgende administration, såvel som de meget uanstændige omkostninger ved sådanne løsninger, afskrækker mange.
AccelStor NeoSapphire™ All Flash-array-løsningen er perfekt til scenarier som Cross-Rack-katastrofegendannelse H710 ved hjælp af Shared-Nothing-arkitektur. Denne model er et to-node lagringssystem, der bruger proprietær FlexiRemap®-teknologi til at arbejde med flashdrev. Tak til FlexiRemap® NeoSapphire™ H710 er i stand til at levere ydeevne op til 600K IOPS@4K tilfældig skrivning og 1M+ IOPS@4K tilfældig læsning, hvilket er uopnåeligt ved brug af klassiske RAID-baserede lagersystemer.
Men hovedtræk ved NeoSapphire™ H710 er udførelsen af to noder i form af separate sager, som hver har sin egen kopi af dataene. Synkronisering af noder udføres gennem den eksterne InfiniBand-grænseflade. Takket være denne arkitektur er det muligt at distribuere noder til forskellige lokationer i en afstand på op til 100m, hvilket giver en Cross-Rack disaster recovery-løsning. Begge noder fungerer fuldstændig synkront. Fra værtssiden ligner H710 et almindeligt dual-controller-lagersystem. Derfor er det ikke nødvendigt at udføre yderligere software- eller hardwareindstillinger eller særligt komplekse indstillinger.
Hvis vi sammenligner alle Cross-Rack-katastrofegendannelsesløsningerne beskrevet ovenfor, skiller muligheden fra AccelStor sig mærkbart ud fra resten:
Serverfejl Ingen nedetid Ingen nedetid Ingen nedetid
Switchfejl Ingen nedetid Ingen nedetid Ingen nedetid
Lagersystemfejl Ingen nedetid Ingen nedetid Nedetid
Hele kabinetsfejl Ingen nedetid Ingen nedetid Nedetid
Omkostninger og kompleksitet
Løsningsomkostninger
Lav*
Høj
Høj
Implementeringskompleksitet
Низкая
Høj
Høj
*AccelStor NeoSapphire™ er stadig et All Flash-array, som pr. definition ikke koster "3 kopek", især da det har en dobbelt kapacitetsreserve. Men når man sammenligner de endelige omkostninger for en løsning baseret på den med lignende fra andre leverandører, kan omkostningerne betragtes som lave.
Topologien for tilslutning af applikationsservere og All Flash array noder vil se sådan ud:
Når du planlægger topologien, anbefales det også stærkt at duplikere administrationsswitches og sammenkoble servere.
Her og længere vil vi tale om tilslutning via Fibre Channel. Hvis du bruger iSCSI, vil alt være det samme, justeret for de anvendte typer af switche og lidt forskellige array-indstillinger.
Forberedende arbejde på arrayet
Anvendt udstyr og software
Server- og switch-specifikationer
Komponenter
beskrivelse
Oracle Database 11g servere
to
Server operativsystem
Oracle Linux
Oracle database version
11 g (RAC)
Processorer pr. server
To 16 kerner Intel® Xeon® CPU E5-2667 v2 @ 3.30 GHz
Fysisk hukommelse pr. server
128GB
FC netværk
16Gb/s FC med multipathing
FC HBA
Emulex Lpe-16002B
Dedikerede offentlige 1GbE-porte til klyngestyring
Intel ethernet adapter RJ45
16 Gb/s FC switch
Brokade 6505
Dedikerede private 10GbE-porte til datasynkronisering
Intel X520
AccelStor NeoSapphire™ All Flash Array Specifikation
Komponenter
beskrivelse
Lagersystem
NeoSapphire™ model med høj tilgængelighed: H710
Billedversion
4.0.1
Samlet antal drev
48
Drevstørrelse
1.92TB
Drev type
SSD
FC målporte
16 x 16 Gb porte (8 pr. node)
Ledelsesporte
1GbE Ethernet-kablet forbinder til værter via en Ethernet-switch
Hjerteslagsport
1GbE Ethernet-kablet forbinder mellem to lagernoder
Datasynkroniseringsport
56 Gb/s InfiniBand kabel
Før du kan bruge et array, skal du initialisere det. Som standard er kontroladressen for begge noder den samme (192.168.1.1). Du skal oprette forbindelse til dem én efter én og sætte nye (allerede forskellige) administrationsadresser og opsætte tidssynkronisering, hvorefter Management-portene kan forbindes til et enkelt netværk. Bagefter kombineres noderne til et HA-par ved at tildele undernet til interlinkforbindelser.
Når initialiseringen er fuldført, kan du administrere arrayet fra enhver node.
Dernæst opretter vi de nødvendige volumener og udgiver dem til applikationsservere.
Det anbefales stærkt at oprette flere volumener til Oracle ASM, da dette vil øge antallet af mål for serverne, hvilket i sidste ende vil forbedre den samlede ydeevne (mere om køer i en anden artiklen).
Test konfiguration
Navn på lagervolumen
Volumenstørrelse
Data 01
200GB
Data 02
200GB
Data 03
200GB
Data 04
200GB
Data 05
200GB
Data 06
200GB
Data 07
200GB
Data 08
200GB
Data 09
200GB
Data 10
200GB
Grid01
1GB
Grid02
1GB
Grid03
1GB
Grid04
1GB
Grid05
1GB
Grid06
1GB
Gentag 01
100GB
Gentag 02
100GB
Gentag 03
100GB
Gentag 04
100GB
Gentag 05
100GB
Gentag 06
100GB
Gentag 07
100GB
Gentag 08
100GB
Gentag 09
100GB
Gentag 10
100GB
Nogle forklaringer om arrayets driftstilstande og de processer, der forekommer i nødsituationer
Datasættet for hver node har en "versionsnummer"-parameter. Efter initialisering er det det samme og lig med 1. Hvis versionsnummeret af en eller anden grund er anderledes, så synkroniseres data altid fra den ældre version til den yngre, hvorefter nummeret på den yngre version justeres, dvs. det betyder, at kopierne er identiske. Årsager til, at versioner kan være forskellige:
Planlagt genstart af en af noderne
Et uheld på en af knudepunkterne på grund af en pludselig nedlukning (strømforsyning, overophedning osv.).
Mistet InfiniBand-forbindelse med manglende evne til at synkronisere
Et nedbrud på en af noderne på grund af datakorruption. Her skal du oprette en ny HA-gruppe og fuldføre synkronisering af datasættet.
Under alle omstændigheder øger den node, der forbliver online, sit versionsnummer med én for at synkronisere sit datasæt, efter at forbindelsen med parret er gendannet.
Hvis forbindelsen over Ethernet-forbindelsen afbrydes, skifter Heartbeat midlertidigt til InfiniBand og vender tilbage inden for 10 sekunder, når det gendannes.
Opsætning af værter
For at sikre fejltolerance og forbedre ydeevnen skal du aktivere MPIO-understøttelse for arrayet. For at gøre dette skal du tilføje linjer til filen /etc/multipath.conf og derefter genstarte multipath-tjenesten
Dernæst, for at ASM kan arbejde med MPIO via ASMLib, skal du ændre filen /etc/sysconfig/oracleasm og derefter køre /etc/init.d/oracleasm scandisks
Skjult tekst
# ORACLEASM_SCANORDER: Matchende mønstre for at bestille diskscanning
ORACLEASM_SCANORDER="dm"
# ORACLEASM_SCANEXCLUDE: Matchende mønstre for at udelukke diske fra scanning
ORACLEASM_SCANEXCLUDE="sd"
Bemærk
Hvis du ikke ønsker at bruge ASMLib, kan du bruge UDEV-reglerne, som er grundlaget for ASMLib.
Fra og med version 12.1.0.2 af Oracle Database er muligheden tilgængelig for installation som en del af ASMFD-softwaren.
Det er bydende nødvendigt at sikre, at de diske, der er oprettet til Oracle ASM, er tilpasset den blokstørrelse, som arrayet fysisk opererer med (4K). Ellers kan der opstå ydeevneproblemer. Derfor er det nødvendigt at oprette volumener med de relevante parametre:
Til demonstrationsformål blev HammerDB brugt til at emulere en OLTP-belastning. HammerDB konfiguration:
Antal varehuse
256
Samlede transaktioner pr. bruger
1000000000000
Virtuelle brugere
256
Resultatet var en 2.1M TPM, hvilket er langt fra arrayets ydeevnegrænse H710, men er et "loft" for den aktuelle hardwarekonfiguration af servere (primært på grund af processorer) og deres antal. Formålet med denne test er stadig at demonstrere fejltolerancen for løsningen som helhed og ikke at opnå maksimal ydeevne. Derfor vil vi blot bygge videre på dette tal.
Test for fejl på en af noderne
Værterne mistede en del af stierne til lageret og fortsatte med at arbejde gennem de resterende med den anden node. Ydeevnen faldt i et par sekunder på grund af stierne, der blev genopbygget, og vendte derefter tilbage til normalen. Der var ingen afbrydelse i tjenesten.
Skabsfejltest med alt udstyr
I dette tilfælde faldt ydeevnen også i nogle få sekunder på grund af omstruktureringen af stierne og vendte derefter tilbage til halvdelen af den oprindelige værdi. Resultatet blev halveret i forhold til det oprindelige på grund af udelukkelsen af en applikationsserver fra drift. Der var heller ingen afbrydelse i tjenesten.
Hvis der er behov for at implementere en fejltolerant Cross-Rack-katastrofegendannelsesløsning til Oracle til en rimelig pris og med ringe implementerings-/administrationsindsats, så arbejder Oracle RAC og arkitektur sammen AccelStor Delt-Intet vil være en af de bedste muligheder. I stedet for Oracle RAC kan der være enhver anden software, der giver clustering, f.eks. samme DBMS eller virtualiseringssystemer. Princippet om at konstruere løsningen vil forblive det samme. Og bundlinjen er nul for RTO og RPO.