Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Nemažai įmonių taikomųjų programų ir virtualizacijos sistemų turi savo mechanizmus, skirtus gedimams atspariems sprendimams kurti. Tiksliau, „Oracle RAC“ („Oracle Real Application Cluster“) yra dviejų ar daugiau „Oracle“ duomenų bazės serverių, veikiančių kartu, kad subalansuotų apkrovą ir užtikrintų atsparumą gedimams serverio / programos lygiu, grupė. Norėdami dirbti šiuo režimu, jums reikia bendros saugyklos, kuri paprastai yra saugojimo sistema.

Kaip jau aptarėme viename iš mūsų straipsniai, pati saugojimo sistema, nepaisant pasikartojančių komponentų (įskaitant valdiklius), vis dar turi gedimo taškų – daugiausia vieno duomenų rinkinio pavidalu. Todėl norint sukurti Oracle sprendimą su padidintais patikimumo reikalavimais, schema „N serveriai – viena saugojimo sistema“ turi būti sudėtinga.

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Pirmiausia, žinoma, turime nuspręsti, nuo kokių rizikų bandome apsidrausti. Šiame straipsnyje mes nenagrinėsime apsaugos nuo tokių grėsmių kaip „meteoritas atvyko“. Taigi geografiškai išsklaidyto atkūrimo sprendimo po nelaimės kūrimas išliks vieno iš šių straipsnių tema. Čia pažvelgsime į vadinamąjį Cross-Rack nelaimingų atsitikimų atkūrimo sprendimą, kai apsauga kuriama serverių spintų lygiu. Pačios spintos gali būti toje pačioje patalpoje arba skirtingose, bet dažniausiai tame pačiame pastate.

Šiose spintelėse turi būti visas reikalingas įrangos ir programinės įrangos rinkinys, kuris leistų valdyti Oracle duomenų bazes nepriklausomai nuo „kaimyno“ būsenos. Kitaip tariant, naudodami Cross-Rack atkūrimo sprendimą nelaimės atveju pašaliname gedimo riziką:

  • „Oracle“ taikomųjų programų serveriai
  • Saugojimo sistemos
  • Perjungimo sistemos
  • Visiškas visos spintoje esančios įrangos gedimas:
    • Galios atsisakymas
    • Aušinimo sistemos gedimas
    • Išoriniai veiksniai (žmogus, gamta ir kt.)

Oracle serverių dubliavimas reiškia patį Oracle RAC veikimo principą ir yra įgyvendinamas naudojant programą. Perjungimo įrenginių dubliavimas taip pat nėra problema. Tačiau dubliuojant saugojimo sistemą viskas nėra taip paprasta.

Paprasčiausias variantas yra duomenų replikavimas iš pagrindinės saugojimo sistemos į atsarginę. Sinchroninis arba asinchroninis, priklausomai nuo saugojimo sistemos galimybių. Naudojant asinchroninį replikavimą, iškart kyla klausimas, kaip užtikrinti duomenų nuoseklumą, palyginti su „Oracle“. Bet net jei programinė įranga yra integruota su programa, bet kokiu atveju, pagrindinės saugojimo sistemos gedimo atveju, norint perkelti klasterį į atsarginę saugyklą, reikės rankinio administratorių įsikišimo.

Sudėtingesnė parinktis yra programinės ir (arba) aparatinės įrangos saugojimo „virtualizatoriai“, kurie pašalins nuoseklumo problemas ir rankinį įsikišimą. Tačiau diegimo ir vėlesnio administravimo sudėtingumas, taip pat labai nepadori tokių sprendimų kaina daugelį atbaido.

AccelStor NeoSapphire™ All Flash masyvo sprendimas puikiai tinka tokiems scenarijams kaip Cross-Rack atkūrimas po nelaimingų atsitikimų H710 naudojant Shared-Nothing architektūrą. Šis modelis yra dviejų mazgų saugojimo sistema, kuri naudoja patentuotą FlexiRemap® technologiją darbui su „flash drives“. Ačiū FlexiRemap® „NeoSapphire™ H710“ gali užtikrinti iki 600 K IOPS@4K atsitiktinio rašymo ir 1 M+ IOPS@4K atsitiktinio skaitymo našumą, o tai nepasiekiama naudojant klasikines RAID pagrįstas saugojimo sistemas.

Tačiau pagrindinė NeoSapphire™ H710 savybė yra dviejų mazgų vykdymas atskirų atvejų pavidalu, kurių kiekvienas turi savo duomenų kopiją. Mazgų sinchronizavimas atliekamas per išorinę InfiniBand sąsają. Dėl šios architektūros mazgus galima paskirstyti skirtingose ​​vietose iki 100 m atstumu, taip suteikiant Cross-Rack atkūrimo sprendimą nelaimės atveju. Abu mazgai veikia visiškai sinchroniškai. Iš pagrindinio kompiuterio pusės H710 atrodo kaip įprasta dviejų valdiklių saugojimo sistema. Todėl nereikia atlikti jokių papildomų programinės ar techninės įrangos parinkčių ar ypač sudėtingų nustatymų.

Jei palyginsime visus aukščiau aprašytus Cross-Rack atkūrimo sprendimus, tada „AccelStor“ parinktis pastebimai išsiskiria iš kitų:

„AccelStor NeoSapphire™“ bendro naudojimo architektūra
Programinės ar aparatinės įrangos „virtualizatoriaus“ saugojimo sistema
Replikacija pagrįstas sprendimas

Prieinamumas

Serverio gedimas
Nėra prastovų
Nėra prastovų
Nėra prastovų

Jungiklio gedimas
Nėra prastovų
Nėra prastovų
Nėra prastovų

Saugojimo sistemos gedimas
Nėra prastovų
Nėra prastovų
Prastovos

Viso kabineto gedimas
Nėra prastovų
Nėra prastovų
Prastovos

Kaina ir sudėtingumas

Sprendimo kaina
Žemas*
Aukštas
Aukštas

Diegimo sudėtingumas
Žemas
Aukštas
Aukštas

*AccelStor NeoSapphire™ vis dar yra „All Flash“ masyvas, kuris pagal apibrėžimą nekainuoja „3 kapeikų“, juolab kad turi dvigubą talpos rezervą. Tačiau lyginant galutinę juo paremto sprendimo kainą su panašiais kitų tiekėjų sprendimais, kaina gali būti laikoma maža.

Programų serverių ir visų „Flash“ masyvo mazgų sujungimo topologija atrodys taip:

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Planuojant topologiją, taip pat labai rekomenduojama dubliuoti valdymo jungiklius ir sujungti serverius.

Toliau kalbėsime apie ryšį per Fibre Channel. Jei naudosite iSCSI, viskas bus taip pat, pritaikyta naudojamų jungiklių tipams ir šiek tiek kitokiems masyvo parametrams.

Parengiamieji masyvo darbai

Naudota įranga ir programinė įranga

Serverio ir jungiklio specifikacijos

Komponentai
aprašymas

Oracle Database 11g serveriai
Du

Serverio operacinė sistema
„Oracle Linux“

Oracle duomenų bazės versija
11 g (RAC)

Procesoriai vienam serveriui
Du 16 branduolių Intel® Xeon® CPU E5-2667 v2 @ 3.30 GHz

Fizinė atmintis vienam serveriui
128GB

FC tinklas
16Gb/s FC su daugialypiu ryšiu

FC HBA
Emulex Lpe-16002B

Specialūs viešieji 1GbE prievadai, skirti klasterių valdymui
Intel eterneto adapteris RJ45

16Gb/s FC jungiklis
Brokatas 6505

Privatūs 10GbE prievadai duomenims sinchronizuoti
"Intel X520"

„AccelStor NeoSapphire™“ visos „Flash Array“ specifikacijos

Komponentai
aprašymas

Saugojimo sistema
NeoSapphire™ didelio prieinamumo modelis: H710

Vaizdo versija
4.0.1

Bendras diskų skaičius
48

Pavaros dydis
1.92TB

Važiavimo tipas
VSD

FC tiksliniai prievadai
16x 16Gb prievadai (8 viename mazge)

Valdymo prievadai
1GbE eterneto kabelis, jungiantis prie pagrindinio kompiuterio per eterneto jungiklį

Širdies plakimo uostas
1GbE eterneto kabelis, jungiantis du saugojimo mazgus

Duomenų sinchronizavimo prievadas
56Gb/s InfiniBand laidas

Prieš naudodami masyvą, turite jį inicijuoti. Pagal numatytuosius nustatymus abiejų mazgų valdymo adresai yra vienodi (192.168.1.1). Prie jų reikia prisijungti po vieną ir nustatyti naujus (jau skirtingus) valdymo adresus bei nustatyti laiko sinchronizaciją, po kurios valdymo prievadus galima prijungti prie vieno tinklo. Vėliau mazgai sujungiami į HA porą, priskiriant potinklius tarpsavio ryšiams.

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Baigę inicijuoti, galite valdyti masyvą iš bet kurio mazgo.

Tada sukuriame reikiamus tomus ir paskelbiame juos programų serveriuose.

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Labai rekomenduojama sukurti kelis Oracle ASM tomus, nes tai padidins serverių taikinių skaičių, o tai galiausiai pagerins bendrą našumą (daugiau apie eiles kitame straipsnis).

Bandymo konfigūracija

Saugyklos tūrio pavadinimas
Tūrio dydis

Duomenys01
200GB

Duomenys02
200GB

Duomenys03
200GB

Duomenys04
200GB

Duomenys05
200GB

Duomenys06
200GB

Duomenys07
200GB

Duomenys08
200GB

Duomenys09
200GB

Duomenys10
200GB

„Grid01“
1GB

„Grid02“
1GB

„Grid03“
1GB

„Grid04“
1GB

„Grid05“
1GB

„Grid06“
1GB

Pakartoti 01
100GB

Pakartoti 02
100GB

Pakartoti 03
100GB

Pakartoti 04
100GB

Pakartoti 05
100GB

Pakartoti 06
100GB

Pakartoti 07
100GB

Pakartoti 08
100GB

Pakartoti 09
100GB

Pakartoti 10
100GB

Kai kurie paaiškinimai apie masyvo veikimo režimus ir procesus, vykstančius avarinėse situacijose

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Kiekvieno mazgo duomenų rinkinys turi parametrą „versijos numeris“. Po pirminio inicijavimo jis yra toks pat ir lygus 1. Jei dėl kokių nors priežasčių skiriasi versijos numeris, tada duomenys visada sinchronizuojami iš senesnės versijos į jaunesnę, po to lygiuojamas jaunesnės versijos numeris, t.y. tai reiškia, kad kopijos yra identiškos. Priežastys, kodėl versijos gali skirtis:

  • Suplanuotas vieno iš mazgų paleidimas iš naujo
  • Nelaimingas atsitikimas viename iš mazgų dėl staigaus išjungimo (maitinimas, perkaitimas ir kt.).
  • Nutrūko „InfiniBand“ ryšys ir nepavyko sinchronizuoti
  • Viename iš mazgų gedimas dėl duomenų sugadinimo. Čia turėsite sukurti naują HA grupę ir užbaigti duomenų rinkinio sinchronizavimą.

Bet kokiu atveju mazgas, kuris lieka prisijungęs, padidina savo versijos numerį vienu, kad sinchronizuotų savo duomenų rinkinį po to, kai ryšys su pora atkurtas.

Jei nutrūksta ryšys per Ethernet ryšį, Heartbeat laikinai persijungia į InfiniBand ir grįžta per 10 sekundžių, kai bus atkurtas.

Šeimininkų nustatymas

Norėdami užtikrinti atsparumą gedimams ir pagerinti našumą, turite įjungti masyvo MPIO palaikymą. Norėdami tai padaryti, prie /etc/multipath.conf failo turite pridėti eilučių ir iš naujo paleisti kelių kelių tarnybą

Paslėptas tekstasprietaisai {
įrenginys {
pardavėjas "AStor"
path_grouping_policy "group_by_prio"
path_selector "eilės ilgis 0"
path_checker "tur"
funkcijos "0"
hardware_handler "0"
prieš "konst"
nedelsiant
fast_io_fail_tmo 5
dev_loss_tmo 60
vartotojui draugiški_vardai taip
detect_prio taip
rr_min_io_rq 1
no_path_retry 0
}
}

Tada, kad ASM veiktų su MPIO per ASMLib, reikia pakeisti /etc/sysconfig/oracleasm failą ir paleisti /etc/init.d/oracleasm scandisks

Paslėptas tekstas

# ORACLEASM_SCANORDER: modelių suderinimas pagal disko nuskaitymo užsakymą
ORACLEASM_SCANORDER="dm"

# ORACLEASM_SCANEXCLUDE: suderinami šablonai, kad diskai nebūtų nuskaitomi
ORACLEASM_SCANEXCLUDE="sd"

Atkreipti dėmesį

Jei nenorite naudoti ASMLib, galite naudoti UDEV taisykles, kurios yra ASMLib pagrindas.

Pradedant nuo 12.1.0.2 „Oracle Database“ versijos, šią parinktį galima įdiegti kaip ASMFD programinės įrangos dalį.

Būtina užtikrinti, kad Oracle ASM sukurti diskai būtų suderinti su bloko dydžiu, su kuriuo masyvas fiziškai veikia (4K). Priešingu atveju gali kilti veikimo problemų. Todėl būtina sukurti tomus su atitinkamais parametrais:

atskirtas /dev/mapper/device-name mklabel gpt mkpart pirminis 2048s 100 % suderinti-tikrinti optimalų 1

Duomenų bazių paskirstymas sukurtuose tomuose mūsų bandymo konfigūracijai

Saugyklos tūrio pavadinimas
Tūrio dydis
Tūrio LUN kartografavimas
ASM garsumo įrenginio informacija
Paskirstymo vieneto dydis

Duomenys01
200GB
Susiekite visus saugojimo tomus su saugojimo sistemos visais duomenų prievadais
Atleidimas: normalus
Vardas: DGDATA
Paskirtis: duomenų failai

4MB

Duomenys02
200GB

Duomenys03
200GB

Duomenys04
200GB

Duomenys05
200GB

Duomenys06
200GB

Duomenys07
200GB

Duomenys08
200GB

Duomenys09
200GB

Duomenys10
200GB

„Grid01“
1GB
Atleidimas: normalus
Pavadinimas: DGGRID1
Paskirtis: Tinklelis: CRS ir balsavimas

4MB

„Grid02“
1GB

„Grid03“
1GB

„Grid04“
1GB
Atleidimas: normalus
Pavadinimas: DGGRID2
Paskirtis: Tinklelis: CRS ir balsavimas

4MB

„Grid05“
1GB

„Grid06“
1GB

Pakartoti 01
100GB
Atleidimas: normalus
Vardas: DGREDO1
Tikslas: perdaryti 1 gijos žurnalą

4MB

Pakartoti 02
100GB

Pakartoti 03
100GB

Pakartoti 04
100GB

Pakartoti 05
100GB

Pakartoti 06
100GB
Atleidimas: normalus
Vardas: DGREDO2
Tikslas: perdaryti 2 gijos žurnalą

4MB

Pakartoti 07
100GB

Pakartoti 08
100GB

Pakartoti 09
100GB

Pakartoti 10
100GB

Duomenų bazės nustatymai

  • Bloko dydis = 8K
  • Keičiama vieta = 16 GB
  • Išjungti AMM (automatinį atminties valdymą)
  • Išjungti skaidrius didžiulius puslapius

Kiti nustatymai

# vi /etc/sysctl.conf
✓ fs.aio-max-nr = 1048576
✓ fs.file-max = 6815744
✓ kernel.shmmax 103079215104
✓ kernel.shmal 31457280
✓ kernel.shmmn 4096
✓ kernel.sem = 250 32000 100 128
✓ net.ipv4.ip_local_port_range = 9000 65500
✓ net.core.rmem_default = 262144
✓ net.core.rmem_max = 4194304
✓ net.core.wmem_default = 262144
✓ net.core.wmem_max = 1048586
✓vm.swappiness=10
✓ vm.min_free_kbytes=524288 # nenustatykite, jei naudojate Linux x86
✓ vm.vfs_cache_pressure=200
✓ vm.nr_hugepages = 57000

# vi /etc/security/limits.conf
✓ Grid soft nproc 2047
✓ Grid hard nproc 16384
✓ minkštas tinklelis 1024
✓ tinklelio kietasis nofile 65536
✓ minkštas tinklelis 10240
✓ tinklelio kietas kaminas 32768
✓ Oracle soft nproc 2047
✓ Oracle hard nproc 16384
✓ Oracle soft nofile 1024
✓ Oracle hard nofile 65536
✓ Oracle soft Stack 10240
✓ Oracle hard stack 32768
✓ minkštas memlock 120795954
✓ kietasis atminties blokas 120795954

sqlplus "/as sysdba"
keisti sistemos rinkinio procesus=2000 apimtis=spfile;
pakeisti sistemos rinkinį open_cursors=2000 apimtis=spfile;
pakeisti sistemos rinkinį session_cached_cursors=300 apimtis=spfile;
pakeisti sistemos rinkinį db_files=8192 apimtis=spfile;

Nesėkmės testas

Demonstravimo tikslais „HammerDB“ buvo naudojamas OLTP apkrovai emuliuoti. HammerDB konfigūracija:

Sandėlių skaičius
256

Bendras operacijų skaičius vienam vartotojui
1000000000000

Virtualūs vartotojai
256

Rezultatas buvo 2.1 mln. TPM, o tai toli nuo masyvo našumo ribos H710, bet yra dabartinės serverių aparatinės įrangos konfigūracijos (pirmiausia dėl procesorių) ir jų skaičiaus „lubos“. Šio testo tikslas vis tiek yra parodyti viso sprendimo atsparumą gedimams, o ne pasiekti maksimalų našumą. Todėl mes tiesiog remsimės šia figūra.

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Patikrinkite vieno iš mazgų gedimą

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Pagrindiniai kompiuteriai prarado dalį kelių į saugyklą ir toliau dirbo per likusius su antruoju mazgu. Našumas kelioms sekundėms sumažėjo dėl takų atstatymo, o tada grįžo į normalią būseną. Paslauga nenutrūko.

Spintelės gedimo testas su visa įranga

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Sukurti gedimams atsparų sprendimą, pagrįstą Oracle RAC ir AccelStor Shared-Nothing architektūra

Šiuo atveju našumas taip pat sumažėjo kelioms sekundėms dėl kelių pertvarkymo, o tada grįžo į pusę pradinės vertės. Rezultatas buvo perpus mažesnis nei pradinis, nes vienas programų serveris buvo pašalintas iš darbo. Paslauga taip pat nenutrūko.

Jei reikia įdiegti gedimams atsparų Cross-Rack atkūrimo sprendimą Oracle už priimtiną kainą ir mažai diegiant / administruojant, tada Oracle RAC ir architektūra dirba kartu. „AccelStor“ bendrinamas – nieko bus vienas geriausių variantų. Vietoj „Oracle RAC“ gali būti bet kokia kita programinė įranga, teikianti grupavimą, pavyzdžiui, tos pačios DBVS ar virtualizacijos sistemos. Sprendimo konstravimo principas išliks toks pat. Ir apatinė eilutė yra nulis RTO ir RPO.

Šaltinis: www.habr.com

Добавить комментарий