Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Optimieren Sie SQL Postgre-Bereitstellungen auf Amazon mithilfe von EKS PGO - AWS Prescriptive Guidance

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.

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

Produktversionen

Einschränkungen

Architektur

Zieltechnologie-Stack

  • Amazon EKS

  • Amazon Virtual Private Cloud (AmazonVPC)

  • Amazon Elastic Compute Cloud (AmazonEC2)

Zielarchitektur

Architektur für die Verwendung PGO mit drei Availability Zones und zwei Replikaten PgBouncer, und PGO Operator.

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

Andere Tools

  • eksctl ist ein einfaches Befehlszeilentool zum Erstellen von Clustern auf Amazon. EKS

  • kubectl ist ein Befehlszeilenprogramm zum Ausführen von Befehlen für Kubernetes-Cluster.

  • PGOautomatisiert und skaliert die Verwaltung von Postgre-Datenbanken in Kubernetes. SQL

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

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine IAM-Rolle.

  1. Erstellen Sie eine IAM Rolle mit dem folgenden Befehl in AWS CLI:

    aws iam create-role \ --role-name {YourRoleName} \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }' && \ aws iam attach-role-policy \ --role-name {YourRoleName}\ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy && \ aws iam attach-role-policy \ --role-name {YourRoleName}\ --policy-arn arn:aws:iam::aws:policy/AmazonEKSServicePolicy && \ aws iam attach-role-policy \ --role-name {YourRoleName}\ --policy-arn arn:aws:iam::aws:policy/CloudWatchFullAccess
  2. Überprüfen Sie die Rolle in AWS Management Console:

    1. Öffnen Sie die IAM-Konsole.

    2. Wählen Sie Rollen und suchen Sie nach dem Rollennamen, den Sie erstellt haben.

    3. Vergewissern Sie sich, dass die folgenden Richtlinien beigefügt sind:

      AmazonEKSClusterPolicy

      AmazonEKSServicePolicy

      CloudWatchFullAccess

AWS-Administrator

Erstellen Sie eine IAM-Rolle

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine IAM-Rolle.

  1. Erstellen Sie eine IAM Rolle mit dem folgenden Befehl in AWS CLI:

    aws iam create-role \ --role-name {YourRoleName} \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }' && \ aws iam attach-role-policy \ --role-name {YourRoleName}\ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy && \ aws iam attach-role-policy \ --role-name {YourRoleName}\ --policy-arn arn:aws:iam::aws:policy/AmazonEKSServicePolicy && \ aws iam attach-role-policy \ --role-name {YourRoleName}\ --policy-arn arn:aws:iam::aws:policy/CloudWatchFullAccess
  2. Überprüfen Sie die Rolle in AWS Management Console:

    1. Öffnen Sie die IAM-Konsole.

    2. Wählen Sie Rollen und suchen Sie nach dem Rollennamen, den Sie erstellt haben.

    3. Vergewissern Sie sich, dass die folgenden Richtlinien beigefügt sind:

      AmazonEKSClusterPolicy

      AmazonEKSServicePolicy

      CloudWatchFullAccess

AWS-Administrator
AufgabeBeschreibungErforderliche 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 ekctl von Terraform oder bereit. AWS CloudFormation Dieses Muster wird ekctl für die Cluster-Bereitstellung verwendet.

Anmerkung

Dieses Muster verwendet Amazon EC2 als Knotengruppe für AmazonEKS. Wenn Sie es verwenden möchten AWS Fargate, sehen Sie sich die managedNodeGroups Konfiguration in der eksctl-Dokumentation an.

  1. Verwenden Sie die folgende ekctl Eingabedatei, um den Cluster zu generieren.

    sample-cluster.yaml:

    apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: postgresql region: us-east-1 version: "1.29" accessConfig: authenticationMode: API_AND_CONFIG_MAP availabilityZones: - us-east-1a - us-east-1b - us-east-1c nodeGroups: - name: ng-1 instanceType: m5.16xlarge desiredCapacity: 2 - name: ng-2 instanceType: m5.16xlarge desiredCapacity: 2 - name: ng-3 instanceType: m5.16xlarge desiredCapacity: 2 vpc: cidr: 192.168.0.0/16 clusterEndpoints: publicAccess: true nat: gateway: HighlyAvailable iamIdentityMappings: - arn: arn:aws:iam::<account-id>:role/<role-name> # update the IAM role ARN created in step 1 username: <user-name> # Enter the user name per your choice noDuplicateARNs: false
  2. Führen Sie den folgenden Befehl aus, um den Cluster zu erstellen (geben Sie den Dateipfad zu Ihrer sample-cluster.yaml Datei an):

    eksctl create cluster -f sample-cluster.yaml
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:

kubectl get nodes

Wenn Sie auf Fehler stoßen, lesen Sie den Abschnitt zur Fehlerbehebung in der EKS Amazon-Dokumentation.

AWSAdministrator, Terraform- oder ekctl-Administrator, Kubernetes-Administrator

Erstellen Sie einen EKS Amazon-Cluster

AufgabeBeschreibungErforderliche 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 ekctl von Terraform oder bereit. AWS CloudFormation Dieses Muster wird ekctl für die Cluster-Bereitstellung verwendet.

Anmerkung

Dieses Muster verwendet Amazon EC2 als Knotengruppe für AmazonEKS. Wenn Sie es verwenden möchten AWS Fargate, sehen Sie sich die managedNodeGroups Konfiguration in der eksctl-Dokumentation an.

  1. Verwenden Sie die folgende ekctl Eingabedatei, um den Cluster zu generieren.

    sample-cluster.yaml:

    apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: postgresql region: us-east-1 version: "1.29" accessConfig: authenticationMode: API_AND_CONFIG_MAP availabilityZones: - us-east-1a - us-east-1b - us-east-1c nodeGroups: - name: ng-1 instanceType: m5.16xlarge desiredCapacity: 2 - name: ng-2 instanceType: m5.16xlarge desiredCapacity: 2 - name: ng-3 instanceType: m5.16xlarge desiredCapacity: 2 vpc: cidr: 192.168.0.0/16 clusterEndpoints: publicAccess: true nat: gateway: HighlyAvailable iamIdentityMappings: - arn: arn:aws:iam::<account-id>:role/<role-name> # update the IAM role ARN created in step 1 username: <user-name> # Enter the user name per your choice noDuplicateARNs: false
  2. Führen Sie den folgenden Befehl aus, um den Cluster zu erstellen (geben Sie den Dateipfad zu Ihrer sample-cluster.yaml Datei an):

    eksctl create cluster -f sample-cluster.yaml
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:

kubectl get nodes

Wenn Sie auf Fehler stoßen, lesen Sie den Abschnitt zur Fehlerbehebung in der EKS Amazon-Dokumentation.

AWSAdministrator, Terraform- oder ekctl-Administrator, Kubernetes-Administrator
AufgabeBeschreibungErforderliche 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:

eksctl utils associate-iam-oidc-provider --region={region} --cluster={YourClusterNameHere} --approve

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 eksctl Befehl, um die IAM Rolle für den CSI Treiber zu erstellen:

eksctl create iamserviceaccount \ --region {RegionName} \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster {YourClusterNameHere} \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve \ --role-only \ --role-name AmazonEKS_EBS_CSI_DriverRole

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 eksctl Befehl, um den EBS CSI Amazon-Treiber hinzuzufügen:

eksctl create addon \ --name aws-ebs-csi-driver \ --cluster <YourClusterName> service-account-role-arn arn:aws:iam::$(aws sts get-caller-identity \ --query Account \ --output text):role/AmazonEKS_EBS_CSI_DriverRole \ --force
AWS-Administrator

OIDCErstellen Sie einen Identitätsanbieter

AufgabeBeschreibungErforderliche 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:

eksctl utils associate-iam-oidc-provider --region={region} --cluster={YourClusterNameHere} --approve

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 eksctl Befehl, um die IAM Rolle für den CSI Treiber zu erstellen:

eksctl create iamserviceaccount \ --region {RegionName} \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster {YourClusterNameHere} \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve \ --role-only \ --role-name AmazonEKS_EBS_CSI_DriverRole

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 eksctl Befehl, um den EBS CSI Amazon-Treiber hinzuzufügen:

eksctl create addon \ --name aws-ebs-csi-driver \ --cluster <YourClusterName> service-account-role-arn arn:aws:iam::$(aws sts get-caller-identity \ --query Account \ --output text):role/AmazonEKS_EBS_CSI_DriverRole \ --force
AWS-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das PGO Repository.

Klonen Sie das GitHub Repository fürPGO:

git clone https://github.com/CrunchyData/postgres-operator-examples.git
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 service_account.yaml Datei erstellt haben. Diese Datei befindet sich im Namespace-Ordner des Repositorys.

cd postgres-operator-examples
--- metadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::<accountId>:role/<role_name> # Update the OIDC role ARN created earlier
AWSAdministrator, Kubernetes-Administrator

Erstellen Sie den Namespace und die Voraussetzungen. PGO

  1. Führen Sie den folgenden Befehl aus, um den Namespace zu erstellen:

    kubectl apply -k kustomize/install/namespace

    Dadurch wird ein dedizierter Namespace für eingerichtet. PGO Bei Bedarf können Sie die namespace.yml Datei ändern und dem Namespace einen anderen Namen zuweisen.

  2. Führen Sie den folgenden Befehl aus, um die Standardkonfiguration auf den Cluster anzuwenden:

    kubectl apply --server-side -k kustomize/install/default

    kustomize/install/defaultstellt die Standardkonfiguration für die rollenbasierte Zugriffskontrolle (RBAC) von Kubernetes, die benutzerdefinierte Ressourcendefinition (CRD) und die Kubernetes Manager-Dateien bereit.

Kunernetes-Administrator

Überprüfen Sie die Erstellung von Pods.

Stellen Sie sicher, dass der Namespace und die Standardkonfiguration erstellt wurden:

kubectl get pods -n postgres-operator
AWSAdministrator, Kubernetes-Administrator

Überprüfen. PVCs

Verwenden Sie den folgenden Befehl, um Ansprüche auf persistente Volumes (PVCs) zu überprüfen:

kubectl describe pvc -n postgres-operator
AWSAdministrator, Kubernetes-Administrator

Installieren PGO

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das PGO Repository.

Klonen Sie das GitHub Repository fürPGO:

git clone https://github.com/CrunchyData/postgres-operator-examples.git
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 service_account.yaml Datei erstellt haben. Diese Datei befindet sich im Namespace-Ordner des Repositorys.

cd postgres-operator-examples
--- metadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::<accountId>:role/<role_name> # Update the OIDC role ARN created earlier
AWSAdministrator, Kubernetes-Administrator

Erstellen Sie den Namespace und die Voraussetzungen. PGO

  1. Führen Sie den folgenden Befehl aus, um den Namespace zu erstellen:

    kubectl apply -k kustomize/install/namespace

    Dadurch wird ein dedizierter Namespace für eingerichtet. PGO Bei Bedarf können Sie die namespace.yml Datei ändern und dem Namespace einen anderen Namen zuweisen.

  2. Führen Sie den folgenden Befehl aus, um die Standardkonfiguration auf den Cluster anzuwenden:

    kubectl apply --server-side -k kustomize/install/default

    kustomize/install/defaultstellt die Standardkonfiguration für die rollenbasierte Zugriffskontrolle (RBAC) von Kubernetes, die benutzerdefinierte Ressourcendefinition (CRD) und die Kubernetes Manager-Dateien bereit.

Kunernetes-Administrator

Überprüfen Sie die Erstellung von Pods.

Stellen Sie sicher, dass der Namespace und die Standardkonfiguration erstellt wurden:

kubectl get pods -n postgres-operator
AWSAdministrator, Kubernetes-Administrator

Überprüfen. PVCs

Verwenden Sie den folgenden Befehl, um Ansprüche auf persistente Volumes (PVCs) zu überprüfen:

kubectl describe pvc -n postgres-operator
AWSAdministrator, Kubernetes-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen Operator.

Überarbeiten Sie den Inhalt der Datei unter/kustomize/postgres/postgres.yaml, sodass er den folgenden Kriterien entspricht:

spec: instances: - name: pg-1 replicas: 3 patroni: dynamicConfiguration: postgresql: pg_hba: - "host all all 0.0.0.0/0 trust" # this line enabled logical replication with programmatic access - "host all postgres 127.0.0.1/32 md5" synchronous_mode: true users: - name: replicator databases: - testdb options: "REPLICATION"

Diese Updates bewirken Folgendes:

  • Passen Sie die SQL Postgre-Konfigurationseinstellungen an, um den Zugriff auf die Postgre-Instanz zu erleichtern. SQL

  • Fügen Sie Konfigurationen für Replikationsbenutzer, Datenbankbenutzer und Superuser hinzu, um Streaming-Replikation, Datenbankzugriff und Clustermanagement zu ermöglichen.

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:

kubectl apply -k kustomize/postgres
AWSAdministrator, Kubernetes-Administrator DBA

Überprüfen Sie die Bereitstellung.

  1. Stellen Sie sicher, dass der Operator bereitgestellt wurde:

    kubectl get pods -n postgres-operator --selector=postgres-operator.crunchydata.com/instance-set \ -L postgres-operator.crunchydata.com/role
  2. Stellen Sie sicher, dass die dem Operator-Pod zugeordnete Dienstressource erstellt wurde:

    kubectl get svc -n postgres-operator

Notieren Sie sich in der Befehlsausgabe das primäre Replikat (primary_pod_name) und das Lesereplikat (read_pod_name). Sie werden diese in den nächsten Schritten verwenden.

AWSAdministratorDBA, Kubernetes-Administrator

Einen Operator erstellen und bereitstellen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen Operator.

Überarbeiten Sie den Inhalt der Datei unter/kustomize/postgres/postgres.yaml, sodass er den folgenden Kriterien entspricht:

spec: instances: - name: pg-1 replicas: 3 patroni: dynamicConfiguration: postgresql: pg_hba: - "host all all 0.0.0.0/0 trust" # this line enabled logical replication with programmatic access - "host all postgres 127.0.0.1/32 md5" synchronous_mode: true users: - name: replicator databases: - testdb options: "REPLICATION"

Diese Updates bewirken Folgendes:

  • Passen Sie die SQL Postgre-Konfigurationseinstellungen an, um den Zugriff auf die Postgre-Instanz zu erleichtern. SQL

  • Fügen Sie Konfigurationen für Replikationsbenutzer, Datenbankbenutzer und Superuser hinzu, um Streaming-Replikation, Datenbankzugriff und Clustermanagement zu ermöglichen.

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:

kubectl apply -k kustomize/postgres
AWSAdministrator, Kubernetes-Administrator DBA

Überprüfen Sie die Bereitstellung.

  1. Stellen Sie sicher, dass der Operator bereitgestellt wurde:

    kubectl get pods -n postgres-operator --selector=postgres-operator.crunchydata.com/instance-set \ -L postgres-operator.crunchydata.com/role
  2. Stellen Sie sicher, dass die dem Operator-Pod zugeordnete Dienstressource erstellt wurde:

    kubectl get svc -n postgres-operator

Notieren Sie sich in der Befehlsausgabe das primäre Replikat (primary_pod_name) und das Lesereplikat (read_pod_name). Sie werden diese in den nächsten Schritten verwenden.

AWSAdministratorDBA, Kubernetes-Administrator
AufgabeBeschreibungErforderliche 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:

kubectl exec -it <primary_pod_name> bash -n postgres-operator
psql
CREATE TABLE customers (firstname text, customer_id serial, date_created timestamp); \dt
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:

kubectl exec -it {read_pod_name} bash -n postgres-operator
psql
\dt

Die Read Replica sollte die Tabelle enthalten, die Sie im vorherigen Schritt im primären Replikat erstellt haben.

AWSAdministrator, Kubernetes-Administrator

Überprüfen Sie die Streaming-Replikation

AufgabeBeschreibungErforderliche 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:

kubectl exec -it <primary_pod_name> bash -n postgres-operator
psql
CREATE TABLE customers (firstname text, customer_id serial, date_created timestamp); \dt
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:

kubectl exec -it {read_pod_name} bash -n postgres-operator
psql
\dt

Die Read Replica sollte die Tabelle enthalten, die Sie im vorherigen Schritt im primären Replikat erstellt haben.

AWSAdministrator, Kubernetes-Administrator

Fehlerbehebung

ProblemLösung

Der Pod startet nicht.

  • Verwenden Sie den folgenden Befehl, um den Pod-Status zu überprüfen:

    kubectl get pods -n your-namespace
  • Untersuchen Sie die Protokolle auf Fehler:

    kubectl logs your-pod-name -n your-namespace
  • Überprüfen Sie die Pod-Ereignisse auf ungewöhnliche Ereignisse im Zusammenhang mit Ihren Pods:

    kubectl describe pod your-pod-name -n your-namespace

Replikate liegen deutlich hinter der Primärdatenbank zurück.

  • Prüfen Sie, ob die Replikation verzögert ist:

    SELECT * FROM pg_stat_replication;
  • Stellen Sie sicher, dass die Replikate über ausreichend CPU Speicherressourcen verfügen. Überprüfen Sie die Ressourcenlimits:

    kubectl describe pod your-replica-pod -n your-namespace
  • Stellen Sie sicher, dass das Speicher-Backend optimal funktioniert. Langsames Festplatten-I/O kann zu Verzögerungen bei der Replikation führen.

Sie haben keinen Einblick in die Leistung und den Zustand des SQL Postgre-Clusters.

  • Aktivieren Sie Amazon CloudWatch Logs und stellen Sie sicher, dass die Protokolle CloudWatch zur Analyse an Amazon gesendet werden. Weitere Informationen finden Sie in der EKSAmazon-Dokumentation.

  • Prüfen Sie pg_stat_activity:

    SELECT * FROM pg_stat_activity;

Die Replikation funktioniert nicht.

  • Überprüfen Sie die Primärkonfiguration, indem Sie sich die Replikationseinstellungen ansehen unterpostgresql.conf:

    wal_level = replica
    max_wal_senders = 10
    wal_keep_size = 64 # or wal_keep_segments in older versions
  • Stellen Sie sicher, dass dies Replikationsberechtigungen pg_hba.conf beinhaltet:

    host replication replica_user all md5
  • Überprüfen Sie die Replikatkonfiguration. Vergewissern Sie sich, dass die recovery.conf oder die entsprechenden Einstellungen (standby.signalundprimary_conninfo) auf den Replikaten korrekt eingerichtet sind.

Zugehörige Ressourcen

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.