Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Eine beträchtliche Anzahl von Unternehmensanwendungen und Virtualisierungssystemen verfügen über eigene Mechanismen zum Aufbau fehlertoleranter Lösungen. Konkret handelt es sich bei Oracle RAC (Oracle Real Application Cluster) um einen Cluster aus zwei oder mehr Oracle-Datenbankservern, die zusammenarbeiten, um die Last auszugleichen und Fehlertoleranz auf Server-/Anwendungsebene bereitzustellen. Um in diesem Modus arbeiten zu können, benötigen Sie einen gemeinsamen Speicher, bei dem es sich in der Regel um ein Speichersystem handelt.

Wie wir bereits in einem unserer besprochen haben ArtikelDas Speichersystem selbst weist trotz des Vorhandenseins doppelter Komponenten (einschließlich Controller) immer noch Fehlerquellen auf – hauptsächlich in Form eines einzelnen Datensatzes. Um eine Oracle-Lösung mit erhöhten Zuverlässigkeitsanforderungen aufzubauen, muss daher das Schema „N Server – ein Speichersystem“ kompliziert sein.

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Zunächst müssen wir natürlich entscheiden, gegen welche Risiken wir uns versichern wollen. In diesem Artikel gehen wir nicht auf den Schutz vor Bedrohungen wie „Ein Meteorit ist eingetroffen“ ein. Daher wird der Aufbau einer geografisch verteilten Disaster-Recovery-Lösung weiterhin ein Thema für einen der folgenden Artikel sein. Hier betrachten wir die sogenannte Cross-Rack-Disaster-Recovery-Lösung, bei der der Schutz auf der Ebene der Serverschränke erfolgt. Die Schränke selbst können im selben Raum oder in verschiedenen Räumen, meist jedoch im selben Gebäude, aufgestellt werden.

Diese Schränke müssen die gesamte erforderliche Ausrüstung und Software enthalten, die den Betrieb von Oracle-Datenbanken unabhängig vom Status des „Nachbarn“ ermöglicht. Mit anderen Worten: Mit der Disaster-Recovery-Lösung von Cross-Rack eliminieren wir das Ausfallrisiko:

  • Oracle-Anwendungsserver
  • Speichersysteme
  • Schaltsysteme
  • Komplettausfall aller Geräte im Schrank:
    • Machtverweigerung
    • Ausfall des Kühlsystems
    • Äußere Faktoren (Mensch, Natur usw.)

Die Duplizierung von Oracle-Servern impliziert das eigentliche Funktionsprinzip von Oracle RAC und wird über eine Anwendung implementiert. Auch die Verdopplung von Vermittlungsanlagen ist kein Problem. Doch bei der Duplizierung des Speichersystems ist nicht alles so einfach.

Die einfachste Option ist die Datenreplikation vom Hauptspeichersystem zum Backup-System. Synchron oder asynchron, abhängig von den Fähigkeiten des Speichersystems. Bei der asynchronen Replikation stellt sich sofort die Frage nach der Sicherstellung der Datenkonsistenz in Bezug auf Oracle. Aber selbst wenn eine Software-Integration mit der Anwendung besteht, ist bei einem Ausfall des Hauptspeichersystems in jedem Fall ein manueller Eingriff durch Administratoren erforderlich, um den Cluster auf Backup-Speicher umzustellen.

Eine komplexere Option sind Software- und/oder Hardware-Speichervirtualisierungen, die Konsistenzprobleme und manuelle Eingriffe beseitigen. Doch die Komplexität der Bereitstellung und anschließenden Verwaltung sowie die sehr unangemessenen Kosten solcher Lösungen schrecken viele ab.

Die AccelStor NeoSapphire™ All-Flash-Array-Lösung eignet sich perfekt für Szenarien wie die Rack-übergreifende Notfallwiederherstellung H710 unter Verwendung der Shared-Nothing-Architektur. Bei diesem Modell handelt es sich um ein Speichersystem mit zwei Knoten, das die proprietäre FlexiRemap®-Technologie verwendet, um mit Flash-Laufwerken zu arbeiten. Dank an FlexiRemap® NeoSapphire™ H710 ist in der Lage, eine Leistung von bis zu 600 IOPS bei 4K zufälligem Schreiben und 1M+ IOPS bei 4K zufälligem Lesen zu liefern, was bei Verwendung klassischer RAID-basierter Speichersysteme unerreichbar ist.

Das Hauptmerkmal von NeoSapphire™ H710 ist jedoch die Ausführung von zwei Knoten in Form separater Gehäuse, von denen jeder über eine eigene Kopie der Daten verfügt. Die Synchronisierung der Knoten erfolgt über die externe InfiniBand-Schnittstelle. Dank dieser Architektur ist es möglich, Knoten auf verschiedene Standorte in einer Entfernung von bis zu 100 m zu verteilen und so eine Rack-übergreifende Disaster-Recovery-Lösung bereitzustellen. Beide Knoten arbeiten vollständig synchron. Von der Host-Seite aus sieht der H710 wie ein gewöhnliches Dual-Controller-Speichersystem aus. Es sind daher keine zusätzlichen Software- oder Hardwareoptionen oder besonders aufwändige Einstellungen erforderlich.

Wenn wir alle oben beschriebenen Cross-Rack-Disaster-Recovery-Lösungen vergleichen, dann sticht die Option von AccelStor deutlich hervor:

AccelStor NeoSapphire™ Shared Nothing-Architektur
Software- oder Hardware-„Virtualisierer“-Speichersystem
Replikationsbasierte Lösung

Verfügbarkeit

Serverausfall
Keine Ausfallzeiten
Keine Ausfallzeiten
Keine Ausfallzeiten

Schalterfehler
Keine Ausfallzeiten
Keine Ausfallzeiten
Keine Ausfallzeiten

Ausfall des Speichersystems
Keine Ausfallzeiten
Keine Ausfallzeiten
Ausfallzeit

Kompletter Schrankausfall
Keine Ausfallzeiten
Keine Ausfallzeiten
Ausfallzeit

Kosten und Komplexität

Lösungskosten
Niedrig*
Hoch
Hoch

Komplexität der Bereitstellung
niedrig
Hoch
Hoch

*AccelStor NeoSapphire™ ist immer noch ein All-Flash-Array, das per Definition keine „3 Kopeken“ kostet, zumal es über eine doppelte Kapazitätsreserve verfügt. Wenn man jedoch die Endkosten einer darauf basierenden Lösung mit ähnlichen Lösungen anderer Anbieter vergleicht, können die Kosten als niedrig angesehen werden.

Die Topologie zum Verbinden von Anwendungsservern und All-Flash-Array-Knoten sieht folgendermaßen aus:

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Bei der Planung der Topologie wird außerdem dringend empfohlen, Management-Switches zu duplizieren und Server miteinander zu verbinden.

Hier und weiter werden wir über die Verbindung über Fibre Channel sprechen. Wenn Sie iSCSI verwenden, ist alles gleich, angepasst an die verwendeten Switch-Typen und leicht unterschiedliche Array-Einstellungen.

Vorbereitende Arbeiten am Array

Verwendete Ausrüstung und Software

Server- und Switch-Spezifikationen

Komponenten
Beschreibung

Oracle Database 11g-Server
Zwei

Server-Betriebssystem
Oracle Linux

Oracle-Datenbankversion
11g (RAC)

Prozessoren pro Server
Zwei 16-Kerne Intel® Xeon® CPU E5-2667 v2 bei 3.30 GHz

Physischer Speicher pro Server
128GB

FC-Netzwerk
16 Gbit/s FC mit Multipathing

FC HBA
Emulex Lpe-16002B

Dedizierte öffentliche 1GbE-Ports für die Clusterverwaltung
Intel-Ethernet-Adapter RJ45

16 Gbit/s FC-Switch
Brokat 6505

Dedizierte private 10-GbE-Ports für die Datensynchronisierung
Intel X520

AccelStor NeoSapphire™ All-Flash-Array-Spezifikation

Komponenten
Beschreibung

Speichersystem
NeoSapphire™ Hochverfügbarkeitsmodell: H710

Bildversion
4.0.1

Gesamtzahl der Laufwerke
48

Laufwerksgröße
1.92TB

Laufwerkstyp
SSD

FC-Zielports
16x 16-Gbit-Ports (8 pro Knoten)

Management-Ports
Das 1-GbE-Ethernet-Kabel verbindet sich über einen Ethernet-Switch mit Hosts

Heartbeat-Port
Das 1GbE-Ethernet-Kabel verbindet zwei Speicherknoten

Datensynchronisierungsport
56 Gbit/s InfiniBand-Kabel

Bevor Sie ein Array verwenden können, müssen Sie es initialisieren. Standardmäßig ist die Steueradresse beider Knoten gleich (192.168.1.1). Sie müssen nacheinander eine Verbindung zu ihnen herstellen, neue (bereits unterschiedliche) Verwaltungsadressen festlegen und die Zeitsynchronisierung einrichten. Anschließend können die Verwaltungsports mit einem einzigen Netzwerk verbunden werden. Anschließend werden die Knoten zu einem HA-Paar zusammengefasst, indem Subnetze für Interlink-Verbindungen zugewiesen werden.

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Nach Abschluss der Initialisierung können Sie das Array von jedem Knoten aus verwalten.

Als nächstes erstellen wir die erforderlichen Volumes und veröffentlichen sie auf Anwendungsservern.

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Es wird dringend empfohlen, mehrere Volumes für Oracle ASM zu erstellen, da dadurch die Anzahl der Ziele für die Server erhöht wird, was letztendlich die Gesamtleistung verbessert (mehr zu Warteschlangen in einem anderen Artikel). Artikel).

Konfiguration testen

Name des Speicher-Volumes
Volumengröße

Daten01
200GB

Daten02
200GB

Daten03
200GB

Daten04
200GB

Daten05
200GB

Daten06
200GB

Daten07
200GB

Daten08
200GB

Daten09
200GB

Daten10
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

Einige Erläuterungen zu den Betriebsarten des Arrays und den in Notfallsituationen ablaufenden Abläufen

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Der Datensatz jedes Knotens verfügt über einen Parameter „Versionsnummer“. Nach der Erstinitialisierung ist sie gleich und gleich 1. Wenn aus irgendeinem Grund die Versionsnummer unterschiedlich ist, werden die Daten immer von der älteren Version mit der jüngeren synchronisiert, wonach die Nummer der jüngeren Version angeglichen wird, d. h. das bedeutet, dass die Kopien identisch sind. Gründe, warum Versionen unterschiedlich sein können:

  • Geplanter Neustart eines der Knoten
  • Ein Unfall an einem der Knoten aufgrund einer plötzlichen Abschaltung (Stromversorgung, Überhitzung usw.).
  • InfiniBand-Verbindung unterbrochen und Synchronisierung nicht möglich
  • Ein Absturz auf einem der Knoten aufgrund von Datenbeschädigung. Hier müssen Sie eine neue HA-Gruppe erstellen und die Synchronisierung des Datensatzes abschließen.

In jedem Fall erhöht der Knoten, der online bleibt, seine Versionsnummer um eins, um seinen Datensatz zu synchronisieren, nachdem die Verbindung mit dem Paar wiederhergestellt ist.

Wenn die Verbindung über die Ethernet-Verbindung unterbrochen wird, wechselt Heartbeat vorübergehend zu InfiniBand und kehrt nach der Wiederherstellung innerhalb von 10 Sekunden zurück.

Hosts einrichten

Um Fehlertoleranz sicherzustellen und die Leistung zu verbessern, müssen Sie die MPIO-Unterstützung für das Array aktivieren. Dazu müssen Sie Zeilen zur Datei /etc/multipath.conf hinzufügen und dann den Multipath-Dienst neu starten

Versteckter TextGeräte {
Gerät {
Anbieter „AStor“
path_grouping_policy „group_by_prio“
path_selector „Warteschlangenlänge 0“
path_checker „tur“
Merkmale „0“
hardware_handler „0“
Priorität „const“
sofortiges Failback
fast_io_fail_tmo 5
dev_loss_tmo 60
user_freundliche_namen ja
discover_prio ja
rr_min_io_rq 1
no_path_retry 0
}
}

Damit ASM mit MPIO über ASMLib funktioniert, müssen Sie als Nächstes die Datei /etc/sysconfig/oracleasm ändern und dann /etc/init.d/oracleasm scandisks ausführen

Versteckter Text

# ORACLEASM_SCANORDER: Übereinstimmende Muster zur Reihenfolge des Festplattenscans
ORACLEASM_SCANORDER="dm"

# ORACLEASM_SCANEXCLUDE: Übereinstimmende Muster, um Festplatten vom Scan auszuschließen
ORACLEASM_SCANEXCLUDE="sd"

Beachten

Wenn Sie ASMLib nicht verwenden möchten, können Sie die UDEV-Regeln verwenden, die die Grundlage für ASMLib bilden.

Ab Version 12.1.0.2 der Oracle-Datenbank steht die Option zur Installation als Teil der ASMFD-Software zur Verfügung.

Es muss unbedingt sichergestellt werden, dass die für Oracle ASM erstellten Festplatten auf die Blockgröße abgestimmt sind, mit der das Array physisch arbeitet (4 KB). Andernfalls kann es zu Leistungsproblemen kommen. Daher ist es notwendig, Volumes mit den entsprechenden Parametern zu erstellen:

parted /dev/mapper/device-name mklabel gpt mkpart Primary 2048s 100 % Align-Check optimal 1

Verteilung der Datenbanken auf erstellte Volumes für unsere Testkonfiguration

Name des Speicher-Volumes
Volumengröße
Zuordnung von Volume-LUNs
Details zum ASM-Volume-Gerät
Größe der Zuordnungseinheiten

Daten01
200GB
Ordnen Sie alle Speichervolumes dem Speichersystem und allen Datenports zu
Redundanz: Normal
Name:DGDATA
Zweck: Datendateien

4MB

Daten02
200GB

Daten03
200GB

Daten04
200GB

Daten05
200GB

Daten06
200GB

Daten07
200GB

Daten08
200GB

Daten09
200GB

Daten10
200GB

Grid01
1GB
Redundanz: Normal
Name: DGGRID1
Zweck: Raster: CRS und Abstimmung

4MB

Grid02
1GB

Grid03
1GB

Grid04
1GB
Redundanz: Normal
Name: DGGRID2
Zweck: Raster: CRS und Abstimmung

4MB

Grid05
1GB

Grid06
1GB

Redo01
100GB
Redundanz: Normal
Name: DGREDO1
Zweck: Redo-Protokoll von Thread 1

4MB

Redo02
100GB

Redo03
100GB

Redo04
100GB

Redo05
100GB

Redo06
100GB
Redundanz: Normal
Name: DGREDO2
Zweck: Redo-Protokoll von Thread 2

4MB

Redo07
100GB

Redo08
100GB

Redo09
100GB

Redo10
100GB

Datenbankeinstellungen

  • Blockgröße = 8K
  • Swap-Speicherplatz = 16 GB
  • AMM (Automatische Speicherverwaltung) deaktivieren
  • Deaktivieren Sie transparente große Seiten

Andere Einstellungen

# 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 # Legen Sie dies nicht fest, wenn Sie Linux x86 verwenden
✓ vm.vfs_cache_pression=200
✓ vm.nr_hugepages = 57000

# vi /etc/security/limits.conf
✓ Grid Soft Nproc 2047
✓ Grid Hard Nproc 16384
✓ Grid Soft Nofile 1024
✓ Gitterhartnofile 65536
✓ Gitter-Softstack 10240
✓ Gitter-Hardstack 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
✓ Hart-Memlock 120795954

sqlplus „/as sysdba“
Alter System Set Processes=2000 Scope=SPFile;
alter system set open_cursors=2000scope=spfile;
alter system set session_cached_cursors=300scope=spfile;
alter system set db_files=8192scope=spfile;

Fehlertest

Zu Demonstrationszwecken wurde HammerDB verwendet, um eine OLTP-Last zu emulieren. HammerDB-Konfiguration:

Anzahl der Lager
256

Gesamttransaktionen pro Benutzer
1000000000000

Virtuelle Benutzer
256

Das Ergebnis war ein TPM von 2.1 Mio., was weit von der Leistungsgrenze des Arrays entfernt ist H710, stellt aber eine „Obergrenze“ für die aktuelle Hardwarekonfiguration von Servern (hauptsächlich aufgrund von Prozessoren) und deren Anzahl dar. Der Zweck dieses Tests besteht weiterhin darin, die Fehlertoleranz der Lösung als Ganzes zu demonstrieren und nicht darin, maximale Leistung zu erzielen. Daher bauen wir einfach auf dieser Zahl auf.

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Testen Sie, ob einer der Knoten ausgefallen ist

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Die Hosts verloren einen Teil der Pfade zum Speicher und arbeiteten die verbleibenden Pfade weiterhin mit dem zweiten Knoten ab. Aufgrund der Neuerstellung der Pfade sank die Leistung für einige Sekunden und normalisierte sich dann wieder. Es kam zu keiner Betriebsunterbrechung.

Schrankausfalltest mit allen Geräten

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Aufbau einer fehlertoleranten Lösung basierend auf der Oracle RAC- und AccelStor Shared-Nothing-Architektur

Auch in diesem Fall sank die Leistung aufgrund der Umstrukturierung der Pfade für einige Sekunden und fiel dann wieder auf die Hälfte des ursprünglichen Wertes zurück. Aufgrund des Ausschlusses eines Anwendungsservers vom Betrieb halbierte sich das Ergebnis gegenüber dem ursprünglichen Ergebnis. Es gab auch keine Unterbrechung im Dienst.

Wenn Bedarf besteht, eine fehlertolerante Cross-Rack-Disaster-Recovery-Lösung für Oracle zu angemessenen Kosten und mit geringem Bereitstellungs-/Verwaltungsaufwand zu implementieren, dann arbeiten Oracle RAC und Architektur zusammen AccelStor Shared-Nothing wird eine der besten Optionen sein. Anstelle von Oracle RAC kann es jede andere Software geben, die Clustering bereitstellt, beispielsweise dasselbe DBMS oder Virtualisierungssysteme. Das Prinzip der Konstruktion der Lösung bleibt gleich. Und das Endergebnis ist Null für RTO und RPO.

Source: habr.com

Kommentar hinzufügen