Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Optimieren Sie SQL Postgre-Bereitstellungen auf Amazon mithilfe von EKS PGO
Erstellt von Shalaka Dengale () AWS
Übersicht
Dieses Muster integriert den Postgres-Operator von Crunchy Data (PGO) mit Amazon Elastic Kubernetes Service (AmazonEKS), um Postgre-Bereitstellungen in Cloud-nativen Umgebungen zu optimieren. SQL PGObietet Automatisierung und Skalierbarkeit für die Verwaltung von Postgre-Datenbanken in Kubernetes. SQL In Kombination PGO mit Amazon EKS bildet es eine robuste Plattform für die effiziente Bereitstellung, Verwaltung und Skalierung von SQL Postgre-Datenbanken.
Diese Integration bietet die folgenden Hauptvorteile:
Automatisierte Bereitstellung: Vereinfacht die Bereitstellung und Verwaltung von SQL Postgre-Clustern.
Benutzerdefinierte Ressourcendefinitionen (CRDs): Verwendet Kubernetes-Primitive für die Postgre-Verwaltung. SQL
Hohe Verfügbarkeit: Unterstützt automatisches Failover und synchrone Replikation.
Automatisierte Backups und Wiederherstellungen: Optimiert Sicherungs- und Wiederherstellungsprozesse.
Horizontale Skalierung: Ermöglicht die dynamische Skalierung von Postgre-Clustern. SQL
Versions-Upgrades: Ermöglicht fortlaufende Upgrades mit minimalen Ausfallzeiten.
Sicherheit: Erzwingt Verschlüsselungs-, Zugriffskontrollen und Authentifizierungsmechanismen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktiver AWS-Konto.
AWSCommand Line Interface (AWSCLI) Version 2, installiert und konfiguriert unter Linux, macOS oder Windows.
AWSCLIConfig, um AWS Ressourcen über die Befehlszeile zu verbinden.
eksctl
, installiert und konfiguriert unter Linux, MacOS oder Windows. kubectl
, installiert und konfiguriert für den Zugriff auf Ressourcen in Ihrem EKS Amazon-Cluster. Weitere Informationen finden Sie in der Amazon-Dokumentation unter Kubectl und eksctl einrichten. EKSIhr Computerterminal ist für den Zugriff auf den EKS Amazon-Cluster konfiguriert. Weitere Informationen finden Sie in der EKS Amazon-Dokumentation unter Konfiguration Ihres Computers für die Kommunikation mit Ihrem Cluster.
Produktversionen
Kubernetes-Versionen 1.21—1.24 oder höher (siehe Dokumentation). PGO
Postgre-Version 10 oder höher. SQL Dieses Muster verwendet Postgre SQL Version 16.
Einschränkungen
Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie AWS-Services unter Nach Regionen
. Informationen zu bestimmten Endpunkten finden Sie auf der Seite Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.
Architektur
Zieltechnologie-Stack
Amazon EKS
Amazon Virtual Private Cloud (AmazonVPC)
Amazon Elastic Compute Cloud (AmazonEC2)
Zielarchitektur

Dieses Muster erstellt eine Architektur, die einen EKS Amazon-Cluster mit drei Knoten enthält. Jeder Knoten läuft auf einer Reihe von EC2 Instances im Backend. Dieses SQL Postgre-Setup folgt einer primären Replikatarchitektur, die besonders für leseintensive Anwendungsfälle effektiv ist. Die Architektur umfasst die folgenden Komponenten:
Der primäre Datenbankcontainer (pg-primary) hostet die SQL Postgre-Hauptinstanz, an die alle Schreibvorgänge geleitet werden.
Sekundäre Replikatcontainer (pg-replica) hosten die SQL Postgre-Instanzen, die die Daten aus der Primärdatenbank replizieren und Lesevorgänge abwickeln.
PgBouncerist ein einfacher Verbindungspooler für Postgre-Datenbanken, der in enthalten ist. SQL PGO Er befindet sich zwischen dem Client und dem SQL Postgre-Server und fungiert als Vermittler für Datenbankverbindungen.
PGOautomatisiert die Bereitstellung und Verwaltung von SQL Postgre-Clustern in dieser Kubernetes-Umgebung.
Patroni ist ein Open-Source-Tool, das Hochverfügbarkeitskonfigurationen für Postgre verwaltet und automatisiert. SQL Es ist enthalten in. PGO Wenn Sie Patroni PGO in Kubernetes verwenden, spielt es eine entscheidende Rolle bei der Sicherstellung der Widerstandsfähigkeit und Fehlertoleranz eines Postgre-Clusters. SQL Weitere Informationen finden Sie in der Patroni-Dokumentation.
Der Workflow umfasst die folgenden Schritte:
Stellen Sie den PGO Operator bereit. Sie stellen den PGO Operator auf Ihrem Kubernetes-Cluster bereit, der auf Amazon läuft. EKS Dies kann mithilfe von Kubernetes-Manifesten oder Helm-Diagrammen erfolgen. Dieses Muster verwendet Kubernetes-Manifeste.
Definieren Sie Postgre-Instanzen SQL. Wenn der Operator ausgeführt wird, erstellen Sie benutzerdefinierte Ressourcen (CRs), um den gewünschten Status der Postgre-Instanzen anzugeben. SQL Dazu gehören Konfigurationen wie Speicher-, Replikations- und Hochverfügbarkeitseinstellungen.
Bedienerverwaltung. Sie interagieren mit dem Operator über API Kubernetes-Objekte, z. B. CRs um SQL Postgre-Instanzen zu erstellen, zu aktualisieren oder zu löschen.
Überwachung und Wartung. Sie können den Zustand und die Leistung der auf Amazon EKS ausgeführten SQL Postgre-Instances überwachen. Betreiber stellen häufig Metriken und Protokollierung zu Überwachungszwecken bereit. Sie können bei Bedarf routinemäßige Wartungsaufgaben wie Upgrades und Patches durchführen. Weitere Informationen finden Sie in der EKS Amazon-Dokumentation unter Überwachen der Cluster-Leistung und Anzeigen von Protokollen.
Skalierung und Sicherung: Sie können die vom Betreiber bereitgestellten Funktionen verwenden, um SQL Postgre-Instances zu skalieren und Backups zu verwalten.
Dieses Muster deckt keine Überwachungs-, Wartungs- und Sicherungsvorgänge ab.
Automatisierung und Skalierung
Sie können es verwenden AWS CloudFormation , um die Erstellung der Infrastruktur zu automatisieren. Weitere Informationen finden Sie AWS CloudFormation in der EKSAmazon-Dokumentation unter EKS Amazon-Ressourcen erstellen mit.
Sie können Build Numbers GitVersion oder Jenkins verwenden, um die Bereitstellung von Datenbank-Instances zu automatisieren.
Tools
AWS-Services
Mit Amazon Elastic Kubernetes Service (AmazonEKS) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell interagieren AWS-Services können.
Andere Tools
Bewährte Methoden
Folgen Sie diesen Best Practices, um eine reibungslose und effiziente Bereitstellung zu gewährleisten:
Schützen Sie Ihren EKS Cluster. Implementieren Sie bewährte Sicherheitsmethoden für Ihren EKS Cluster, z. B. die Verwendung von AWS Identity and Access Management (IAM) Rollen für Dienstkonten (IRSA), Netzwerkrichtlinien und VPC Sicherheitsgruppen. Beschränken Sie den Zugriff auf den EKS API Clusterserver und verschlüsseln Sie die Kommunikation zwischen Knoten und API Server mithilfe TLS von.
Stellen Sie die Versionskompatibilität zwischen PGO und Kubernetes, das auf Amazon läuft, sicher. EKS Einige PGO Funktionen erfordern möglicherweise bestimmte Kubernetes-Versionen oder führen zu Kompatibilitätseinschränkungen. Weitere Informationen finden Sie in der Dokumentation unter Komponenten und Kompatibilität
. PGO Planen Sie die Ressourcenzuweisung für Ihre PGO BereitstellungCPU, einschließlich Arbeitsspeicher und Speicher. Berücksichtigen Sie die Ressourcenanforderungen beider Instanzen PGO und der von ihr verwalteten SQL Postgre-Instanzen. Überwachen Sie die Ressourcennutzung und skalieren Sie die Ressourcen nach Bedarf.
Design für hohe Verfügbarkeit. Gestalten Sie Ihre PGO Bereitstellung auf Hochverfügbarkeit, um Ausfallzeiten zu minimieren und Zuverlässigkeit zu gewährleisten. Stellen Sie aus Gründen der Fehlertoleranz mehrere Replikate PGO in mehreren Availability Zones bereit.
Implementieren Sie Sicherungs- und Wiederherstellungsverfahren für Ihre SQL Postgre-Datenbanken, die PGO verwaltet werden. Verwenden Sie Funktionen von Backup-Lösungen PGO oder Drittanbietern, die mit Kubernetes und Amazon kompatibel sind. EKS
Richten Sie die Überwachung und Protokollierung für Ihre PGO Bereitstellung ein, um Leistung, Zustand und Ereignisse zu verfolgen. Verwenden Sie Tools wie Prometheus für die Überwachung von Metriken und Grafana für die Visualisierung. Konfigurieren Sie die Protokollierung so, dass PGO Protokolle zur Fehlerbehebung und Prüfung erfasst werden.
Konfigurieren Sie das Netzwerk ordnungsgemäßPGO, um die Kommunikation zwischen SQL Postgre-Instanzen und anderen Diensten in Ihrem Kubernetes-Cluster zu ermöglichen. Verwenden Sie VPC Amazon-Netzwerkfunktionen und Kubernetes-Netzwerk-Plugins wie Calico oder Amazon VPC CNI
für die Durchsetzung von Netzwerkrichtlinien und die Isolierung des Datenverkehrs. Wählen Sie geeignete Speicheroptionen für Ihre SQL Postgre-Datenbanken und berücksichtigen Sie dabei Faktoren wie Leistung, Haltbarkeit und Skalierbarkeit. Verwenden Sie Amazon Elastic Block Store (AmazonEBS) -Volumes oder AWS verwaltete Speicherdienste für persistenten Speicher. Weitere Informationen finden Sie unter Speichern von Kubernetes-Volumes bei Amazon EBS in der EKS Amazon-Dokumentation.
Verwenden Sie Infrastructure-as-Code-Tools (IaC) AWS CloudFormation , um beispielsweise die Bereitstellung und Konfiguration von PGO auf Amazon EKS zu automatisieren. Definieren Sie Infrastrukturkomponenten — einschließlich EKS Cluster, Netzwerk und PGO Ressourcen — als Code, um Konsistenz, Wiederholbarkeit und Versionskontrolle zu gewährleisten.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine IAM-Rolle. |
| AWS-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie einen EKS Amazon-Cluster. | Wenn Sie bereits einen Cluster bereitgestellt haben, überspringen Sie diesen Schritt. Andernfalls stellen Sie einen EKS Amazon-Cluster in Ihrem aktuellen mithilfe AWS-Konto AnmerkungDieses Muster verwendet Amazon EC2 als Knotengruppe für AmazonEKS. Wenn Sie es verwenden möchten AWS Fargate, sehen Sie sich die
| AWSAdministrator, Terraform- oder ekctl-Administrator, Kubernetes-Administrator |
Überprüfen Sie den Status des Clusters. | Führen Sie den folgenden Befehl aus, um den aktuellen Status der Knoten im Cluster zu überprüfen:
Wenn Sie auf Fehler stoßen, lesen Sie den Abschnitt zur Fehlerbehebung in der EKS Amazon-Dokumentation. | AWSAdministrator, Terraform- oder ekctl-Administrator, Kubernetes-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Aktivieren Sie den IAM OIDC Anbieter. | Als Voraussetzung für den Amazon EBS Container Storage Interface (CSI) -Treiber benötigen Sie einen vorhandenen IAM OpenID Connect (OIDC) -Anbieter für Ihren Cluster. Aktivieren Sie den IAM OIDC Anbieter mit dem folgenden Befehl:
Weitere Informationen zu diesem Schritt finden Sie in der EKSAmazon-Dokumentation. | AWS-Administrator |
Erstellen Sie eine IAM Rolle für den EBS CSI Amazon-Treiber. | Verwenden Sie den folgenden
Wenn Sie verschlüsselte EBS Amazon-Laufwerke verwenden, müssen Sie die Richtlinie weiter konfigurieren. Anweisungen finden Sie in der EBSSCIAmazon-Treiberdokumentation | AWS-Administrator |
Fügen Sie den EBS CSI Amazon-Treiber hinzu. | Verwenden Sie den folgenden
| AWS-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das PGO Repository. | Klonen Sie das GitHub Repository fürPGO:
| AWS DevOps |
Geben Sie die Rollendetails für die Erstellung des Dienstkontos an. | Um dem EKS Amazon-Cluster Zugriff auf die erforderlichen AWS Ressourcen zu gewähren, geben Sie den Amazon-Ressourcennamen (ARN) der OIDC Rolle an, die Sie zuvor in der
| AWSAdministrator, Kubernetes-Administrator |
Erstellen Sie den Namespace und die Voraussetzungen. PGO |
| Kunernetes-Administrator |
Überprüfen Sie die Erstellung von Pods. | Stellen Sie sicher, dass der Namespace und die Standardkonfiguration erstellt wurden:
| AWSAdministrator, Kubernetes-Administrator |
Überprüfen. PVCs | Verwenden Sie den folgenden Befehl, um Ansprüche auf persistente Volumes (PVCs) zu überprüfen:
| AWSAdministrator, Kubernetes-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie einen Operator. | Überarbeiten Sie den Inhalt der Datei unter
Diese Updates bewirken Folgendes:
| AWSAdministrator, DBA Kubernetes-Administrator |
Stellen Sie den Operator bereit. | Stellen Sie den PGO Operator bereit, um die Verwaltung und den Betrieb von SQL Postgre-Datenbanken in Kubernetes-Umgebungen zu optimieren:
| AWSAdministrator, Kubernetes-Administrator DBA |
Überprüfen Sie die Bereitstellung. |
Notieren Sie sich in der Befehlsausgabe das primäre Replikat ( | AWSAdministratorDBA, Kubernetes-Administrator |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Schreiben Sie Daten in das primäre Replikat. | Verwenden Sie die folgenden Befehle, um eine Verbindung zum SQL primären Postgre-Replikat herzustellen und Daten in die Datenbank zu schreiben:
| AWSAdministrator, Kubernetes-Administrator |
Vergewissern Sie sich, dass die Read Replica dieselben Daten enthält. | Connect zur SQL Postgre-Read Replica her und überprüfen Sie, ob die Streaming-Replikation ordnungsgemäß funktioniert:
Die Read Replica sollte die Tabelle enthalten, die Sie im vorherigen Schritt im primären Replikat erstellt haben. | AWSAdministrator, Kubernetes-Administrator |
Fehlerbehebung
Problem | Lösung |
---|---|
Der Pod startet nicht. |
|
Replikate liegen deutlich hinter der Primärdatenbank zurück. |
|
Sie haben keinen Einblick in die Leistung und den Zustand des SQL Postgre-Clusters. |
|
Die Replikation funktioniert nicht. |
|
Zugehörige Ressourcen
Amazon Elastic Kubernetes Service (Überblick über die Bereitstellungsoptionen im AWS Whitepaper)
AWS CloudFormation(Überblick über die Bereitstellungsoptionen im Whitepaper) AWS
Erste Schritte mit Amazon EKS — eksctl (EKSAmazon-Benutzerhandbuch)
Kubectl und eksctl einrichten (Amazon-Benutzerhandbuch) EKS
Eine Rolle für den OpenID Connect-Verbund erstellen (IAMBenutzerhandbuch)
Konfiguration der Einstellungen für das AWS CLI (AWS CLI Benutzerhandbuch)