Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

Multe aplicații Enterprise și sisteme de virtualizare au propriile mecanisme pentru construirea soluțiilor de reziliență. În special, Oracle RAC (Oracle Real Application Cluster) reprezintă un cluster format din două sau mai multe servere de baze de date Oracle care lucrează împreună pentru a asigura echilibrarea încărcăturii și reziliența la nivel de server/aplicație. Pentru a funcționa în acest mod, este necesar un stocaj comun, din care de obicei este responsabilă o SAI.

Așa cum am discutat deja într-unul din articolele noastre, însă, SAI-ul în sine, în ciuda existenței componentelor duplicate (inclusiv a controlerelor), are totuși puncte de eșec – în principal, sub forma unui set unic de date. Prin urmare, pentru a construi o soluție Oracle cu cerințe ridicate de fiabilitate, schema „N servere – o SAI” trebuie să fie complicată.

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

Mai întâi, desigur, trebuie să ne dăm seama de la ce riscuri încercăm să ne protejăm. În cadrul acestui articol, nu vom aborda protecția împotriva amenințărilor de tip „a căzut un meteorit”. Așadar, construirea unei soluții de recuperare în caz de dezastru dispersate teritorial va rămâne subiectul unuia dintre articolele următoare. Aici vom analiza așa-numita soluție de recuperare în caz de dezastru Cross-Rack, când protecția se construiește la nivel de rack-uri de servere. Rack-urile pot fi situate fie în aceeași cameră, fie în diferite, dar de obicei în cadrul unei singure clădiri.

Aceste rack-uri trebuie să conțină întreaga echipare și software necesare care să permită funcționarea bazelor de date Oracle, indiferent de starea „vecinului”. Cu alte cuvinte, utilizând soluția de recuperare în caz de dezastru Cross-Rack, exclus riscurile în cazul unei defecțiuni:

  • Serverele aplicației Oracle
  • Sistemele de stocare
  • Sistemele de comutare
  • Pierderea totală a întregii echipamente din rack:
    • Defecțiune de alimentare
    • Defecțiune a sistemului de răcire
    • Factori externi (om, natură etc.)

Duplicarea serverelor Oracle implică însăși esența funcționării Oracle RAC și se realizează prin intermediul aplicației. Duplicarea echipamentelor de comutare nu reprezintă o problemă. Însă cu duplicarea sistemului de stocare nu este atât de simplu.

Cea mai simplă variantă este replicarea datelor de la sistemul de stocare principal la cel de rezervă. Aceasta poate fi sincronă sau asincronă, în funcție de Capacitățile sistemului de stocare. În cazul replicării asincrone, imediat apare întrebarea privind asigurarea consistenței datelor cu Oracle. Chiar și în cazul unei integrații software cu aplicația, în orice situație, în cazul unei avarii la sistemul de stocare principal, va fi necesară intervenția administratorilor în mod manual pentru a comuta clusterul pe stocarea de rezervă.

O variantă mai complexă este utilizarea „virtualizatorilor” software și/sau hardware pentru sistemul de stocare, care elimină problemele de consistență și intervenția manuală. Totuși, complexitatea desfășurării și a administrării ulterioare, precum și costul destul de ridicat al acestor soluții îi descurajează pe mulți.

Exact pentru astfel de scenarii, cum ar fi recuperarea în caz de dezastru Cross-Rack, soluția All Flash AccelStor NeoSapphire™ se potrivește perfect. H710 folosind arhitectura Shared-Nothing. Acest model reprezintă un sistem de stocare cu două noduri, utilizând propria tehnologie FlexiRemap® pentru a lucra cu unități flash. Datorită FlexiRemap® NeoSapphire™ H710 este capabil să ofere performanțe de până la 600K IOPS@4K scriere aleatorie și 1M+ IOPS@4K citire aleatorie, ceea ce este ineficient cu sistemele RAID clasice.

Dar caracteristica principală a NeoSapphire™ H710 este execuția a două noduri sub formă de carcase separate, fiecare având propriul set de date. Sincronizarea nodurilor se efectuează printr-o interfață externă InfiniBand. Datorită acestei arhitecturi, nodurile pot fi amplasate în locații diferite la o distanță de până la 100m, asigurând astfel soluția de recuperare în caz de dezastru Cross-Rack. Ambele noduri funcționează complet în mod sincron. Din partea gazdelor, H710 arată ca un sistem de stocare cu două controlere obișnuite. Prin urmare, nu este necesar să se efectueze opțiuni software sau hardware suplimentare și setări deosebit de complicate.

Dacă comparăm toate soluțiile de mai sus pentru recuperarea în caz de dezastru Cross-Rack, varianta de la AccelStor se remarcă semnificativ față de celelalte:

AccelStor NeoSapphire™ Arhitectura Shared Nothing
Virtualizator software sau hardware pentru sistemul de stocare
Soluție bazată pe replicare

Disponibilitate

Dezvoltarea serverului
Fără downtime
Fără downtime
Fără downtime

Dezvoltarea comutatorului
Fără downtime
Fără downtime
Fără downtime

Dezvoltarea sistemului de stocare
Fără downtime
Fără downtime
Downtime

Dezvoltarea întregului rack
Fără downtime
Fără downtime
Downtime

Cost și complexitate

Costul soluției
Scăzut*
Ridicată
Ridicată

Complexitate de desfășurare
Mic
Ridicată
Ridicată

*AccelStor NeoSapphire™ este totuși un sistem de stocare All Flash, care prin definiție nu costă „3 bani”, cu atât mai mult având un rezervă de capacitate dublă. Totuși, comparând costul final al soluției bazate pe acesta cu cele similare de la alți furnizori, prețul poate fi considerat scăzut.

Topologia de conectare a serverelor de aplicații și nodurilor All Flash va arăta astfel:

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

Atunci când planificați topologia, este de asemenea extrem de recomandat să realizați duplicarea comutatoarelor de gestionare și interconexiune a serverelor.

Aici și mai departe se va discuta despre conectarea prin Fibre Channel. În cazul utilizării iSCSI, va fi tot același lucru, cu ajustările necesare pentru tipurile de comutatoare utilizate și câteva setări diferite ale sistemului de stocare.

Lucrări pregătitoare la sistemul de stocare

Echipamentele și software-ul utilizat

Specificații ale serverelor și comutatoarelor

Componente
Descriere

Servere Oracle Database 11g
Două

Sistem de operare al serverului
Oracle Linux

Versiunea bazei de date Oracle
11g (RAC)

Procesoare per server
Două CPU Intel® Xeon® E5-2667 v2 @ 3.30GHz cu 16 nuclee

Memorie fizică pe server
128GB

Rețea FC
FC de 16Gb/s cu multipath

FC HBA
Emulex Lpe-16002B

Porturi publice dedicate 1GbE pentru managementul clusterului
Adaptor ethernet Intel RJ45

Comutator FC de 16Gb/s
Brocade 6505

Porturi private dedicate 10GbE pentru sincronizarea datelor
Intel X520

Specificația sistemului de stocare AccelStor NeoSapphire™ All Flash

Componente
Descriere

Sistem de stocare
Model de disponibilitate înaltă NeoSapphire™: H710

Versiunea imaginii
4.0.1

Numărul total de unități
48

Dimensiunea unității
1.92TB

Tipul unității
SSD

Porturi de țintă FC
16x porturi de 16Gb (8 per nod)

Porturi de management
Cablul ethernet 1GbE conectând la gazde printr-un comutator ethernet

Port de monitorizare
Cablul ethernet 1GbE conectând între două noduri de stocare

Port de sincronizare a datelor
Cablul InfiniBand de 56Gb/s

Înainte de a începe utilizarea sistemului de stocare, acesta trebuie inițializat. Implicit, adresa de management a ambelor noduri este aceeași (192.168.1.1). Trebuie să vă conectați alternativ la ele și să stabiliți adrese de management noi (deja diferite) și să configurați sincronizarea timpului, după care porturile de management pot fi conectate într-o rețea unificată. Apoi, se realizează gruparea nodurilor într-o pereche HA prin alocarea subnet-urilor pentru conexiunile Interlink.

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

După finalizarea inițializării, sistemul de stocare poate fi gestionat de la oricare nod.

Apoi creăm volumele necesare și le publicăm pentru serverele de aplicații.

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

Este extrem de recomandat să creați mai multe volume pentru Oracle ASM, deoarece aceasta va crește numărul de ținte pentru servere, ceea ce, în cele din urmă, va îmbunătăți performanța generală (mai multe despre cozi într-o altă parte). pe care l-ați citit).

Configurația de testare

Numele volumului de stocare
Dimensiunea volumului

Data01
200GB

Data02
200GB

Data03
200GB

Data04
200GB

Data05
200GB

Data06
200GB

Data07
200GB

Data08
200GB

Data09
200GB

Data10
200GB

Grid01
1GB

Grid02
1GB

Grid03
1GB

Grid04
1GB

Grid05
1GB

Grid06
1GB

Redo01
100GB

Redo02
100GB

Redo03
100GB

Redo04
100GB

Redo05
100GB

Redo06
100GB

Redo07
100GB

Redo08
100GB

Redo09
100GB

Redo10
100GB

Unele explicații referitoare la modurile de operare ale array-ului și la procesele care au loc în situații neprevăzute

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

Fiecare nod are un parametru «număr versiune» în setul de date. După inițializarea inițială, acesta este același și egal cu 1. Dacă din diverse motive numărul versiunii este diferit, datele sunt întotdeauna sincronizate de la versiunea superioară la cea inferioară, după care numărul versiunii inferioare se aliniază, adică acest lucru înseamnă că copiile sunt identice. Motivele pentru care versiunile pot fi diferite sunt:

  • Reboot-ul planificat al uneia dintre noduri
  • O defecțiune pe unul dintre noduri din cauza unei opriri bruște (alimentare, supraîncălzire etc.).
  • Dezactivarea conexiunii InfiniBand fără posibilitatea de sincronizare
  • O defecțiune pe unul dintre noduri din cauza deteriorării datelor. Aici va fi necesară crearea unui nou grup HA și o sincronizare completă a setului de date.

În oricare caz, nodul care rămâne online își crește numărul versiunii cu unu, astfel încât după restaurarea conexiunii cu perechea să poată sincroniza setul său de date.

Dacă are loc o deconectare pe linia Ethernet, Heartbeat comută temporar pe InfiniBand și revine înapoi în termen de 10s la restabilirea conexiunii.

Configurarea gazdelor

Pentru a asigura redundanța și a crește performanța, este necesar să activați suportul MPIO pentru array. Pentru aceasta, trebuie adăugați în fișierul /etc/multipath.conf liniile, după care se va reporni serviciul multipath.

Text ascunsdevices {
device {
vendor «AStor»
path_grouping_policy «group_by_prio»
path_selector «queue-length 0»
path_checker «tur»
features «0»
hardware_handler «0»
prio «const»
failback immediate
fast_io_fail_tmo 5
dev_loss_tmo 60
user_friendly_names yes
detect_prio yes
rr_min_io_rq 1
no_path_retry 0
}
}

În continuare, pentru ca ASM să funcționeze cu MPIO prin ASMLib, este necesară modificarea fișierului /etc/sysconfig/oracleasm și apoi executarea /etc/init.d/oracleasm scandisks.

Text ascuns

# ORACLEASM_SCANORDER: Matching patterns to order disk scanning
ORACLEASM_SCANORDER=«dm»

# ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan
ORACLEASM_SCANEXCLUDE=«sd»

Notă

Dacă nu doriți să folosiți ASMLib, puteți utiliza regulile UDEV, care sunt baza pentru ASMLib.

Începând cu versiunea 12.1.0.2 Oracle Database opțiunea este disponibilă pentru instalare ca parte a software-ului ASMFD.

Este necesar să se asigure că discurile create pentru Oracle ASM sunt aliniate în raport cu dimensiunea blocului cu care funcționează fizic array-ul (4K). Altfel, pot apărea probleme cu performanța. Prin urmare, este necesar să se creeze volume cu parametrii corespunzători:

parted /dev/mapper/device-name mklabel gpt mkpart primary 2048s 100% align-check optimal 1

Distribuirea bazelor de date pe volumele create pentru configurația noastră de test

Numele volumului de stocare
Dimensiunea volumului
Maparea LUN-urilor volumelor
Detalii despre dispozitivul volumului ASM
Dimensiunea unității de alocare

Data01
200GB
Mapează toate volumele de stocare la toate porturile de date ale sistemului de stocare
Redundanță: Normal
Nume: DGDATA
Scop: Fișiere de date

4MB

Data02
200GB

Data03
200GB

Data04
200GB

Data05
200GB

Data06
200GB

Data07
200GB

Data08
200GB

Data09
200GB

Data10
200GB

Grid01
1GB
Redundanță: Normal
Nume: DGGRID1
Scop: Grid: CRS și votare

4MB

Grid02
1GB

Grid03
1GB

Grid04
1GB
Redundanță: Normal
Nume: DGGRID2
Scop: Grid: CRS și votare

4MB

Grid05
1GB

Grid06
1GB

Redo01
100GB
Redundanță: Normal
Nume: DGREDO1
Scop: Jurnal redoing fir 1

4MB

Redo02
100GB

Redo03
100GB

Redo04
100GB

Redo05
100GB

Redo06
100GB
Redundanță: Normal
Nume: DGREDO2
Scop: Jurnal redoing fir 2

4MB

Redo07
100GB

Redo08
100GB

Redo09
100GB

Redo10
100GB

Setări bază de date

  • Dimensiunea blocului = 8K
  • Spațiu swap = 16GB
  • Dezactivează AMM (Gestionarea automată a memoriei)
  • Dezactivează paginile uriașe transparente

Alte setări

# vi /etc/sysctl.conf
✓ fs.aio-max-nr = 1048576
✓ fs.file-max = 6815744
✓ kernel.shmmax 103079215104
✓ kernel.shmall 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 # nu setaţi acest lucru dacă utilizați Linux x86
✓ vm.vfs_cache_pressure=200
✓ vm.nr_hugepages = 57000

# vi /etc/security/limits.conf
✓ grid soft nproc 2047
✓ grid hard nproc 16384
✓ grid soft nofile 1024
✓ grid hard nofile 65536
✓ grid soft stack 10240
✓ grid hard stack 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
✓ soft memlock 120795954
✓ hard memlock 120795954

sqlplus "/as sysdba"
alter system set processes=2000 scope=spfile;
alter system set open_cursors=2000 scope=spfile;
alter system set session_cached_cursors=300 scope=spfile;
alter system set db_files=8192 scope=spfile;

Test de reziliență

Pentru demonstrare, a fost folosit HammerDB pentru a emula o încărcare OLTP. Configurarea HammerDB:

Numărul de depozite
256

Totalul tranzacțiilor pe utilizator
1000000000000

Utilizatori virtuali
256

În rezultatul obținut, s-a înregistrat un indicator de 2.1M TPM, care este departe de limita de performanță a aranjamentului H710, dar reprezintă „tavanul” pentru configurația hardware actuală a serverelor (în principal din cauza procesoarelor) și a numărului lor. Scopul acestui test este totuși demonstrarea rezilienței soluției în ansamblu, și nu atingerea maximelor de performanță. Prin urmare, ne vom baza doar pe această cifră.

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

Test de eșec al uneia dintre noduri

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

Hosturile au pierdut o parte din căile către stocare, continuând să funcționeze prin căile rămase cu al doilea nod. Performanța a scăzut timp de câteva secunde din cauza reconstrucției căilor, apoi a revenit la valorile normale. Nu a avut loc o întrerupere a serviciului.

Test de eșec al raftului cu tot echipamentul

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

Construirea unei soluții de reziliență bazată pe Oracle RAC și arhitectura AccelStor Shared-Nothing

În acest caz, performanța a scăzut de asemenea timp de câteva secunde din cauza reconstrucției căilor, apoi a revenit la jumătate din valoarea inițială. Rezultatul a fost redus la jumătate din valoarea inițială datorită excluderii unui server de aplicație. Nici o întrerupere a serviciului nu a avut loc.

Dacă aveți nevoie de o soluție de recuperare în caz de dezastru Cross-Rack pentru Oracle, care să fie accesibilă ca preț și cu eforturi reduse de implementare/administrație, atunci colaborarea dintre Oracle RAC și arhitectură AccelStor Shared-Nothing va fi una dintre cele mai bune opțiuni. În loc de Oracle RAC, poate fi orice alt software care suportă clusterizarea, aceleași DBMS-uri sau sisteme de virtualizare, de exemplu. Principiul de construcție al soluției va rămâne același. Iar valoarea finală va fi zero pentru RTO și RPO.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster