Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

Eine Vielzahl von Enterprise-Anwendungen und Virtualisierungssystemen verfügt über eigene Mechanismen zur Erstellung von ausfallsicheren Lösungen. Insbesondere ist Oracle RAC (Oracle Real Application Cluster) ein Cluster aus zwei oder mehr Oracle-Datenbankservern, die zusammenarbeiten, um die Last zu verteilen und die Ausfallsicherheit auf Server- und Anwendungsebene zu gewährleisten. Für den Betrieb in einem solchen Modus ist ein gemeinsamer Speicher erforderlich, der in der Regel von einem SAN bereitgestellt wird.

Wie wir bereits in einem unserer Artikel, selbst ein SAN, trotz redundanter Komponenten (einschließlich Controller), hat dennoch Ausfallpunkte – hauptsächlich in Form eines einzigen Datensatzes. Daher muss das Schema 'N Server – ein SAN' für die Erstellung einer Oracle-Lösung mit höheren Anforderungen an die Zuverlässigkeit komplexer gestaltet werden.

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

Zunächst müssen wir natürlich klären, vor welchen Risiken wir uns schützen möchten. In diesem Artikel werden wir nicht auf Bedrohungen wie "Meteoriteneinschläge" eingehen. Daher bleibt der Aufbau einer geografisch verteilten Lösung für die Notfallwiederherstellung ein Thema für einen der nächsten Artikel. Hier betrachten wir die sogenannte Cross-Rack-Notfallwiederherstellungslösung, bei der der Schutz auf Ebene der Serverschränke erfolgt. Diese Schränke können sich entweder in einem Raum oder verteilt in verschiedenen Räumen befinden, jedoch meist innerhalb eines Gebäudes.

Diese Schränke müssen die gesamte erforderliche Hardware und Software enthalten, die es ermöglicht, Oracle-Datenbanken unabhängig vom Zustand des „Nachbarn“ zu betreiben. Mit anderen Worten, durch die Nutzung einer Cross-Rack-Notfallwiederherstellungslösung minimieren wir die Risiken bei einem Ausfall:

  • Oracle-Anwendungsserver
  • Speichersysteme
  • Verbindungssysteme
  • Vollständiger Ausfall aller Geräte im Schrank:
    • Stromausfall
    • Ausfall der Kühlsysteme
    • Externe Faktoren (Menschen, Natur usw.)

Die Duplizierung von Oracle-Servern basiert auf dem Prinzip von Oracle RAC und wird über Anwendungen realisiert. Auch die Duplizierung von Switch-Mitteln stellt in der Regel kein Problem dar. Mit der Duplizierung des Speichersystems wird es jedoch komplizierter.

Die einfachste Lösung besteht darin, Daten von der primären Speicherlösung auf eine Backup-Lösung zu replizieren. Ob synchron oder asynchron, hängt von den Möglichkeiten der Speicherlösungen ab. Bei asynchroner Replikation stellt sich sofort die Frage der Sicherstellung der Datenkonsistenz im Verhältnis zu Oracle. Selbst wenn eine Softwareintegration mit der Anwendung vorhanden ist, ist im Falle eines Ausfalls der primären Speicherlösung dennoch manuelles Eingreifen der Administratoren erforderlich, um den Cluster auf den Backup-Speicher umzustellen.

Eine komplexere Lösung sind software- und/oder hardwarebasierte „Virtualisierer“ von Speicherlösungen, die Probleme mit der Konsistenz und manuellem Eingreifen vermeiden. Doch die Komplexität der Bereitstellung und anschließenden Verwaltung sowie die erhebliche Kosten solcher Lösungen schrecken viele ab.

Für Szenarien wie die Wiederherstellung nach einem Rack-Ausfall ist das All Flash Array AccelStor NeoSapphire™ die ideale Lösung. H710 Es nutzt eine Shared-Nothing-Architektur. Dieses Modell ist ein zweiknotenbasiertes Speichersystem, das die eigene FlexiRemap®-Technologie zur Arbeit mit Flash-Speichern verwendet. Dadurch FlexiRemap® kann das NeoSapphire™ H710 eine Leistung von bis zu 600K IOPS bei 4K zufälligen Schreibvorgängen und über 1 Million IOPS bei 4K zufälligen Lesevorgängen erreichen, was mit klassischen RAID-basierten Speicherlösungen nicht möglich ist.

Das Hauptmerkmal des NeoSapphire™ H710 ist jedoch, dass die beiden Knoten in separaten Gehäusen untergebracht sind, von denen jedes eine eigene Datenkopie hat. Die Synchronisation der Knoten erfolgt über die externe InfiniBand-Schnittstelle. Diese Architektur ermöglicht es, die Knoten über verschiedene Standorte bis zu 100 m entfernt zu verteilen und somit eine cross-rack disaster recovery Lösung bereitzustellen. Beide Knoten arbeiten vollständig synchron. Aus der Sicht der Hosts erscheint das H710 wie eine gewöhnliche dual-controller Speicherlösung. Daher sind keine zusätzlichen Software- und Hardware-Optionen oder besonders komplexen Einstellungen erforderlich.

Wenn man alle oben beschriebenen Cross-Rack-Disaster-Recovery-Lösungen vergleicht, sticht die Lösung von AccelStor deutlich hervor.

AccelStor NeoSapphire™ Shared Nothing Architektur
Software- oder Hardware-Virtualisierer für Speichersysteme
Lösung basierend auf Replikation

Verfügbarkeit

Serverausfall
Kein Ausfall
Kein Ausfall
Kein Ausfall

Switch-Ausfall
Kein Ausfall
Kein Ausfall
Kein Ausfall

Speichersystemausfall
Kein Ausfall
Kein Ausfall
Ausfallzeiten

Ausfall des gesamten Racks
Kein Ausfall
Kein Ausfall
Ausfallzeiten

Kosten und Komplexität

Kosten der Lösung
Niedrig*
Hoch
Hoch

Komplexität der Bereitstellung
Niedrig
Hoch
Hoch

*AccelStor NeoSapphire™ ist schließlich ein reines Flash-Array, das per Definition nicht „billig“ ist, zumal es über eine doppelte Kapazität verfügt. Vergleicht man jedoch die Gesamtkosten einer Lösung auf seiner Basis mit ähnlichen von anderen Anbietern, kann man die Kosten als niedrig betrachten.

Die Topologie zur Verbindung von Anwendungsservern und Knoten des All-Flash-Arrays sieht wie folgt aus:

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

Bei der Planung der Topologie wird dringend empfohlen, Redundanzen für die Verwaltungs- und Interconnect-Switches der Server zu erstellen.

Hier und im Folgenden wird von Anschlüssen über Fibre Channel die Rede sein. Bei der Verwendung von iSCSI bleibt alles gleich, mit Ausnahme der verwendeten Switch-Typen und etwas anderer Array-Konfigurationen.

Vorbereitungsarbeiten am Array

Verwendete Hardware und Software

Spezifikationen von Servern und Switches

Komponenten
Beschreibung

Oracle Database 11g-Server
Zwei

Betriebssystem des Servers
Oracle Linux

Version der Oracle-Datenbank
11g (RAC)

Prozessoren pro Server
Zwei 16-Kern Intel® Xeon® CPU E5-2667 v2 @ 3.30GHz

Physischer Speicher pro Server
128GB

FC-Netzwerk
16Gb/s FC mit Multipath

FC HBA
Emulex Lpe-16002B

Dedizierte öffentliche 1GbE-Ports für das Cluster-Management
Intel Ethernet-Adapter RJ45

16Gb/s FC-Switch
Brocade 6505

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

Spezifikation des AccelStor NeoSapphire™ All-Flash-Arrays

Komponenten
Beschreibung

Speichersystem
NeoSapphire™ Hochverfügbarkeitsmodell: H710

Bildversion
4.0.1

Gesamtanzahl der Laufwerke
48

Laufwerksgröße
1,92TB

Laufwerkstyp
SSD

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

Management-Ports
Das 1GbE-Ethernetkabel, das über einen Ethernet-Switch mit Hosts verbunden ist

Heartbeat-Port
Das 1GbE-Ethernetkabel, das zwischen zwei Speicherknoten verbunden ist

Datensynchronisationsport
56Gb/s InfiniBand-Kabel

Vor der Verwendung des Arrays muss es initialisiert werden. Standardmäßig haben die Management-Adressen beider Knoten die gleiche (192.168.1.1). Man muss sich nacheinander mit ihnen verbinden und neue (nun unterschiedliche) Management-Adressen festlegen sowie die Zeit synchronisieren, bevor die Management-Ports in ein gemeinsames Netzwerk angeschlossen werden können. Anschließend erfolgt die Zusammenführung der Knoten zu einem HA-Paar durch die Zuweisung von Subnetzen für die Interlink-Verbindungen.

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

Nach der Initialisierung kann das Array von jedem Knoten aus verwaltet werden.

Erstellen Sie dann die erforderlichen Volumes und veröffentlichen Sie diese für die Anwendungsserver.

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

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

Testkonfiguration

Name des Speicherprodukts
Größe des Volumes

Daten01
200GB

Daten02
200GB

Daten03
200GB

Daten04
200GB

Daten05
200GB

Daten06
200GB

Daten07
200GB

Daten08
200GB

Daten09
200GB

Daten10
200GB

Grid01
1 GB

Grid02
1 GB

Grid03
1 GB

Grid04
1 GB

Grid05
1 GB

Grid06
1 GB

Redo01
100GB

Redo02
100GB

Redo03
100GB

Redo04
100GB

Redo05
100GB

Redo06
100GB

Redo07
100GB

Redo08
100GB

Redo09
100GB

Redo10
100GB

Einige Erklärungen zu den Arbeitsmodi des Arrays und den Abläufen in Notfällen.

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

Jede Datensatzgruppe eines Knotens hat eine "Versionsnummer". Nach der ersten Initialisierung ist sie identisch und beträgt 1. Wenn aus irgendeinem Grund die Versionsnummer unterschiedlich ist, erfolgt immer eine Synchronisierung der Daten von der höheren zur niedrigeren Version, nach der die niedrigere Version angepasst wird, d.h. dies bedeutet, dass die Kopien identisch sind. Gründe, warum die Versionen unterschiedlich sein können:

  • Geplante Neustart eines der Knoten
  • Ausfall eines der Knoten aufgrund plötzlicher Abschaltungen (Stromausfall, Überhitzung usw.).
  • Unterbrechung der InfiniBand-Verbindung mit Unmöglichkeit der Synchronisierung.
  • Ein Ausfall an einem der Nodes aufgrund von Datenbeschädigung. Hier ist die Einrichtung einer neuen HA-Gruppe und die vollständige Synchronisierung des Datensatzes erforderlich.

In jedem Fall erhöht der Node, der online bleibt, seine Versionsnummer um eins, um nach der Wiederherstellung der Verbindung mit der Pair seine Datensätze zu synchronisieren.

Wenn es zu einem Verbindungsabbruch über den Ethernet-Link kommt, wechselt Heartbeat vorübergehend zu InfiniBand und kehrt innerhalb von 10 Sekunden nach Wiederherstellung zurück.

Host-Konfiguration

Um Redundanz zu gewährleisten und die Leistung zu steigern, muss die MPIO-Unterstützung für das Array aktiviert werden. Dazu müssen Sie die Zeilen in die Datei /etc/multipath.conf einfügen und den Multipath-Dienst neu starten.

Versteckter Textdevices {
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
}
}

Um sicherzustellen, dass ASM mit MPIO über ASMLib funktioniert, muss die Datei /etc/sysconfig/oracleasm geändert werden, gefolgt von /etc/init.d/oracleasm scandisks.

Versteckter Text

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

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

Hinweis

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

Beginnen mit der Version 12.1.0.2 ist die Oracle-Datenbankoption als Teil der ASMFD-Software verfügbar.

Stellen Sie sicher, dass die für Oracle ASM erstellten Festplatten blockweise auf die physische Array-Größe (4K) ausgerichtet sind. Andernfalls sind Leistungsprobleme möglich. Deshalb müssen Volumes mit den entsprechenden Parameter erstellt werden:

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

Verteilung der Datenbanken auf die erstellten Volumes für unsere Testkonfiguration

Name des Speicherprodukts
Größe des Volumes
Volume LUNs-Zuordnung
ASM Volume Device Detail
Zuweisungseinheitengröße

Daten01
200GB
Ordnen Sie alle Speicher-Volumes dem Speichersystem und allen Datenports zu.
Redundanz: Normal
Name:DGDATA
Zweck:Daten-Dateien

4MB

Daten02
200GB

Daten03
200GB

Daten04
200GB

Daten05
200GB

Daten06
200GB

Daten07
200GB

Daten08
200GB

Daten09
200GB

Daten10
200GB

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

4MB

Grid02
1 GB

Grid03
1 GB

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

4MB

Grid05
1 GB

Grid06
1 GB

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-Speicher = 16GB
  • AMM (Automatische Speicherverwaltung) deaktivieren
  • Transparente große Seiten deaktivieren

Sonstige 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 # nicht setzen, wenn Sie Linux x86 verwenden
✓ 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 auf Ausfallsicherheit

Zur Demonstration wurde HammerDB verwendet, um eine OLTP-Last zu simulieren. HammerDB-Konfiguration:

Anzahl der Lagerhäuser
256

Gesamttransaktionen pro Benutzer
1000000000000

Virtuelle Benutzer
256

Das Ergebnis war eine Rate von 2,1M TPM, was weit entfernt von der Leistungsgrenze des Arrays ist H710, aber dennoch die „Obergrenze“ für die aktuelle Hardware-Konfiguration der Server darstellt (hauptsächlich aufgrund der Prozessoren) und deren Anzahl. Ziel dieses Tests ist es dennoch, die Ausfallsicherheit der Lösung insgesamt zu demonstrieren und nicht maximale Leistungen zu erreichen. Daher werden wir uns einfach auf diese Zahl stützen.

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

Test auf Ausfall einer der Knoten

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

Die Hosts haben einen Teil der Verbindungen zum Speicher verloren, arbeiten jedoch weiterhin über die verbleibenden Verbindungen zur zweiten Node. Die Leistung sank für einige Sekunden aufgrund der Neuausrichtung der Verbindungen und kehrte dann zu normalen Werten zurück. Es gab keine Unterbrechung des Dienstes.

Test der Ausfallsicherheit des Racks mit sämtlicher Hardware

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

Der Aufbau einer ausfallsicheren Lösung auf Basis von Oracle RAC und der AccelStor Shared-Nothing-Architektur.

In diesem Fall sank die Leistung ebenfalls für einige Sekunden aufgrund der Neuausrichtung der Verbindungen und kehrte dann auf die Hälfte des ursprünglichen Wertes zurück. Das Ergebnis fiel auf die Hälfte des ursprünglichen Wertes, weil ein Anwendungsserver außer Betrieb war. Auch hier gab es keine Unterbrechung des Dienstes.

Wenn es Anforderungen für die Implementierung einer ausfallsicheren Cross-Rack-Disaster-Recovery-Lösung für Oracle zu angemessenen Kosten und mit geringem Aufwand bei der Bereitstellung/Administration gibt, dann wird die Zusammenarbeit von Oracle RAC und der Architektur AccelStor Shared-Nothing eine der besten Optionen sein. Statt Oracle RAC kann jede andere Software verwendet werden, die Clusterbildung unterstützt, wie beispielsweise dieselben DBMS oder Virtualisierungslösungen. Das Prinzip der Lösung bleibt dasselbe. Das Endergebnis ist ein Nullwert für RTO und RPO.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster