Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementa un cluster CockroachDB in Amazon EKS utilizzando Terraform
Sandip Gangapadhyay e Kalyan Senthilnathan, Amazon Web Services
Riepilogo
Questo modello fornisce un modulo HashiCorp Terraform per la distribuzione di un cluster CockroachDB
Destinatari
Per implementare questo modello, ti consigliamo di conoscere quanto segue:
HashiCorp Concetti e pratiche di Terraform Infrastructure as Code (IaC)
Servizi AWS, in particolare Amazon EKS
Nozioni di base su Kubernetes, tra cui operatori e configurazioni dei StatefulSets servizi
Database SQL distribuiti
Concetti di sicurezza, come la gestione dei certificati TLS.
DevOps pratiche, CI/CD flussi di lavoro e automazione dell'infrastruttura
Prerequisiti e limitazioni
Prerequisiti
Un attivo Account AWS
Autorizzazioni per distribuire risorse in un cluster Amazon EKS
Un cluster Amazon EKS versione 1.23 o successiva, con nodi etichettati
node=cockroachdbDriver Amazon Elastic Block Store Container Storage Interface (CSI)
versione 1.19.0 o successiva, installato nel cluster Amazon EKS kubectl, installato
Git, installato
AWS Command Line Interface (AWS CLI) versione 2.9.18 o successiva, installata e configurata
Limitazioni
L'operatore CockroachDB Kubernetes non supporta più cluster Kubernetes per implementazioni multiregionali. Per ulteriori limitazioni, consulta Orchestrate CockroachDB su più cluster Kubernetes (documentazione CockroachDB) e CockroachDB
Kubernetes Operator (). GitHub L'eliminazione automatica delle dichiarazioni di PVCs volume persistenti () è attualmente disabilitata per impostazione predefinita. Ciò significa che dopo la disattivazione e la rimozione di un nodo, l'operatore non rimuoverà il volume persistente che era montato sul relativo pod. Per ulteriori informazioni, consulta Potatura automatica del PVC
nella documentazione di CockroachDB.
Versioni del prodotto
CockroachDB versione 22.2.2
Architecture
Architettura Target
Il diagramma seguente mostra un'implementazione di CockroachDB ad alta disponibilità in tre zone di AWS disponibilità all'interno di un cloud privato virtuale (VPC). I pod CockroachDB sono gestiti tramite Amazon EKS. L'architettura illustra come gli utenti accedono al database tramite un Network Load Balancer, che distribuisce il traffico ai pod CockroachDB. I pod vengono eseguiti su istanze Amazon Elastic Compute Cloud EC2 (Amazon) in ogni zona di disponibilità, il che offre resilienza e tolleranza agli errori.

Risorse create
L'implementazione del modulo Terraform utilizzato in questo modello crea le seguenti risorse:
Network Load Balancer: questa risorsa funge da punto di ingresso per le richieste dei client e distribuisce uniformemente il traffico tra le istanze CockroachDB.
CockroachDB StatefulSet: StatefulSet definisce lo stato desiderato della distribuzione di CockroachDB all'interno del cluster Amazon EKS. Gestisce la distribuzione ordinata, il ridimensionamento e gli aggiornamenti dei pod CockroachDB.
Pods CockroachDB: questi pod sono istanze di CockroachDB in esecuzione come contenitori all'interno dei pod Kubernetes. Questi pod archiviano e gestiscono i dati in tutto il cluster distribuito.
Database CockroachDB: questo è il database distribuito gestito da CockroachDB, che si estende su più pod. Replica i dati per garantire disponibilità, tolleranza agli errori e prestazioni elevate.
Tools (Strumenti)
Servizi AWS
AWS Command Line Interface (AWS CLI) è uno strumento open source che consente di interagire Servizi AWS tramite comandi nella shell della riga di comando.
Amazon Elastic Kubernetes Service (Amazon EKS) ti aiuta a eseguire AWS Kubernetes senza dover installare o gestire il tuo piano di controllo o i tuoi nodi Kubernetes.
Altri strumenti
HashiCorp Terraform
è uno strumento Infrastructure as Code (IaC) che consente di utilizzare il codice per fornire e gestire l'infrastruttura e le risorse cloud. kubectl
è un'interfaccia a riga di comando che ti aiuta a eseguire comandi sui cluster Kubernetes.
Archivio di codice
Il codice per questo pattern è disponibile nel cluster GitHub Deploy a CockroachDB in Amazon EKS
modulesfolder — Questa cartella contiene il modulo Terraform per CockroachDBmainfolder: questa cartella contiene il modulo root che chiama il modulo secondario CockroachDB per creare il cluster di database CockroachDB.
Best practice
Non ridimensionare a meno di tre nodi. Questo è considerato un anti-pattern su CockroachDB e può causare errori. Per ulteriori informazioni, consulta Cluster Scaling
nella documentazione di CockroachDB. Implementa la scalabilità automatica di Amazon EKS utilizzando Karpernter o Cluster Autoscaler. Ciò consente al cluster CockroachDB di scalare orizzontalmente e di aggiungere nuovi nodi automaticamente. Per ulteriori informazioni, consulta Scale cluster compute with Karpenter e Cluster Autoscaler nella documentazione di Amazon EKS.
Nota
Grazie alla regola di pianificazione
podAntiAffinityKubernetes, è possibile pianificare un solo pod CockroachDB in un nodo Amazon EKS.Per le best practice di sicurezza di Amazon EKS, consulta Best Practices for Security nella documentazione di Amazon EKS.
Per le best practice relative alle prestazioni SQL per CockroachDB, consulta SQL Performance Best Practices
nella documentazione di CockroachDB. Per ulteriori informazioni sulla configurazione di un backend remoto Amazon Simple Storage Service (Amazon S3) per il file di stato Terraform, consulta Amazon S3
nella documentazione di Terraform.
Epiche
| Operazione | Description | Competenze richieste |
|---|---|---|
Clona il repository del codice. | Inserisci il seguente comando per clonare il repository:
| DevOps ingegnere, Git |
Aggiorna le variabili Terraform. |
| DevOps ingegnere, Terraform |
| Operazione | Description | Competenze richieste |
|---|---|---|
Implementa l'infrastruttura. |
| DevOps ingegnere, Terraform |
| Operazione | Description | Competenze richieste |
|---|---|---|
Verifica la creazione di risorse. |
| DevOps ingegnere |
(Facoltativo) Scalabilità verso l'alto o verso il basso. |
| DevOps ingegnere, Terraform |
| Operazione | Description | Competenze richieste |
|---|---|---|
Eliminare l'infrastruttura. | La scalabilità dei nodi
| Terraform |
risoluzione dei problemi
| Problema | Soluzione |
|---|---|
Errore durante la convalida delle credenziali del provider | Quando esegui il
Questo errore è causato dalla scadenza del token di sicurezza per le credenziali utilizzate nella configurazione del computer locale. Per istruzioni su come risolvere l'errore, consulta Impostare e visualizzare le impostazioni di configurazione nella AWS CLI documentazione. |
I pod di CockroachDB sono in sospeso |
|
Risorse correlate
Distribuisci CockroachDB in un singolo cluster Kubernetes
(documentazione CockroachDB) Orchestra CockroachDB su più cluster Kubernetes (documentazione CockroachDB)
AWS Provider
(documentazione Terraform)