아르카디우스 보루키의 업무는 다음과 같습니다. a Amadeus의 사이트 안정성 엔지니어로 NoSQL 데이터베이스 및 자동화에 중점을 두고 있습니다. 일상적인 업무에서 Couchbase, MongoDB, Oracle, Python, Ansible을 사용합니다. 자칭 빅데이터 애호가이며 데이터 저장소 기술, 분산 시스템, 분석 및 자동화에 관심이 많습니다. 미국과 유럽의 여러 컨퍼런스와 사용자 그룹에서 연사로 활동하고 있습니다. 트위터에서 그를 찾을 수 있습니다. @_Aras_B

pasted image 0 1

동기 부여: 인프라를 코드로 사용해야 하는 이유

많은 IT 팀이 여전히 수동 구성에 의존하여 인프라를 관리하고 있으며, 오래된 절차 및 오래된 셸 스크립트를 여전히 사용하고 있습니다.

때때로 한 팀의 구성원이 동일한 데이터베이스 팜에 서로 다른 절차와 스크립트를 사용하는 경우가 있습니다. 이러한 사람들은 지식이나 팁을 공유하지 않고 회사를 떠날 수도 있습니다. 이러한 접근 방식은 문제, 오류, 느린 배포 및 일관성 없는 환경을 초래합니다.

서버 팜은 점점 더 커지고 있으며 데이터 크기는 기가바이트에서 테라 또는 페타바이트로 증가하고 있습니다. 단일 머신으로는 더 이상 이 정도의 데이터를 처리할 수 없습니다. 따라서 데이터베이스를 수평적으로 확장하고, 더 많은 머신을 사용하며, 머신 간에 데이터를 분산시켜야 합니다.

절차와 스크립트에 따라 2개, 5개 또는 10개의 "구식" 클러스터가 설정되어 있다면 그것으로 충분할 것입니다. 문제는 팜이 빠르게 성장할 때 발생합니다.

  • 배포에 수백 대의 서버가 있는 경우 어떻게 해야 하나요? 
  • 확인하는 방법 환경이 일관성이 있나요?
  • 설치된 항목을 제어하는 방법  기계?
  • 모든 추적 방법 변경 사항이 있나요?

인프라 설정에 대한 정보는 중앙 집중화되어야 합니다. 인프라는 소프트웨어처럼 취급되어야 합니다. 코드로 소프트웨어 개발자가 사용하는 것과 동일한 도구와 프로세스로 관리할 수 있습니다. 예를 들어 코드를 사용하여 인프라를 설명합니다. 인프라를 설명하는 모델 를 사용하여 Couchbase 배포를 코드화할 수 있습니다. 버전 관리 를 클릭하세요. 누가 어떤 작업을 수행했는지 추적할 수 있을 뿐만 아니라 이전 구성으로 롤백할 수도 있습니다. 모든 머신에 동일한 설정이 적용되므로 Couchbase 배포가 일관성 있게 이루어집니다. 향후 문제와 중단을 방지하려면 Couchbase 팜의 일관성을 유지해야 하며, 구성을 중앙 집중화하고 프로덕션 환경과 비프로덕션 환경으로 구분해야 합니다.

프로덕션에 변경 사항을 적용하기 전에 테스트 또는 개발 브랜치에서 새로운 설정과 설정을 테스트할 수 있습니다!

모든 것을 코드화하세요

코드 사용 를 사용하여 인프라를 설명합니다. 사용 Ansible 물리적 또는 가상 서버 관리(패치, 업그레이드, 구성 관리, 네트워크 관리, 새 클러스터 배포, 오케스트레이션)를 위한 것입니다.

모든 버전

사용 Git 를 사용하여 인프라를 코드 저장소로 관리할 수 있습니다. Git 는 오픈 소스 분산 버전 관리 시스템입니다. 적절한 분기 비즈니스 요구사항(프로덕션 브랜치 및 테스트 브랜치)에 따라 모델을 선택합니다.

Git으로 Couchbase 배포 관리하기

pasted image 0

하나의 리포지토리

조직 또는 회사당 하나의 Git 인프라를 코드 리포지토리로 사용하세요. 하나의 Git 리포지토리에는 몇 개의 브랜치(프로덕션, 개발, 테스트, 스테이징 등)를 가질 수 있습니다.

Ansible: 분산 운영 방법 카우치베이스 클러스터

데이터베이스 팜의 수동 작업은 시간과 리소스를 많이 소모합니다. 수동 작업이 많을수록 사람의 실수, 오버헤드, 일관성 결여가 더 많이 발생합니다.

400대의 서버가 있는 팜을 상상할 수 있나요? 모든 머신에 로그인하고 설정을 변경하는 데 얼마나 많은 시간이 걸리나요? 한두 대의 머신을 건너뛰면 어떻게 될까요? 실수로 몇 대의 머신에 다른 설정을 적용하면 어떻게 될까요?

Ansible 은 인프라의 구성 관리 및 오케스트레이션을 위한 완벽한 도구입니다. Ansible을 사용하면 다음과 같은 이점을 누릴 수 있습니다. 코드로서의 인프라 (Git 리포지토리에 Couchbase 서버의 정의를 유지하고, 변경 사항을 추적하고, Git 버전 관리의 모든 장점을 사용하세요).

Ansible 사용 git 모듈 를 사용하여 분산 데이터베이스 팜의 Git 리포지토리에서 변경 사항을 배포할 수 있습니다. Ansible git 모듈은 지정된 git URL에서 코드를 가져와 대상 디렉터리에 푸시합니다.

  • Ansible은 에이전트가 없으며 푸시 방식(SSH)을 사용합니다.
  • Ansible은 YAML 파일을 기반으로 합니다.
  • 퍼펫의 좋은 대안입니다.
  • Ansible은 서버의 수동 단계를 줄여줍니다.
  • Ansible 도움말 95% 감소 운영 오버헤드

자동화

  • 오버헤드와 인적 실수를 줄이고, 프로세스 속도를 높이며, 일관성을 제공하세요 - Couchbase 팜 자동화를 위해 Ansible을 사용하세요.

오케스트레이션

  • 자동화에 로직을 적용하여 반복적인 단계를 제거해 봅시다. Ansible은 오케스트레이터로도 사용할 수 있습니다!

자동화 는 Couchbase 서비스 시작, 클러스터 구성, Couchbase 프로세스 중지 등 단일 작업과 관련이 있습니다.

오케스트레이션 는 프로세스의 워크플로우 실행을 자동화하는 것과 관련이 있습니다.

# Ansible 플레이북의 git 체크아웃 예시

버전 옵션을 사용하여 특정 브랜치, 태그 또는 커밋 ID를 지정합니다. Git 리포지토리에서 코드를 가져오면 Couchbase 배포에 적용할 수 있습니다. 모든 서버에 적용하거나 팜의 일부에만 적용할 수 있습니다. Ansible 인벤토리 파일에 호스트 목록을 지정하고 다음과 같이 실행할 수도 있습니다:

# 예제 클러스터 "couchstg"에 대한 Ansible 플레이북 실행

 

Git: Git에 무엇을 보관할 수 있나요?

서버 구성 리포지토리:

  • 기본 파일 시스템 레이아웃
  • 필수 Linux 패키지 목록
  • 커널 매개변수
  • 필수 사용자 및 그룹
  • Cron 스크립트
  • 보안 설정

카우치베이스/앤서블 리포지토리:

  • 카우치베이스 클러스터 정의
  • 카우치베이스 앤서블 플레이북
  • 카우치베이스 역할
  • 카우치베이스가 인벤토리 파일을 호스팅합니다.
  • RBAC 구성
  • XDCR 구성

Ansible: 무엇을 자동화해야 하나요?

  • 클러스터 배포
  • 업그레이드
  • 스케일링
  • 복원력
  • 모니터링
  • 알림
  • 보안 설정
  • 백업 및 복원
  • 카우치베이스 클러스터 재조정

  • 카우치베이스 장애 조치
  • 카우치베이스 버킷 생성
  • Linux 커널 및 보안 패치 적용
  • Couchbase GUI 또는 셸의 모든 수동 활동

수동 클러스터 설치 및 수동 노드 관리는 지원되지 않아야 합니다. 가능한 한 많이 자동화하고 항상 코드 변경 사항을 Git에 푸시하세요. 카우치베이스는 다음을 제공합니다. REST API 엔드포인트. Ansible 플레이북에서 HTTP 메서드(GET, POST, PUT, DELETE)를 사용할 수 있습니다.

Couchbase REST API를 사용하면 GUI에서 클릭 한 번 없이 Couchbase 팜에서 모든 변경을 수행할 수 있습니다.

Ansible 플레이북은 Couchbase CLI 명령도 실행할 수 있습니다:

# Ansible 플레이북의 자동 페일오버 예제(CLI 명령)

또는 # 앤서블 플레이북의 리밸런싱 예제

 

# 예제 Ansible 플레이북에서 카우치베이스 서버 설치하기

 

Couchbase: REST API

카우치베이스 REST API 를 사용하면 Couchbase 서버 배포를 관리할 뿐만 아니라 디자인 문서를 저장하고 Ansible 플레이북에서 직접 결과를 쿼리하는 등의 작업을 수행할 수 있습니다.

Ansible 코드에서 Couchbase REST API 호출을 쉽게 수행할 수 있습니다. Couchbase에 대한 사용자 지정 Ansible 역할을 만들 수도 있습니다!

카우치베이스는 다음을 제공합니다. REST APIs:

  • 클러스터 API - 클러스터 REST API는 클러스터 작업을 관리합니다.
  • 서버 노드 API - 서버 노드 REST API는 클러스터의 노드를 관리합니다.
  • 서버 그룹 API - 서버 그룹 REST API는 각 서버 그룹이 물리적으로 랙 또는 가용성 영역에 속하는 클러스터에서 서버를 논리적으로 그룹화할 수 있는 랙 영역 인식 기능을 말합니다.
  • 버킷 API - Buckets REST API는 버킷 및 버킷 작업에 대한 정보를 생성, 삭제, 플러시 및 검색합니다.
  • 보기 API - 보기 REST API는 JSON 문서를 색인하고 쿼리하는 데 사용됩니다.
  • XDCR API - XDCR REST API는 데이터센터 간 복제(XDCR) 작업을 관리하는 데 사용됩니다.
  • 로그 API - Logs REST API는 로그 및 진단 정보를 검색하기 위한 REST API 엔드포인트와 SDK가 로그에 항목을 추가하는 방법을 제공합니다.
  • 사용자 API - 읽기 전용 사용자는 /settings/readOnlyUser URI 엔드포인트로 생성되며, 읽기 전용 사용자는 한 명만 만들 수 있습니다.

# 예제 Ansible은 REST API를 통해 지정된 버킷의 콘텐츠를 비웁니다:

요약

데이터가 그 어느 때보다 빠르게 증가하고 데이터를 보관하고 유지 관리하기 위해 점점 더 많은 머신이 필요한 현대 사회에서는 오케스트레이션을 통한 중앙 집중식 관리와 자동화가 매우 중요합니다. 일관성, 오버헤드 감소, 인적 오류 감소, 프로세스 단축은 자동화, 오케스트레이션, 도구 및 이와 관련된 기술과 함께 인프라를 코드로 사용하기 시작해야 하는 좋은 이유입니다.

Couchbase 분산 클러스터가 완벽한 후보입니다. Couchbase는 Ansible과 같은 도구와 잘 작동하며 유용한 REST API 인터페이스도 제공합니다. Couchbase REST API 메서드는 Ansible 플레이북 또는 Python 스크립트에서 호출할 수 있습니다.

데브옵스 관행은 배포의 속도와 안정성을 높이는 동시에 장애 복구 시간과 소프트웨어 업데이트 리드 타임을 단축합니다.

이 튜토리얼의 두 번째 부분에서는 Couchbase REST API 메서드와 명령줄 명령을 사용하여 Couchbase 클러스터에 대한 Ansible 역할을 빌드하는 방법을 단계별로 보여드리겠습니다.

작성자

게시자 Laura Czajkowski, 개발자 커뮤니티 관리자, Couchbase

로라 챠코브스키는 카우치베이스의 Snr. 개발자 커뮤니티 매니저로 카우치베이스의 커뮤니티를 총괄하고 있습니다. 그녀는 월간 개발자 뉴스레터를 담당하고 있습니다.

댓글 남기기