HomePhabricator
Phame Blogs Couchbase 기본 사용 정보
Couchbase 기본 사용 정보
Couchbase 기본 사용 정보
No one has written any blog posts yet.
About Couchbase 기본 사용 정보

설치 및 기본 설정

설치

가장 권장되는 버전은 Linux 이고 RHEL 7(CentOS 7)/Ubuntu 16.04 입니다.
Downloads 페이지에서 rpm/deb 파일을 내려받거나 URL 만 획득하여 서버에서 curl 로 내려받아 yum/dpkg 로 설치합니다.

설치 이후에는 CentOS 7 버전으로 설명을 합니다. 더 자세한 사항은 다음 링크를 확인하세요.

Red Hat and CentOS Installation

설치 예

CentOS 에서 yum 으로 설치

sudo yum install https://packages.couchbase.com/releases/5.0.1/couchbase-server-community-5.0.1-centos7.x86_64.rpm

Ubuntu 에서 dpkg 으로 설치(최신버전일 경우 dpkg 에서 원격 파일을 내려받아 설치하는 것도 가능)

sudo curl -O https://packages.couchbase.com/releases/5.0.1/couchbase-server-community_5.0.1-ubuntu16.04_amd64.deb
sudo dpkg -i couchbase-server-community_5.0.1-ubuntu16.04_amd64.deb

서비스 시작 및 종료

CentOS 에 rpm 으로 설치하면 서비스에 자동으로 등록됩니다. systemctl 명령으로 시작/종료/상태 등을 처리할 수 있습니다. (CentOS 7 에는 service 가 기본 제공되지 않을 수 있습니다)

systemctl 을 이용한 서비스 사용

systemctl status couchbase-server
systemctl stop couchbase-server
systemctl start couchbase-server

Couchbase Console 접속

Couchbase Server 가 시작되면 웹브라우저를 통해 Console 로 접속할 수 있습니다. Console 의 기본 접속 포트는 8091 입니다.

웹브라우저를 이용한 Couchbase Server Console 접속

http://(Server IP):8091/

Couchbase Server Cluster 설정

Console 에 처음 접속하면 Cluster 을 구성하는 화면부터 시작하게 됩니다.

기존의 Couchbase Server Cluster 에 추가하고 싶다면 "Join Existing Cluster" 을 이용해 추가하거나, 기존 Cluster 에 접속해서 서버를 추가하는 방식 중 하나를 선택해서 서버를 추가하면 됩니다.

새로운 Cluster 을 구성하고 싶다면 다음 링크를 참조하여 새로운 Cluster 을 생성하면 됩니다. 주의할 것은 Couchbase 는 여러 포트를 이용해서 Server/Cluster 가 연결되고 일부 포트는 설정을 바꿀 수 없기 때문에 도메인이나 호스트, IP 중 Couchbase 에 접속할 Client(SDK 을 이용한 접속 등)가 L4/L7 등을 통해 각 서버에 직접 접속할 수 없는 형태의 접속 정보를 입력해서는 안됩니다.

클러스터 초기화

클러스터 구성 최소 서버 수량

다음 링크에서 Couchbase 가 권장하는 최소 Cluster 서버 수량을 3 대 이상이라고 안내하고 있습니다. 해당 링크를 참조하여 주십시오.

Less Than 3 Nodes

Couchbase Server Sizing Guidelines

Couchbase Server 을 사용하기 위해서 기본적으로 고려해야 할 자원은 CPUs/RAM/Disk space/Network 입니다. 자세한 사항은 다음 링크에서 확인해 주십시오.

Sizing Guidelines

SSD 최적화

Couchbase Server 는 보조기억장치로 HDD 뿐만 아니라 SSD 에 대한 최적화를 지원합니다. 그러므로 HDD 을 사용하는 것은 필수가 아니지만, SSD 을 사용할 경우 훨씬 뛰어난 성능을 제공합니다.

다음은 **Sizing Guidelines** 링크 내용 중 일부를 발췌한 부분입니다.

SSD is desired but not required. SSD will bring much better performance than HDD regarding disk throughput and latency.
(SSD 은 필요-권장-하지만 필수는 아닙니다. SSD 은 HDD 보다 디스크 처리량과 대기 시간에 대해 훨씬 뛰어난 성능을 제공합니다.)

기본 메뉴

Server

Couchbase Server 가 설치된 물리적 자원을 말합니다. 한 대의 서버에 Couchbase Server 가 여러 개 설치되어 있다면 그 각각을 의미합니다.

Bucket

Couchbase Server 가 Cluster 로 연결되면 하나의 논리적인 저장소가 됩니다. 이 논리적인 저장소를 분할해서 사용하는 단위가 Bucket 입니다.
RDBMS 에서의 DB/Schema 등에 해당하는 개념입니다.

Index

Couchbase Server 은 key/value 기반으로 데이터를 저장합니다. 그래서 기본적으로 값(value = document)을 조회하기 위해서는 key 을 기반으로 조회해야 합니다. 하지만, Index 을 이용해 map/reduce 을 구성하면 key 나 value 혹은 metadata 을 이용해 원하는 값을 빠르게 찾아낼 수 있습니다.
Couchbase 의 view 는 대중적으로 매우 친숙한 javascript 문법으로 되어 있어 학습 곡선(Learning Curve) 가 매우 낮습니다.

Search

Couchbase Server 은 비교적 최근부터 Full Text Indexs 엔진을 탑재하여 제공하고 있습니다. 이 엔진은 Go 언어로 만들어진 **Bleve** 입니다.
기존에 주로 사용되던 Elasticsearch add-on 을 이용하지 않아도 빠르고 강력한 검색 기능을 제공받을 수 있습니다.

Query

Couchbase Server 은 NoSQL 의 추세라 할 수 있는 SQL 와 유사한 Query 역시 제공합니다. **N1QL** 이라 불리는 이 엔진은 이제 Couchbase Server 설치 시 기본으로 같이 탑재가 되며, Query 형태의 질의를 통해 데이터의 조회를 원할하게 해줄 수 있고, Join 와 Sub-Query 까지 지원합니다.

Couchbase Server Console 에서 Query 메뉴를 통해 쉽게 데이터를 질의해볼 수 있습니다.

N1QL

XDCR

Couchbase Server 은 기본적으로 Cross Domaincenter Replication(XDCR) 을 오래전부터 지원해왔습니다. 단순히 다른 곳에 위치한 Couchbase Server Cluster 에 데이터를 전송하는 기능 뿐만 아니라 add-on 을 통해 ElasticSearch 에 Index Metadata 을 전송하거나, 다른 NoSQL 제품에 데이터를 전송할 수 있습니다.

Cross Datacenter Replication (XDCR)

Couchbase Server 운영

백업 및 복구

모든 데이터 저장소에게 있어 데이터의 백업 및 복구는 매우 중요한 요소입니다. 특히 무중단 상태에서도 백업이 가능한지에 대한 여부는 매우 중요한 부분입니다.

다음은 Couchbase Server 에서 데이터를 백업받는 방법입니다. Community 버전에서는 cbbackupmgr 만 사용할 수 없습니다.

cbbackupmgr

cbbackupmgr 는 Enterprise 버전에서 제공하는 강력한 백업 프로그램입니다.

cbbackupmgr Tool

cbbackup, cbrestore

cbbackup 와 cbrestore 는 전통적으로 제공되어 왔던 백업 및 복구 프로그램입니다.
Enterprise 버전에서만 증분 백업이 가능합니다.

cbbackup and cbrestore Tools

XDCR

XDCR 을 통해 백업용 Couchbase Server Cluster 을 구성하면 RDBMS 의 Master-Slave 형태의 Replication 와 유사한 형태로 백업을 받을 수 있습니다.

Index

전체 데이터를 Index 로 생성하거나, Document 의 Metadata 을 이용해 특정 시간 이후에 변경된 데이터 만을 추출하여 원하는 곳에 데이터를 저장할 수 있습니다.

cbimport, cbexport, cbtransfer

cbimport 와 cbexport, cbtransfer 을 통해서도 백업과 복구를 진행할 수 있습니다.

cbexport 을 통해 json 으로, 혹은 cbtransfer 을 통해 csv 으로 데이터를 추출할 수 있습니다. (cbtransfer 는 XDCR 처럼 다른 Cluster 에 데이터를 전송하는 기능도 있습니다)
추출된 데이터는 cbimport 을 통해 다시 저장할 수 있습니다.

cbimport
cbexport
cbtransfer

File Copy

Couchbase Server 의 물리적 파일을 복사하여 복구할 수도 있습니다.
다음 링크의 Restoring using file copies 항목에서 설명되어 있습니다.

Restoring with cbrestore

버전 업그레이드

NoSQL 제품들은 아직 완벽하게 성숙된 것이 아니기 때문에 버전업이 되었을 경우 빠른 시간 적용을 하는 것이 유리할 수 있습니다. 이 때, 새로운 Cluster 을 만들고 기존의 Cluster 에서 옮기는 방식이나, 새롭게 프로그램을 설치하는 방법은 부적절할 수 있습니다.

Couchbase Server 는 버전이 달라도 하나의 Cluster 로 동작하는데 큰 무리가 없도록 설계되어 있습니다. 그러므로 무중단 상태에서 Cluster 내의 서버들을 업그레이드 할 수 있습니다. 가장 간단한 방식은 새로운 장비에 새 버전이 설치된 Server 을 설치하고 Cluster 에 추가한 뒤, 예전 버전의 Server 을 Cluster 에서 제거한 뒤 업그레이드 한 후 다시 Cluster 에 추가하는 방식으로 처리하는 것입니다. 추가 장비가 여의치 않을 경우 서버 부하량을 조정한 뒤 기존 서버를 Cluster 에서 제거하는 방식도 사용할 수 있습니다.

Upgrading Couchbase Server

자동 장애복구(Auto-Failover)

장애 발생 시 모니터링을 통해 이를 감지하고(Couchbase Server 자체적으로 메일 발송 기능도 제공) 신속하게 장애에 대응하는 방법이 가이드 되고 있으나, 24 시간
대응하기 힘든 경우를 대비해 자동 장애복구(Auto-Failover) 기능이 제공됩니다.

자동 장애복구 진행 방식

장애 발생으로 하나의 Server 가 접속불가 상태가 되면 일정시간 동안 장애여부를 판단합니다. 일정시간 이후 Cluster 에서 해당 Server 는 제거가 되며 데이터는 남아있는 Server 을 이용해 처리되게 됩니다. 향후 Server 가 복구되면 수동으로 Cluster 에 Server 을 추가하고 데이터를 다시 균등하게 분배하는(rebalance) 작업을 진행하면 됩니다.

자동 장애복구 시 주의점

네트워크 상의 일시적인 장애 등으로 Server 와의 통신이 원할하지 않을 수 있습니다(특히 DDos 공격). 이 경우 자동 장애복구일 경우 여러 대의 서버가 장애 상태로 인지될 수 있기 때문에 장애여부를 판단하기 위한 시간을 적절히 부여하거나 자동 장애복구 옵션을 꺼야할 수 있습니다.