본문 바로가기

리눅스

Couchbase CLI를 이용한 클러스터 구성 방법

반응형

Couchbase CLI를 이용한 클러스터 구성 방법

클러스터 구성

첫 번째 노드(cb1) 초기화

/opt/couchbase/bin/couchbase-cli cluster-init \
  --cluster 192.168.10.101:8091 \
  --cluster-username Administrator \
  --cluster-password Administrator \
  --cluster-port 8091 \
  --services data,index,query,fts,eventing,analytics \
  --cluster-ramsize 2048 \
  --cluster-index-ramsize 512 \
  --cluster-eventing-ramsize 256 \
  --cluster-analytics-ramsize 1024 \
  --cluster-fts-ramsize 256 \
  --index-storage-setting default \
  --cluster-name "my_cluster"

cb2, cb3 노드를 클러스터에 추가

cb2를 클러스터에 조인

/opt/couchbase/bin/couchbase-cli server-add \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator \
  --server-add 192.168.10.102:8091 \
  --server-add-username Administrator \
  --server-add-password Administrator \
  --services data,index,query,fts

cb3를 클러스터에 조인

/opt/couchbase/bin/couchbase-cli server-add \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator \
  --server-add 192.168.10.103:8091 \
  --server-add-username Administrator \
  --server-add-password Administrator \
  --services data,index,query,fts

클러스터 리밸런싱

모든 노드 추가 후 리밸런싱 실행

/opt/couchbase/bin/couchbase-cli rebalance \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator \
  --no-progress-bar
SUCCESS: Rebalance complete

진행 상황 모니터링

watch -n 2 '/opt/couchbase/bin/couchbase-cli rebalance-status \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator'

클러스터 설정 최적화

자동 장애 조치 설정

/opt/couchbase/bin/couchbase-cli setting-autofailover \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator \
  --enable-auto-failover 1 \
  --auto-failover-timeout 120 \
  --enable-failover-on-data-disk-issues 1 \
  --failover-data-disk-period 60 \
  --can-abort-rebalance 1 \
  --max-failovers 3

알림 및 모니터링 설정

알림 활성화

/opt/couchbase/bin/couchbase-cli setting-notification \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator \
  --enable-notifications 1
SUCCESS: Software notification settings updated

Prometheus 메트릭 활성화

for node in cb1 cb2 cb3; do
  /opt/couchbase/bin/couchbase-cli node-init \
    --cluster 192.168.10.101:8091 \
    --username Administrator \
    --password Administrator \
    --node-init-hostname $node \
    --enable-prometheus true \
    --prometheus-port 9123
done

샘플 데이터 로드

travel-sample 버킷 생성 및 데이터 로드

/opt/couchbase/bin/couchbase-cli bucket-create \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator \
  --bucket travel-sample \
  --bucket-type couchbase \
  --bucket-ramsize 512 \
  --bucket-replica 1 \
  --enable-flush 0 \
  --enable-index-replica 1 \
  --wait
SUCCESS: Bucket created
728x90

보안 설정

관리자 암호 정책 강화

/opt/couchbase/bin/couchbase-cli setting-security \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator \
  --set \
  --disable-http-access 0 \
  --tls-min-version tlsv1.2 \
  --cipher-suites TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256

감사 로깅 활성화

/opt/couchbase/bin/couchbase-cli setting-audit \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator \
  --set \
  --audit-enabled 1 \
  --audit-log-path /opt/couchbase/var/lib/couchbase/logs
SUCCESS: Audit settings modified

클러스터 상태 확인 명령어

vim cluster-check.sh
#!/bin/bash
# cluster-check.sh - 모든 노드 상태 확인

CLUSTER="192.168.10.101:8091"
USER="Administrator"
PASS="Administrator"

echo "=== Couchbase 클러스터 상태 확인 ==="
echo "실행 시간: $(date)"
echo ""

# 1. 노드 상태 확인
echo "1. 노드 상태:"
/opt/couchbase/bin/couchbase-cli server-list \
  --cluster $CLUSTER \
  --username $USER \
  --password $PASS

echo ""
# 2. 버킷 상태
echo "2. 버킷 상태:"
/opt/couchbase/bin/couchbase-cli bucket-list \
  --cluster $CLUSTER \
  --username $USER \
  --password $PASS

echo ""
# 3. 클러스터 정보
echo "3. 클러스터 정보:"
/opt/couchbase/bin/couchbase-cli setting-cluster \
  --cluster $CLUSTER \
  --username $USER \
  --password $PASS | grep -E "name|ram|index|fts"

echo ""
# 4. XDCR 복제 상태 (없으면 무시)
echo "4. XDCR 상태:"
/opt/couchbase/bin/couchbase-cli xdcr-replicate \
  --cluster $CLUSTER \
  --username $USER \
  --password $PASS \
  --list 2>/dev/null || echo "XDCR 구성되지 않음"

echo ""
# 5. 활성 작업 확인
echo "5. 활성 작업:"
/opt/couchbase/bin/couchbase-cli list-tasks \
  --cluster $CLUSTER \
  --username $USER \
  --password $PASS
chmod +x cluster-check.sh

모니터링 명령어

# 실시간 모니터링
watch -n 5 '/opt/couchbase/bin/couchbase-cli server-list \
  --cluster 192.168.10.101:8091 \
  --username Administrator \
  --password Administrator'

# 디스크 사용량 확인
for node in cb1 cb2 cb3; do
  echo "=== $node ==="
  ssh $node "df -h /opt/couchbase"
done

# 메모리 사용량 확인
/opt/couchbase/bin/cbstats 192.168.10.101:11210 all | grep -E "mem_used|ep_mem_high_wat"

고성능 백업 및 복구 도구인 cbbackupmgr을 사용하는 방법

백업 저장소(Archive) 설정

백업 데이터 폴더 생성

mkdir -p /data/backup

백업 리포지토리(설정 정보) 생성

  •  -a: 아카이브 경로
  • -r: 리포지토리 이름(예: my_cluster)
/opt/couchbase/bin/cbbackupmgr config --archive /data/backup --repo my_cluster
Backup repository `my_cluster` created successfully in archive `/data/backup`

백업 실행 (Full & Incremental)

설정된 리포지토리를 사용하여 실제 데이터를 백업합니다. 첫 실행 시 전체 데이터를 백업하고, 이후 실행 시 변경된 데이터만 백업합니다.

  • -c: 대상 클러스터 주소
  • -u/-p: 관리자 계정 정보
/opt/couchbase/bin/cbbackupmgr backup \
  --archive /data/backup \
  --repo my_cluster \
  --cluster couchbase://192.168.0.10 \
  --username Administrator \
  --password Administrator

백업 스크립트

#!/bin/bash

ARCHIVE_ROOT="/data/backup/couchbase_archive"
REPO_NAME="daily_backup"
BACKUP_EXE="/opt/couchbase/bin/cbbackupmgr"
CLUSTER_URL="couchbase://127.0.0.1"
USERNAME="Administrator"
PASSWORD="Administrator"
LOG_FILE="/data/backup/cb_backup.log"

# 날짜 정의
DATE=$(date +%Y-%m-%d_%H%M%S)

# 1. 아카이브 경로 생성 (최초 1회)
if [ ! -d "$ARCHIVE_ROOT" ]; then
    mkdir -p "$ARCHIVE_ROOT"
    echo "[$DATE] Created Archive Directory: $ARCHIVE_ROOT" >> $LOG_FILE
fi

echo "--- Backup Started at $DATE ---" >> $LOG_FILE

# 2. 리포지토리 설정 확인 (이미 있으면 에러가 나므로 체크 후 생성)
# config 명령은 해당 경로에 repo가 없을 때만 한 번 해주면 됩니다.
if [ ! -d "$ARCHIVE_ROOT/$REPO_NAME" ]; then
    $BACKUP_EXE config --archive "$ARCHIVE_ROOT" --repo "$REPO_NAME" >> $LOG_FILE 2>&1
    echo "[$DATE] Initialized New Repository: $REPO_NAME" >> $LOG_FILE
fi

# 3. 실제 백업 수행 (자동으로 증분 백업)
$BACKUP_EXE backup --archive "$ARCHIVE_ROOT" --repo "$REPO_NAME" \
    --cluster "$CLUSTER_URL" \
    --username "$USERNAME" --password "$PASSWORD" >> $LOG_FILE 2>&1

if [ $? -eq 0 ]; then
    echo "[$DATE] Backup Success (Incremental)" >> $LOG_FILE
else
    echo "[$DATE] Backup Failed" >> $LOG_FILE
    exit 1
fi
chmod +x backup-cluster.sh

데이터 복구(Restore)

기본적인 전체 복구(최신 상태로)

/opt/couchbase/bin/cbbackupmgr restore \
  --archive "/data/backup/couchbase_archive" \
  --repo "daily_repo" \
  --cluster "couchbase://127.0.0.1" \
  --username "Administrator" \
  --password "Administrator"

특정 시점으로 복구 (Point-in-Time Recovery)

# 먼저 어떤 백업들이 있는지 리스트를 확인합니다.
/opt/couchbase/bin/cbbackupmgr info --archive "/data/backup/couchbase_archive" --repo "daily_repo"
# 특정 백업 지점(예: 2026-01-10T03:00:00)을 지정하여 복구
/opt/couchbase/bin/cbbackupmgr restore \
  --archive "/data/backup/couchbase_archive" \
  --repo "daily_repo" \
  --cluster "couchbase://127.0.0.1" \
  --username "Administrator" \
  --password "Administrator" \
  --start "2026-01-10T03:00:00" \
  --end "2026-01-10T03:00:00"

특정 버킷(Bucket)만 골라서 복구

/opt/couchbase/bin/cbbackupmgr restore \
  --archive "/data/backup/couchbase_archive" \
  --repo "daily_repo" \
  --cluster "couchbase://127.0.0.1" \
  --username "Administrator" \
  --password "Administrator" \
  --include-buckets "users,orders"  # 여러 개일 경우 쉼표로 구분

 

728x90
반응형