Stellen Sie einen hochverfügbaren PostgreSQL-Stack in einem OCI-Kubernetes-Cluster mit StackGres bereit
Wenn Sie PostgreSQL in der Cloud bereitstellen möchten, bietet Oracle Cloud Infrastructure (OCI) eine ideale Umgebung mit Oracle Container Engine for Kubernetes für serverlose, skalierbare und hochverfügbare Microservices. StackGres bietet eine vollständige Stack-PostgreSQL-Distribution für Kubernetes, die in eine einfache Deployment-Einheit verpackt ist.
StackGres umfasst Connection Pooling, automatisierte Backups, Monitoring, zentralisiertes Logging und eine Management-Webkonsole mit vollem Funktionsumfang. StackGres integriert die renommierteste und produktionstestierte Hochverfügbarkeitssoftware für Postgres: Patroni.
- Es ist vollständig integriert. Wenn ein Fehler auftritt, hebt das Cluster automatisch ohne menschliches Eingreifen auf.
- StackGres stellt eine schreibgeschützte und eine schreibgeschützte Verbindung für die Anwendungen bereit, die nach einem unterbrechungsfreien Ereignis automatisch aktualisiert wird.
Ein PostgreSQL-Stack der Unternehmensklasse benötigt mehrere andere Ökosystemkomponenten und eine signifikante Optimierung. Dazu sind Verbindungspooling, automatisches Failover und HA, Überwachung, Backups und DR erforderlich. Das Package StackGres und die in diesem Lösungs-Playbook angezeigten OCI-Komponenten bieten ein kostengünstiges, skalierbares, hochverfügbares Deployment.
Architektur
Diese Architektur zeigt, wie Sie PostgreSQL in einem Oracle Container Engine for Kubernetes-Cluster bereitstellen. Verwenden Sie diese Architektur für produktionsbereite Umgebungen, die PostgreSQL-Features nutzen:
- Keine Abhängigkeit vom Anbieter: PostgreSQL funktioniert in jeder Kubernetes-Umgebung.
- Umfasst eine Webkonsole mit vollem Funktionsumfang.
- Die Postgres Plattform hat die meisten Erweiterungen der Welt.
- Wird auf Kubernetes-Worker-Knoten x86-64 und ARM64 ausgeführt.
- Vollständig Open Source (keine Trennung zwischen einer freien "Community" und einer teuren "Enterprise"-Version).
- Preise für Support und Updates basierend auf verwendeten Cores.
- Umfasst "vanilla" Postgres und Babelfish (was SQL Server-Kompatibilität bietet).
Das folgende Diagramm veranschaulicht diese Referenzarchitektur.
Die Architektur umfasst die folgenden Komponenten:
- Mandant
Ein Mandant ist eine sichere und isolierte Partition, die Oracle bei der Registrierung für Oracle Cloud Infrastructure in Oracle Cloud einrichtet. Sie können Ihre Ressourcen in Oracle Cloud in Ihrem Mandanten erstellen, organisieren und verwalten. Ein Mandant ist synonym zu einem Unternehmen oder einer Organisation. In der Regel verfügt ein Unternehmen über einen einzelnen Mandanten und spiegelt dessen Organisationsstruktur in diesem Mandanten wider. Ein einzelner Mandant ist in der Regel mit einem einzelnen Abonnement verknüpft, und ein einzelnes Abonnement hat in der Regel nur einen Mandanten.
- Region
Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center enthält, das als Availability-Domains bezeichnet wird. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie voneinander trennen (innerhalb von Ländern oder sogar Kontinenten).
- Compartment
Compartments sind regionsübergreifende logische Partitionen in einem Oracle Cloud Infrastructure-Mandanten. In Compartments können Sie Ihre Ressourcen in Oracle Cloud organisieren, den Zugriff auf die Ressourcen kontrollieren und Nutzungs-Quotas festlegen. Um den Zugriff auf die Ressourcen in einem bestimmten Compartment zu kontrollieren, definieren Sie Policys, mit denen angegeben wird, wer auf die Ressourcen zugreifen kann und welche Aktionen sie ausführen können.
- Availability-Domain
Availability-Domains sind eigenständige, unabhängige Data Center innerhalb einer Region. Die physischen Ressourcen in jeder Availability-Domain sind von den Ressourcen in den anderen Availability-Domains isoliert, was eine Fehlertoleranz sicherstellt. Availability-Domains haben keine gemeinsame Infrastruktur wie Stromversorgung oder Kühlung oder das interne Availability-Domainnetzwerk. Aus diesem Grund ist es wahrscheinlich, dass ein Fehler in einer Availability-Domain sich auf die anderen Availability-Domains in der Region auswirkt.
Es wird eine Availability-Domain angezeigt. Sie können aber je nach Ihren Produktionsanforderungen in mehreren Availability-Domains bereitstellen.
- Faultdomain
Eine Faultdomain ist eine Gruppierung aus Hardware und Infrastruktur innerhalb einer Availability-Domain. Jede Availability-Domain umfasst drei Faultdomains mit unabhängiger Stromversorgung und Hardware. Wenn Sie Ressourcen auf mehrere Faultdomains verteilen, können Ihre Anwendungen physische Serverausfälle, Systemwartungen und Stromausfälle innerhalb einer Faultdomain tolerieren.
Eine Faultdomain wird angezeigt. Je nach Ihren Produktionsanforderungen können Sie sie jedoch über mehrere Faultdomains bereitstellen.
- Virtual Cloud Network (VCN) und Subnetze
Ein VCN ist ein anpassbares, Software-definiertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten können. Wie herkömmliche Data Center-Netzwerke erhalten Sie mit VCNs vollständige Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere sich nicht überschneidende CIDR-Blöcke aufweisen, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die sich auf eine Region oder eine Availability-Domain beschränken. Jedes Subnetz besteht aus einem Bereich zusammenhängender Adressen, die sich nicht mit anderen Subnetzen im VCN überschneiden. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.
- Load Balancer
Der Oracle Cloud Infrastructure Load Balancing-Service ermöglicht automatisierte Trafficverteilung von einem einzelnen Einstiegspunkt zu mehreren Servern im Backend.
- Bastion-Service
Oracle Cloud Infrastructure Bastion bietet eingeschränkten und zeitlich begrenzten sicheren Zugriff auf Ressourcen, die keine öffentlichen Endpunkte haben und strenge Ressourcenzugriffskontrollen erfordern, wie Bare Metal und virtuelle Maschinen, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) und alle anderen Ressourcen, die Secure Shell Protocol-(SSH-)Zugriff ermöglichen. Mit dem Oracle Cloud Infrastructure-Bastion-Service können Sie den Zugriff auf private Hosts aktivieren, ohne einen Sprunghost bereitzustellen und zu verwalten. Darüber hinaus erhalten Sie eine verbesserte Sicherheitslage mit identitätsbasierten Berechtigungen und einer zentralisierten, auditierten und zeitgebundenen SSH-Session. Mit Oracle Cloud Infrastructure Bastion ist keine öffentliche IP für den Bastionzugriff erforderlich. Dadurch entfallen der Aufwand und die potenzielle Angriffsfläche beim Remotezugriff.
- Sicherheitsliste
Für jedes Subnetz können Sie Sicherheitsregeln erstellen, die Quelle, Ziel und Typ des Traffics angeben, der in das und aus dem Subnetz zugelassen werden muss.
- Network Address Translation-(NAT-)Gateway
Mit einem NAT-Gateway können private Ressourcen in einem VCN auf Hosts im Internet zugreifen, ohne diese Ressourcen für eingehende Internetverbindungen anzugeben.
- Servicegateway
Das Servicegateway ermöglicht den Zugriff von einem VCN auf andere Services wie Oracle Cloud Infrastructure Object Storage. Der Datenverkehr vom VCN zum Oracle-Service durchläuft die Oracle-Netzwerkfabric und nie das Internet.
- Dynamisches Routinggateway (DRG)
Das DRG ist ein virtueller Router, der einen Pfad für privaten Netzwerktraffic zwischen VCNs in derselben Region zwischen einem VCN und einem Netzwerk außerhalb der Region bereitstellt, wie einem VCN in einer anderen Oracle Cloud Infrastructure-Region, einem On-Premise-Netzwerk oder einem Netzwerk in einem anderen Cloud-Provider.
- Object Storage
Mit Object Storage erhalten Sie schnellen Zugriff auf große Mengen an strukturierten und unstrukturierten Daten eines beliebigen Inhaltstyps, darunter Datenbankbackups, Analysendaten und umfangreiche Inhalte, wie Bilder und Videos. Sie können Daten sicher und geschützt speichern und dann direkt aus dem Internet oder aus der Cloud-Plattform abrufen. Sie können den Speicher nahtlos skalieren, ohne dass die Performance oder Servicezuverlässigkeit beeinträchtigt wird. Verwenden Sie Standardspeicher für "Hot Storage", auf den Sie schnell, sofort und häufig zugreifen müssen. Verwenden Sie Archivspeicher für "Cold Storage", den Sie über lange Zeiträume beibehalten möchten und auf den Sie nur selten zugreifen.
- Internetgateway
Das Internetgateway lässt Traffic zwischen den öffentlichen Subnetzen in einem VCN und dem öffentlichen Internet zu.
- FastConnect
Mit Oracle Cloud Infrastructure FastConnect können Sie ganz einfach eine dedizierte, private Verbindung zwischen Ihrem Data Center und Oracle Cloud Infrastructure erstellen. FastConnect bietet Optionen mit höherer Bandbreite und eine zuverlässigere Netzwerkerfahrung im Vergleich zu internetbasierten Verbindungen.
- Local Peering Gateway (LPG)
Mit einem LPG können Sie ein VCN mit einem anderen VCN in derselben Region verbinden. Peering bedeutet, dass die VCNs über private IP-Adressen kommunizieren, ohne dass der Traffic über das Internet oder das On-Premise-Netzwerk geleitet wird.
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes ist ein vollständig verwalteter, skalierbarer und hochverfügbarer Service, mit dem Sie Ihre Containeranwendungen in der Cloud bereitstellen können. Sie geben die von Ihren Anwendungen benötigten Compute-Ressourcen an, und Container Engine for Kubernetes stellt sie in einem vorhandenen Mandanten in Oracle Cloud Infrastructure bereit. Container Engine for Kubernetes verwendet Kubernetes, um das Deployment, die Skalierung und die Verwaltung containerisierter Anwendungen auf mehreren Hostclustern zu automatisieren.
- PostgreSQL
PostgreSQL ist ein relationales Open-Source-Datenbankverwaltungssystem (RDBMS), das hoch erweiterbar und hoch skalierbar ist. Es unterstützt SQL-(relational-) und JSON-(nicht-relationale) Abfragen.
- StackGres
StackGres ist eine vollständige PostgreSQL-Stackverteilung für Kubernetes, die in eine einfache Deployment-Einheit gepackt ist. Sie umfasst ein sorgfältig ausgewähltes und optimiertes Set von umgebenden PostgreSQL-Komponenten.
- Cloud Guard
Mit Oracle Cloud Guard können Sie die Sicherheit Ihrer Ressourcen in Oracle Cloud Infrastructure überwachen und verwalten. Cloud Guard verwendet Detektorrezepte, die Sie definieren können, um Ihre Ressourcen auf Sicherheitsschwächen zu untersuchen und Operatoren und Benutzer auf riskante Aktivitäten zu überwachen. Wenn eine falsche Konfiguration oder unsichere Aktivität ermittelt wird, empfiehlt Cloud Guard Korrekturmaßnahmen und unterstützt das Ausführen dieser Aktionen basierend auf Responder-Rezepten, die Sie definieren können.
- Verteilter Denial of Service-(DDoS-)Schutz
Verteilte Denial-of-Service-Angriffe (DDoS) sind schwerwiegende Cyberkriminalität, die von Angreifern begangen werden, die Unternehmensserver mit einer überwältigenden Menge an eingehendem Verkehr überfluten. Diese überwältigende Menge an Traffic stammt aus unzähligen Quellen und Geolokationen und verhindert, dass Benutzer auf die Services und Websites des Unternehmens zugreifen. Alle Oracle Cloud-Data Center verfügen über die DDoS-Angriffserkennung und -Abwehr bei Angriffen mit hoher Datenträgerschicht 3 oder 4 DDoS. Mit diesen DDoS-Schutzservices von Oracle Cloud wird die Verfügbarkeit von Oracle-Netzwerkressourcen auch bei Angriffen mit Schichten 3 oder 4 sichergestellt.
- Identity and Access Management (IAM)
Oracle Cloud Infrastructure Identity and Access Management (IAM) ist die Access Control Plane für Oracle Cloud Infrastructure (OCI) und Oracle Cloud Applications. Mit der IAM-API und der Benutzeroberfläche können Sie Identitätsdomains und die Ressourcen innerhalb der Identitätsdomain verwalten. Jede OCI-IAM-Identitätsdomain stellt eine eigenständige Identity and Access Management-Lösung oder eine andere Benutzerpopulation dar.
- AnmeldungLogging ist ein hoch skalierbarer und vollständig verwalteter Service, der Zugriff auf die folgenden Logtypen von Ihren Ressourcen in der Cloud ermöglicht:
- Auditlogs: Logs zu Ereignissen, die vom Auditservice ausgegeben werden.
- Servicelogs: Von einzelnen Services wie API Gateway, Events, Functions, Load Balancing, Object Storage und VCN-Flowlogs ausgegebene Logs.
- Benutzerdefinierte Logs: Logs, die Diagnoseinformationen von benutzerdefinierten Anwendungen, anderen Cloud-Providern oder einer On-Premise-Umgebung enthalten.
- Audit
Der Oracle Cloud Infrastructure Audit-Service zeichnet Aufrufe von allen unterstützten öffentlichen API-Endpunkten von Oracle Cloud Infrastructure automatisch als Logereignisse auf. Derzeit unterstützen alle Services das Logging durch Oracle Cloud Infrastructure Audit.
Empfehlungen
- VCN
Bestimmen Sie beim Erstellen eines VCN die Anzahl der erforderlichen CIDR-Blöcke und die Größe jedes Blocks basierend auf der Anzahl der Ressourcen, die Sie an Subnetze im VCN anhängen möchten. Verwenden Sie CIDR-Blöcke innerhalb des standardmäßigen privaten IP-Adressraums.
Wählen Sie CIDR-Blöcke aus, die sich mit keinem anderen Netzwerk (in Oracle Cloud Infrastructure, Ihrem On-Premise-Data Center oder einem anderen Cloud-Provider) überschneiden, zu dem Sie private Verbindungen einrichten möchten.
Nachdem Sie ein VCN erstellt haben, können Sie die zugehörigen CIDR-Blöcke ändern, hinzufügen und entfernen.
Berücksichtigen Sie bei der Entwicklung der Subnetze Ihren Verkehrsfluss und Ihre Sicherheitsanforderungen. Hängen Sie alle Ressourcen innerhalb einer bestimmten Ebene oder Rolle an dasselbe Subnetz an, das als Sicherheitsgrenze dienen kann.
Verwenden Sie regionale Subnetze.
- Cloud Guard
Klonen und passen Sie die von Oracle bereitgestellten Standardrezepte an, um benutzerdefinierte Detektor- und Responder-Rezepte zu erstellen. Mit diesen Rezepten können Sie angeben, welche Art von Sicherheitsverletzungen eine Warnung generiert und welche Aktionen für sie ausgeführt werden dürfen. Beispiel: Sie möchten Object Storage-Buckets ermitteln, deren Sichtbarkeit auf "Öffentlich" gesetzt ist.
Wenden Sie Cloud Guard auf Mandantenebene an, um den größten Geltungsbereich abzudecken und den administrativen Aufwand für die Verwaltung mehrerer Konfigurationen zu reduzieren.
Sie können das Feature "Verwaltete Liste" auch verwenden, um bestimmte Konfigurationen auf Detektoren anzuwenden.
- Sicherheitszonen
Für Ressourcen, die maximale Sicherheit erfordern, empfiehlt Oracle die Verwendung von Sicherheitszonen. Eine Sicherheitszone ist ein Compartment, das mit einem von Oracle definierten Rezept für Sicherheits-Policys verknüpft ist, die auf Best Practices basieren. Beispiel: Auf die Ressourcen in einer Sicherheitszone kann nicht über das öffentliche Internet zugegriffen werden. Sie müssen mit vom Kunden verwalteten Schlüsseln verschlüsselt werden. Wenn Sie Ressourcen in einer Sicherheitszone erstellen und aktualisieren, validiert Oracle Cloud Infrastructure die Vorgänge anhand der Policys im Rezept der Sicherheitszone und lehnt Vorgänge ab, die eine der Policys verletzen.
- Netzwerksicherheitsgruppen (NSGs)
Mit NSGs können Sie eine Gruppe von Ingress- und Egress-Regeln definieren, die für bestimmte VNICs gelten. Wir empfehlen die Verwendung von NSGs und nicht von Sicherheitslisten, da NSGs die Subnetzarchitektur des VCN von den Sicherheitsanforderungen Ihrer Anwendung trennen können.
- Load Balancer-Bandbreite
Beim Erstellen des Load Balancers können Sie entweder eine vordefinierte Ausprägungen auswählen, die eine feste Bandbreite bereitstellen, oder eine benutzerdefinierte (flexible) Ausprägung angeben, in der Sie einen Bandbreitenbereich festlegen und der Service die Bandbreite basierend auf Trafficmustern automatisch skalieren lässt. Bei beiden Vorgehensweisen können Sie die Ausprägungen nach dem Erstellen des Load Balancers jederzeit ändern.
Hinweise
Beachten Sie beim Deployment dieser Architektur die folgenden Optionen:
- Homologation mit ARM-Prozessoren
StackGres kann mit ARM (Ampere A1 Compute) ausgeführt werden.
- Architekturoptionen
Die Architektur dieses Dokuments ist ein Vorschlag und kann entsprechend den Anforderungen des Projekts geändert werden.
- Postgres-Erweiterungen
StackGres Quellen über 130 Postgres-Erweiterungen, die Sie verwenden können.
- Benutzerberechtigungen
Verwenden Sie die bewährte Sicherheitsmaßnahme der geringsten Rechte: Schränken Sie den Accountzugriff auf Root- oder Superuser-Berechtigungen nur bei Bedarf ein.
- Überwachung
Neben OCI-Services wie OCI-Ereignissen, OCI-Logging und OCI-Monitoring können Sie Prometheus oder Grafana zur Überwachung verwenden.
- Backups
StackGres umfasst kontinuierliche archivbasierte Backups, die ein Recovery ohne Datenverlust ermöglichen.
Backups werden immer auf den dauerhaftesten Medien gespeichert, die heute verfügbar sind: OCI Object Storage.
Befolgen Sie diese Best Practices:
- Lassen Sie Ihre Datenbank nicht dem Internet zugänglich.
- Trennen Sie das Anwendungscluster nach Möglichkeit vom Cluster, das von Stackgres verwendet wird.
- Wenn Sie die Anwendung in demselben Cluster erstellen möchten, empfiehlt Oracle dringend, einen anderen Namespace für die Anwendung zu erstellen.
- Berücksichtigen Sie bei der Auswahl Ihres Intel-, AMD- oder ARM-Prozessors die Größe Ihrer Arbeitslast, um Ihre Postgres-Umgebung nicht zu unterstreichen.
Erforderliche Produkte und Rollen - Info
Für diese Lösung sind folgende Produkte und Rollen erforderlich:
-
Oracle Cloud Infrastructure
-
Oracle Cloud Infrastructure Cloud Shell
-
PostgreSQL
-
Stackgres
Für jeden Service sind diese Rollen erforderlich.
Servicename: Rolle | Erforderlich für... |
---|---|
OCI: Administrator |
Vollständiger Zugriff auf Ressourcen wie Compute-, Netzwerk-, Beobachtungs- und Managementservices sowie die OCI Cloud Shell. |
Oracle Cloud Infrastructure Cloud Shell Um OCI Cloud Shell verwenden zu können, benötigen Sie den erforderlichen Zugriffstyp in einer von einem Administrator im Root Compartment des Mandanten geschriebenen Policy. |
Mit dem Befehlszeilenutility kubectl können Sie Ihr Kubernetes-Cluster für StackGres konfigurieren. |
Informationen zu den benötigten Informationen finden Sie unter Oracle Produkte, Lösungen und Services.