Eine beträchtliche Anzahl von Unternehmensanwendungen und Virtualisierungssystemen verfügt über eigene Mechanismen zum Erstellen fehlertoleranter Lösungen. Insbesondere ist Oracle RAC (Oracle Real Application Cluster) ein Cluster aus zwei oder mehr Oracle-Datenbankservern, die zusammenarbeiten, um die Last auszugleichen und Fehlertoleranz auf Server- / Anwendungsebene bereitzustellen. Um in diesem Modus zu arbeiten, ist ein gemeinsamer Speicher erforderlich, dessen Rolle normalerweise der Speicher ist.
Wie wir bereits in einem unserer Artikel besprochen haben, weisen Speichersysteme trotz des Vorhandenseins doppelter Komponenten (einschließlich Steuerungen) immer noch Fehlerquellen auf - hauptsächlich in Form eines einzelnen Datensatzes. Um eine Oracle-Lösung mit erhöhten Zuverlässigkeitsanforderungen zu erstellen, muss das Schema „N Server - ein Speicher“ daher kompliziert sein.
Zunächst müssen Sie natürlich entscheiden, gegen welche Risiken wir uns versichern möchten. In diesem Artikel wird der Schutz vor Bedrohungen wie dem Eintreffen eines Meteoriten nicht berücksichtigt. Der Aufbau einer geografisch verteilten Disaster Recovery-Lösung bleibt daher ein Thema für einen der folgenden Artikel. Hier sehen wir uns die sogenannte Cross-Rack-Disaster-Recovery-Lösung an, bei der der Schutz auf der Ebene von Serverschränken aufgebaut wird. Die Schränke selbst können sich im selben Raum oder in verschiedenen Räumen befinden, normalerweise jedoch im selben Gebäude.
Diese Schränke sollten alle erforderlichen Geräte und Software enthalten, die den Betrieb von Oracle-Datenbanken unabhängig vom Status des „Nachbarn“ gewährleisten. Mit anderen Worten, mit der Cross-Rack-Disaster-Recovery-Lösung eliminieren wir die Ausfallrisiken:
- Oracle-Anwendungsserver
- Speichersysteme
- Vermittlungssysteme
- Vollständiger Ausfall aller Geräte im Schrank:
- Stromausfall
- Ausfall des Kühlsystems
- Externe Faktoren (Mensch, Natur usw.)
Die Duplizierung von Oracle-Servern impliziert das Prinzip von Oracle RAC und wird über die Anwendung implementiert. Das Duplizieren von Schaltwerkzeugen ist ebenfalls kein Problem. Aber mit der Verdoppelung des Speichersystems ist nicht alles so einfach.
Am einfachsten ist es, Daten vom Primärspeicher in die Sicherung zu replizieren. Abhängig von den Speicherfunktionen synchron oder asynchron. Die asynchrone Replikation wirft sofort die Frage auf, ob die Datenkonsistenz mit Oracle sichergestellt werden kann. Aber selbst wenn eine Software in die Anwendung integriert ist, müssen Administratoren im Falle eines Unfalls auf dem Hauptspeichersystem manuell eingreifen, um den Cluster auf den Sicherungsspeicher umzustellen.
Eine komplexere Option sind Software- und / oder Hardware-Virtualisierer von Speichersystemen, die Probleme mit der Konsistenz und manuellen Eingriffen beseitigen. Die Komplexität der Bereitstellung und der anschließenden Verwaltung sowie die sehr unanständigen Kosten solcher Lösungen machen vielen jedoch Angst.
Nur für Szenarien wie die Cross-Rack-Notfallwiederherstellung ist das All Flash AccelStor NeoSapphire ™ H710-Array mit der Shared-Nothing-Architektur perfekt . Dieses Modell ist ein Zwei-Einzel-Speichersystem, das seine eigene FlexiRemap®-Technologie für die Arbeit mit Flash-Laufwerken verwendet. Dank des FlexiRemap® NeoSapphire ™ H710 können bis zu 600K IOPS @ 4K Random Write und 1M + IOPS @ 4K Random Read bereitgestellt werden, was mit klassischem RAID-basiertem Speicher nicht möglich ist.
Das Hauptmerkmal des NeoSapphire ™ H710 ist jedoch die Ausführung von zwei Knoten als separate Gehäuse, von denen jedes eine eigene Kopie der Daten hat. Die Knotensynchronisation erfolgt über die externe InfiniBand-Schnittstelle. Dank dieser Architektur können Knoten über Entfernungen von bis zu 100 m auf verschiedene Standorte verteilt werden, wodurch die Cross-Rack-Disaster-Recovery-Lösung bereitgestellt wird. Beide Knoten arbeiten vollständig im synchronen Modus. Auf der Hostseite sieht das H710 wie ein gewöhnlicher Dual-Controller-Speicher aus. Daher müssen keine zusätzlichen Software- und Hardwareoptionen und besonders komplexen Einstellungen vorgenommen werden.
Wenn Sie alle oben beschriebenen Cross-Rack-Disaster-Recovery-Lösungen vergleichen, hebt sich die AccelStor-Version von den anderen ab:
| AccelStor NeoSapphire ™ Shared Nothing-Architektur | Software- oder Hardware-Virtualisierer des Speichers | Replikationslösung |
---|
Verfügbarkeit |
Serverfehler | Keine Ausfallzeiten | Keine Ausfallzeiten | Keine Ausfallzeiten |
Switch-Fehler | Keine Ausfallzeiten | Keine Ausfallzeiten | Keine Ausfallzeiten |
Speicherfehler | Keine Ausfallzeiten | Keine Ausfallzeiten | Ausfallzeiten |
Ausfall des gesamten Schranks | Keine Ausfallzeiten | Keine Ausfallzeiten | Ausfallzeiten |
Kosten und Komplexität |
Lösungskosten | Niedrig * | Hoch | Hoch |
Bereitstellungsschwierigkeiten | Niedrig | Hoch | Hoch |
* AccelStor NeoSapphire ™ ist immer noch ein All-Flash-Array, das per Definition keine „3 Kopeken“ kostet, zumal es eine doppelte Kapazitätsreserve hat. Wenn man jedoch die Gesamtkosten der darauf basierenden Lösung mit ähnlichen Kosten anderer Anbieter vergleicht, können die Kosten als niedrig angesehen werden.
Die Topologie zum Verbinden von Anwendungsservern und allen Flash-Array-Knoten sieht folgendermaßen aus:
Bei der Planung der Topologie wird außerdem dringend empfohlen, Verwaltungsschalter und Serververbindungen zu duplizieren.
Im Folgenden werden wir über die Verbindung über Fibre Channel sprechen. Bei Verwendung von iSCSI ist alles gleich, angepasst an die verwendeten Switch-Typen und leicht unterschiedliche Array-Einstellungen.
Vorarbeiten am Array
Gebrauchte Hardware und SoftwareServer- und Switch-Spezifikationen
Komponenten | Beschreibung |
---|
Oracle Database 11g-Server | Zwei |
Server-Betriebssystem | Oracle Linux |
Oracle-Datenbankversion | 11 g (RAC) |
Prozessoren pro Server | Zwei Intel® Xeon® CPU E5-2667 v2 mit 16 Kernen bei 3,30 GHz |
Physischer Speicher pro Server | 128 GB |
FC-Netzwerk | 16 Gbit / s FC mit Multipathing |
FC HBA | Emulex Lpe-16002B |
Spezielle öffentliche 1-GbE-Ports für die Clusterverwaltung | Intel Ethernet Adapter rj45 |
16 Gbit / s FC-Schalter | Brokat 6505 |
Spezielle private 10-GbE-Ports für die Datensynchronisation | Intel X520 |
AccelStor NeoSapphhire ™ Alle Flash-Array-Spezifikationen
Komponenten | Beschreibung |
---|
Speichersystem | NeoSapphire ™ Hochverfügbarkeitsmodell: H710 |
Bildversion | 4.0.1 |
Gesamtzahl der Laufwerke | 48 |
Laufwerksgröße | 1,92 TB |
Laufwerkstyp | SSD |
FC-Zielports | 16x 16-Gbit-Ports (8 pro Knoten) |
Verwaltungsports | Das 1-GbE-Ethernet-Kabel, das über einen Ethernet-Switch mit Hosts verbunden ist |
Herzschlag-Port | Das 1-GbE-Ethernet-Kabel, das zwei Speicherknoten verbindet |
Datensynchronisationsport | InfiniBand-Kabel mit 56 Gbit / s |
Bevor Sie ein Array verwenden, müssen Sie es initialisieren. Standardmäßig ist die Steueradresse beider Knoten identisch (192.168.1.1). Sie müssen nacheinander eine Verbindung zu ihnen herstellen, neue (bereits unterschiedliche) Verwaltungsadressen festlegen und die Zeitsynchronisierung konfigurieren. Anschließend können die Verwaltungsports mit einem einzelnen Netzwerk verbunden werden. Danach werden die Knoten zu einem HA-Paar zusammengefasst, indem Interlink-Verbindungen Subnetze zugewiesen werden.
Nach Abschluss der Initialisierung können Sie das Array von jedem Knoten aus steuern.
Erstellen Sie als Nächstes die erforderlichen Volumes und veröffentlichen Sie sie für Anwendungsserver.
Es wird dringend empfohlen, mehrere Volumes für Oracle ASM zu erstellen, da dies die Anzahl der Ziele für die Server erhöht, was letztendlich die Gesamtleistung verbessert (mehr zu Warteschlangen in einem anderen Artikel ).
TestkonfigurationName des Speichervolumens | Volumengröße |
---|
Daten01 | 200 GB |
Daten02 | 200 GB |
Daten03 | 200 GB |
Daten04 | 200 GB |
Data05 | 200 GB |
Daten06 | 200 GB |
Daten07 | 200 GB |
Daten08 | 200 GB |
Daten09 | 200 GB |
Daten10 | 200 GB |
Grid01 | 1 GB |
Grid02 | 1 GB |
Grid03 | 1 GB |
Grid04 | 1 GB |
Grid05 | 1 GB |
Grid06 | 1 GB |
Redo01 | 100 GB |
Redo02 | 100 GB |
Redo03 | 100 GB |
Redo04 | 100 GB |
Redo05 | 100 GB |
Redo06 | 100 GB |
Redo07 | 100 GB |
Redo08 | 100 GB |
Redo09 | 100 GB |
Redo10 | 100 GB |
Einige Erklärungen zu den Betriebsarten des Arrays und den Prozessen, die in Notsituationen auftreten
Jeder Knotendatensatz verfügt über einen Parameter "Versionsnummer". Nach der anfänglichen Initialisierung ist sie gleich und gleich 1. Wenn die Versionsnummer aus irgendeinem Grund unterschiedlich ist, werden immer Daten von der älteren Version zur jüngeren Version synchronisiert, wonach die Nummer für die jüngere Version ausgerichtet wird, d. H. Dies bedeutet, dass die Kopien identisch sind. Gründe, warum Versionen variieren können:
- Geplanter Neustart eines der Knoten
- Ein Unfall an einem der Knoten aufgrund eines plötzlichen Herunterfahrens (Stromversorgung, Überhitzung usw.).
- Unterbrochene InfiniBand-Verbindung mit Unfähigkeit zur Synchronisierung
- Absturz auf einem der Knoten aufgrund von Datenbeschädigung. Es ist bereits die Erstellung einer neuen HA-Gruppe und die vollständige Synchronisierung des Datensatzes erforderlich.
In jedem Fall erhöht der online verbleibende Knoten seine Versionsnummer um eins, sodass er nach erneuter Verbindung mit dem Paar seinen Datensatz synchronisiert.
Wenn die Verbindung über die Ethernet-Verbindung unterbrochen wird, wechselt Heartbeat vorübergehend zu InfiniBand und kehrt nach Wiederherstellung innerhalb von 10 Sekunden zurück.
Host-Konfiguration
Um Fehlertoleranz sicherzustellen und die Leistung zu erhöhen, müssen Sie die MPIO-Unterstützung für das Array aktivieren. Fügen Sie dazu der Datei /etc/multipath.conf Zeilen hinzu und laden Sie den Multipath-Dienst neu
Versteckter TextGeräte {
Gerät {
Anbieter "AStor"
path_grouping_policy "group_by_prio"
path_selector "Warteschlangenlänge 0"
path_checker "tur"
Eigenschaften "0"
hardware_handler "0"
prio "const"
sofortiges Failback
fast_io_fail_tmo 5
dev_loss_tmo 60
user_friendly_names ja
detect_prio ja
rr_min_io_rq 1
no_path_retry 0
}}
}}
Damit ASM über ASMLib mit MPIO arbeiten kann, müssen Sie die Datei / etc / sysconfig / oracleasm ändern und anschließend /etc/init.d/oracleasm scandisks ausführen
Versteckter Text# ORACLEASM_SCANORDER: Übereinstimmende Muster, um das Scannen der Festplatte zu bestellen
ORACLEASM_SCANORDER = "dm"
# ORACLEASM_SCANEXCLUDE: Übereinstimmende Muster, um Festplatten vom Scan auszuschließen
ORACLEASM_SCANEXCLUDE = "sd"
Hinweis
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 Oracle Database steht die Option zur Installation als Teil der ASMFD-Software zur Verfügung.
Stellen Sie sicher, dass die für Oracle ASM erstellten Datenträger an der Größe des Blocks ausgerichtet sind, mit dem das Array physisch arbeitet (4 KB). Andernfalls können Leistungsprobleme auftreten. Daher müssen Sie Volumes mit den entsprechenden Parametern erstellen:
parted / dev / mapper / Gerätename mklabel gpt mkpart primary 2048s 100% Align-Check Optimal 1
Verteilung von Datenbanken auf erstellten Volumes für unsere Testkonfiguration
Name des Speichervolumens | Volumengröße | Zuordnung von Volume-LUNs | ASM Volume Device Detail | Größe der Zuordnungseinheit |
---|
Daten01 | 200 GB | Ordnen Sie alle Speichervolumes dem Speichersystem aller Datenports zu | Redundanz: normal Name: DGDATA Zweck: Datendateien
| 4 MB |
Daten02 | 200 GB |
Daten03 | 200 GB |
Daten04 | 200 GB |
Data05 | 200 GB |
Daten06 | 200 GB |
Daten07 | 200 GB |
Daten08 | 200 GB |
Daten09 | 200 GB |
Daten10 | 200 GB |
Grid01 | 1 GB | Redundanz: normal Name: DGGRID1 Zweck: Raster: CRS und Abstimmung
| 4 MB |
Grid02 | 1 GB |
Grid03 | 1 GB |
Grid04 | 1 GB | Redundanz: normal Name: DGGRID2 Zweck: Raster: CRS und Abstimmung
| 4 MB |
Grid05 | 1 GB |
Grid06 | 1 GB |
Redo01 | 100 GB | Redundanz: normal Name: DGREDO1 Zweck: Protokoll von Thread 1 wiederholen
| 4 MB |
Redo02 | 100 GB |
Redo03 | 100 GB |
Redo04 | 100 GB |
Redo05 | 100 GB |
Redo06 | 100 GB | Redundanz: normal Name: DGREDO2 Zweck: Protokoll von Thread 2 wiederholen
| 4 MB |
Redo07 | 100 GB |
Redo08 | 100 GB |
Redo09 | 100 GB |
Redo10 | 100 GB |
Datenbankeinstellungen- Blockgröße = 8K
- Swap Space = 16 GB
- AMM deaktivieren (Automatic Memory Management)
- 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_pressure = 200
✓ vm.nr_hugepages = 57000
# vi /etc/security/limits.conf
✓ Gitter soft nproc 2047
✓ Gitter hart nproc 16384
✓ Raster Soft Nofile 1024
✓ Raster-Hard-Nofile 65536
✓ Gitter-Softstack 10240
✓ Grid Hard Stack 32768
✓ oracle soft nproc 2047
✓ oracle hard nproc 16384
✓ Orakel Soft Nofile 1024
✓ Oracle Hard Nofile 65536
✓ Orakel-Softstack 10240
✓ Oracle Hard Stack 32768
✓ Soft Memlock 120795954
✓ Hard Memlock 120795954
sqlplus "/ as sysdba"
System-Set-Prozesse ändern = 2000 scope = spfile;
alter system set open_cursors = 2000 scope = spfile;
System ändern set session_cached_cursors = 300 scope = spfile;
alter system set db_files = 8192 scope = spfile;
Fehlertoleranztest
Zu Demonstrationszwecken wurde HammerDB verwendet, um die OLTP-Last zu emulieren. HammerDB-Konfiguration:
Anzahl der Lager | 256 |
Gesamtzahl der Transaktionen pro Benutzer | 1000000000000 |
Virtuelle Benutzer | 256 |
Als Ergebnis wurde der 2.1M TPM-Indikator erhalten, der weit von der Leistungsgrenze des H710- Arrays entfernt ist, aber die „Obergrenze“ für die aktuelle Hardwarekonfiguration von Servern (hauptsächlich aufgrund von Prozessoren) und deren Anzahl darstellt. Der Zweck dieses Tests besteht weiterhin darin, die Fehlertoleranz der gesamten Lösung zu demonstrieren und nicht die maximale Leistung zu erzielen. Deshalb werden wir einfach auf dieser Zahl aufbauen.
Test auf Ausfall eines der Knoten
Die Hosts haben einige der Pfade zum Speicher verloren und die verbleibenden Pfade mit dem zweiten Knoten weiter bearbeitet. Die Leistung ging aufgrund der Umstrukturierung der Pfade für einige Sekunden zurück und normalisierte sich dann wieder. Es ist keine Dienstunterbrechung aufgetreten.
Schrankausfalltest mit allen Geräten
In diesem Fall sank die Leistung aufgrund der Umstrukturierung der Pfade ebenfalls für einige Sekunden und kehrte dann auf die Hälfte des Werts des ursprünglichen Indikators zurück. Das Ergebnis wurde aufgrund des Ausschlusses vom Betrieb eines Anwendungsservers vom Original halbiert. Eine Dienstunterbrechung ist ebenfalls nicht aufgetreten.
Wenn Sie eine fehlertolerante Cross-Rack-Disaster-Recovery-Lösung für Oracle zu angemessenen Kosten und mit geringem Aufwand für Bereitstellung / Verwaltung implementieren müssen , ist die Zusammenarbeit mit Oracle RAC und der AccelStor Shared-Nothing- Architektur eine der besten Optionen. Anstelle von Oracle RAC kann es auch eine andere Software geben, die Clustering bereitstellt, z. B. dasselbe DBMS oder dieselben Virtualisierungssysteme. Das Prinzip der Konstruktion der Lösung bleibt gleich. Und das Endergebnis ist Null für RTO und RPO.