기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Terraform을 사용하여 Amazon EKS에 CockroachDB 클러스터 배포
Sandip Gangapadhyay 및 Kalyan Senthilnathan, Amazon Web Services
요약
이 패턴은 CockroachDB
수강 대상
이 패턴을 구현하려면 다음 사항을 숙지하는 것이 좋습니다.
HashiCorp Terraform 개념 및 코드형 인프라(IaC) 관행
AWS 서비스, 특히 Amazon EKS
StatefulSets, 연산자 및 서비스 구성을 포함한 Kubernetes 기본 사항
분산 SQL 데이터베이스
TLS 인증서 관리와 같은 보안 개념.
DevOps 사례, CI/CD 워크플로 및 인프라 자동화
사전 조건 및 제한 사항
사전 조건
제한 사항
CockroachDB Kubernetes 운영자는 다중 리전 배포를 위해 여러 Kubernetes 클러스터를 지원하지 않습니다. 자세한 제한 사항은 여러 Kubernetes 클러스터에서 CockroachDB 오케스트레이션
(CockroachDB 설명서) 및 CockroachDB Kubernetes 연산자 (GitHub)를 참조하세요. 영구 볼륨 클레임(PVCs)의 자동 정리는 현재 기본적으로 비활성화되어 있습니다. 즉, 노드를 폐기하고 제거한 후 운영자는 포드에 마운트된 영구 볼륨을 제거하지 않습니다. 자세한 내용은 CockroachDB 설명서의 자동 PVC 정리
를 참조하세요.
제품 버전
CockroachDB 버전 22.2.2
아키텍처
대상 아키텍처
다음 다이어그램은 Virtual Private Cloud(VPC) 내의 세 AWS 가용 영역에 대한 가용성이 높은 CockroachDB 배포를 보여줍니다. CockroachDB 포드는 Amazon EKS를 통해 관리됩니다. 아키텍처는 사용자가 CockroachDB 포드에 트래픽을 분산하는 Network Load Balancer를 통해 데이터베이스에 액세스하는 방법을 보여줍니다. 포드는 복원력과 내결함성을 제공하는 각 가용 영역의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 실행됩니다.

생성된 리소스
이 패턴에 사용되는 Terraform 모듈을 배포하면 다음과 같은 리소스가 생성됩니다.
Network Load Balancer -이 리소스는 클라이언트 요청의 진입점 역할을 하며 CockroachDB 인스턴스 간에 트래픽을 균등하게 분산합니다.
CockroachDB StatefulSet - StatefulSet는 Amazon EKS 클러스터 내에서 CockroachDB 배포의 원하는 상태를 정의합니다. CockroachDB 포드의 정렬된 배포, 조정 및 업데이트를 관리합니다.
CockroachDB 포드 - 이러한 포드는 Kubernetes 포드 내에서 컨테이너로 실행되는 CockroachDB의 인스턴스입니다. 이러한 포드는 분산 클러스터 전체에서 데이터를 저장하고 관리합니다.
CockroachDB 데이터베이스 - 여러 포드에 걸쳐 CockroachDB에서 관리하는 분산 데이터베이스입니다. 고가용성, 내결함성 및 성능을 위해 데이터를 복제합니다.
도구
AWS 서비스
AWS Command Line Interface (AWS CLI)는 명령줄 셸의 명령을 AWS 서비스 통해와 상호 작용하는 데 도움이 되는 오픈 소스 도구입니다.
Amazon Elastic Kubernetes Service(Amazon EKS)를 사용하면 자체 Kubernetes 컨트롤 플레인 또는 노드를 설치하거나 유지 관리할 필요 AWS 없이에서 Kubernetes를 실행할 수 있습니다.
기타 도구
HashiCorp Terraform
은 코드를 사용하여 클라우드 인프라 및 리소스를 프로비저닝하고 관리하는 데 도움이 되는 코드형 인프라(IaC) 도구입니다. kubectl
는 Kubernetes 클러스터에 대해 명령의 실행을 돕는 명령줄 인터페이스입니다.
코드 리포지토리
이 패턴의 코드는 GitHub Terraform 리포지토리를 사용하여 Amazon EKS에 CockroachDB 클러스터 배포에서
modules폴더 -이 폴더에는 CockroachDB용 Terraform 모듈이 포함되어 있습니다.main폴더 -이 폴더에는 CockroachDB 하위 모듈을 호출하여 CockroachDB 데이터베이스 클러스터를 생성하는 루트 모듈이 포함되어 있습니다.
모범 사례
노드를 3개 미만으로 축소하지 마십시오. 이는 CockroachDB에서 안티 패턴으로 간주되며 오류를 일으킬 수 있습니다. 자세한 내용은 CockroachDB 설명서의 Cluster Scaling
을 참조하세요. Karpernter 또는 Cluster Autoscaler를 사용하여 Amazon EKS Autoscaling을 구현합니다. 이렇게 하면 CockroachDB 클러스터가 수평적으로 확장되고 새 노드가 자동으로 확장됩니다. 자세한 내용은 Amazon EKS 설명서에서 Karpenter 및 Cluster Autoscaler를 사용하여 클러스터 컴퓨팅 자동 규모 조정을 참조하세요.
참고
podAntiAffinityKubernetes 예약 규칙으로 인해 하나의 Amazon EKS 노드에서 하나의 CockroachDB 포드만 예약할 수 있습니다.Amazon EKS 보안 모범 사례는 Amazon EKS 설명서의 보안 모범 사례를 참조하세요.
CockroachDB에 대한 SQL 성능 모범 사례는 CockroachDB 설명서의 SQL 성능 모범 사례를
참조하세요. Terraform 상태 파일을 위한 Amazon Simple Storage Service(Amazon S3) 원격 백엔드 설정에 대한 자세한 내용은 Terraform 설명서의 Amazon S3
를 참조하세요.
에픽
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
코드 리포지토리를 복제합니다. | 다음 명령을 입력하여 리포지토리를 복제합니다.
| DevOps 엔지니어, Git |
Terraform 변수를 업데이트합니다. |
| DevOps 엔지니어, Terraform |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
인프라를 배포합니다. |
| DevOps 엔지니어, Terraform |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
리소스 생성을 확인합니다. |
| DevOps 엔지니어 |
(선택 사항) 스케일 업 또는 스케일 다운. |
| DevOps 엔지니어, Terraform |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
인프라를 삭제합니다. | 노드를 로 확장
| Terraform |
문제 해결
| 문제 | Solution |
|---|---|
공급자 보안 인증을 검증하는 중 오류가 발생했습니다. | Terraform
이 오류는 로컬 시스템 구성에 사용된 보안 인증 정보의 보안 토큰이 만료되어 발생합니다. 오류를 해결하는 방법에 대한 지침은 AWS CLI 설명서의 구성 설정 및 보기를 참조하세요. |
보류 중인 상태의 CockroachDB 포드 |
|
관련 리소스
단일 Kubernetes 클러스터에 CockroachDB 배포
(CockroachDB 설명서) 여러 Kubernetes 클러스터에서 CockroachDB 오케스트레이션
(CockroachDB 설명서) AWS 공급자
(Terraform 설명서)
첨부
이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.