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.
Stellen Sie mithilfe von Terraform einen CockroachDB-Cluster in Amazon EKS bereit
Sandip Gangapadhyay und Kalyan Senthilnathan, Amazon Web Services
Zusammenfassung
Dieses Muster bietet ein HashiCorp Terraform-Modul für die Bereitstellung eines CockroachDB-Clusters mit mehreren Knoten auf Amazon Elastic Kubernetes Service (Amazon EKS) mithilfe des CockroachDB-Operators
Zielpublikum
Um dieses Muster zu implementieren, empfehlen wir, dass Sie mit den folgenden Informationen vertraut sind:
HashiCorp Terraform-Konzepte und IaC-Praktiken (Infrastructure-as-Code)
AWS-Services, insbesondere Amazon EKS
Grundlagen von Kubernetes StatefulSets, einschließlich Betreiber und Servicekonfigurationen
Verteilte SQL-Datenbanken
Sicherheitskonzepte wie die Verwaltung von TLS-Zertifikaten.
DevOps Praktiken, CI/CD Workflows und Infrastrukturautomatisierung
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktiver AWS-Konto
Berechtigungen zur Bereitstellung von Ressourcen in einem Amazon EKS-Cluster
Ein Amazon EKS-Cluster, Version v1.23 oder höher, mit beschrifteten Knoten
node=cockroachdbAmazon Elastic Block Store Container Storage Interface (CSI) -Treiberversion
1.19.0 oder höher, installiert im Amazon EKS-Cluster Git, installiert
AWS Command Line Interface (AWS CLI) Version 2.9.18 oder höher, installiert und konfiguriert
Einschränkungen
Der CockroachDB-Kubernetes-Operator unterstützt nicht mehrere Kubernetes-Cluster für Bereitstellungen in mehreren Regionen. Weitere Einschränkungen finden Sie unter CockroachDB über mehrere Kubernetes-Cluster orchestrieren (CockroachDB-Dokumentation) und CockroachDB Kubernetes Operator ()
. GitHub Das automatische Löschen persistenter Volumenansprüche () ist derzeit standardmäßig deaktiviert. PVCs Das bedeutet, dass der Betreiber nach der Außerbetriebnahme und Entfernung eines Nodes das persistente Volume, das auf seinem Pod installiert war, nicht entfernt. Weitere Informationen finden Sie unter Automatisches Beschneiden von PVC
in der CockroachDB-Dokumentation.
Produktversionen
CockroachDB Version 22.2.2
Architektur
Zielarchitektur
Das folgende Diagramm zeigt eine hochverfügbare CockroachDB-Bereitstellung in drei AWS Availability Zones innerhalb einer Virtual Private Cloud (VPC). Die CockroachDB-Pods werden über Amazon EKS verwaltet. Die Architektur veranschaulicht, wie Benutzer über einen Network Load Balancer auf die Datenbank zugreifen, der den Datenverkehr auf die CockroachDB-Pods verteilt. Die Pods werden auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances in jeder Availability Zone ausgeführt, was Stabilität und Fehlertoleranz bietet.

Ressourcen erstellt
Durch die Bereitstellung des in diesem Muster verwendeten Terraform-Moduls werden die folgenden Ressourcen erstellt:
Network Load Balancer — Diese Ressource dient als Einstiegspunkt für Client-Anfragen und verteilt den Verkehr gleichmäßig auf die CockroachDB-Instanzen.
CockroachDB StatefulSet — StatefulSet Definiert den gewünschten Status der CockroachDB-Bereitstellung innerhalb des Amazon EKS-Clusters. Es verwaltet die geordnete Bereitstellung, Skalierung und Aktualisierung von CockroachDB-Pods.
CockroachDB-Pods — Diese Pods sind Instanzen von CockroachDB, die als Container innerhalb von Kubernetes-Pods ausgeführt werden. Diese Pods speichern und verwalten die Daten im gesamten verteilten Cluster.
CockroachDB-Datenbank — Dies ist die verteilte Datenbank, die von CockroachDB verwaltet wird und sich über mehrere Pods erstreckt. Sie repliziert Daten für hohe Verfügbarkeit, Fehlertoleranz und Leistung.
Tools
AWS-Services
AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
Mit Amazon Elastic Kubernetes Service (Amazon EKS) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
Andere Tools
HashiCorp Terraform
ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. kubectl
ist eine Befehlszeilenschnittstelle, mit der Sie Befehle für Kubernetes-Cluster ausführen können.
Code-Repository
Der Code für dieses Muster ist im Repository GitHub Deploy a CockroachDB in Amazon EKS using
modulesOrdner — Dieser Ordner enthält das Terraform-Modul für CockroachDBmainOrdner — Dieser Ordner enthält das Root-Modul, das das untergeordnete CockroachDB-Modul aufruft, um den CockroachDB-Datenbankcluster zu erstellen.
Best Practices
Skalieren Sie nicht auf weniger als drei Knoten herunter. Dies wird auf CockroachDB als Anti-Pattern angesehen und kann zu Fehlern führen. Weitere Informationen finden Sie unter Cluster Scaling
in der CockroachDB-Dokumentation. Implementieren Sie Amazon EKS-Autoscaling mithilfe von Karpernter oder Cluster Autoscaler. Dadurch kann der CockroachDB-Cluster horizontal skaliert und neue Knoten automatisch hinzugefügt werden. Weitere Informationen finden Sie unter Skalieren von Cluster-Berechnungen mit Karpenter und Cluster Autoscaler in der Amazon EKS-Dokumentation.
Anmerkung
Aufgrund der
podAntiAffinityKubernetes-Planungsregel kann nur ein CockroachDB-Pod in einem Amazon EKS-Knoten geplant werden.Bewährte Sicherheitsmethoden für Amazon EKS finden Sie unter Bewährte Sicherheitsmethoden in der Amazon EKS-Dokumentation.
Bewährte Methoden zur SQL-Leistung für CockroachDB finden Sie unter Bewährte Methoden zur SQL-Leistung
in der CockroachDB-Dokumentation. Weitere Informationen zur Einrichtung eines Amazon Simple Storage Service (Amazon S3) -Remote-Backends für die Terraform-Statusdatei finden Sie unter Amazon S3
in der Terraform-Dokumentation.
Epen
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Klonen Sie das Code-Repository. | Geben Sie den folgenden Befehl ein, um das Repository zu klonen:
| DevOps Ingenieur, Git |
Aktualisieren Sie die Terraform-Variablen. |
| DevOps Ingenieur, Terraform |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Stellen Sie die Infrastruktur bereit. |
| DevOps Ingenieur, Terraform |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Überprüfen Sie die Erstellung von Ressourcen. |
| DevOps Ingenieur |
(Optional) Skalieren Sie nach oben oder unten. |
| DevOps Ingenieur, Terraform |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Löschen Sie die Infrastruktur. | Durch die Skalierung der Knoten auf
| Terraform |
Fehlerbehebung
| Problem | Lösung |
|---|---|
Fehler beim Überprüfen der Anbieteranmeldedaten | Wenn Sie den Terraform
Dieser Fehler wird durch den Ablauf des Sicherheitstokens für die in der Konfiguration Ihres lokalen Computers verwendeten Anmeldeinformationen verursacht. Anweisungen zur Behebung des Fehlers finden Sie in der AWS CLI Dokumentation unter Konfigurationseinstellungen einrichten und anzeigen. |
CockroachDB-Pods befinden sich im Status „Ausstehend“ |
|
Zugehörige Ressourcen
Stellen Sie CockroachDB in einem einzigen Kubernetes-Cluster
bereit (CockroachDB-Dokumentation) Orchestrieren
Sie CockroachDB über mehrere Kubernetes-Cluster hinweg (CockroachDB-Dokumentation) AWS Anbieter
(Terraform-Dokumentation)