CockroachDB · 7 min read · Dec 19, 2025
우분투 20.04 서버에 안전한 CockroachDB 클러스터 배포하는 방법

CockroachDB는 CockroachLabs에서 개발한 오픈 소스 클라우드 네이티브 SQL 데이터베이스입니다. 이는 트랜잭션 및 키-값 저장소를 기반으로 구축된 분산 SQL 데이터베이스입니다.
CockroachDB는 Google Spanner 데이터베이스와 비교되는 확장 가능한 SQL 데이터베이스입니다. PostgreSQL 프로토콜을 기반으로 하며, 생산 준비가 완료되었습니다.
이 튜토리얼에서는 우분투 20.04에서 안전한 CockroachDB 클러스터를 설정하는 방법을 보여줍니다. 안전한 클러스터 설정, CockroachDB 관리 대시보드에 접근, CockroachDB에서 새 사용자 생성, CockroachDB에서 데이터베이스 생성 및 표시하는 방법을 배우게 됩니다.
전제 조건
이 가이드에서는 3개의 우분투 서버 20.04로 안전한 CockroachDB 클러스터를 설정합니다.
node01 172.16.0.3
node02 172.16.0.4
node03 172.16.0.5
우리가 할 일
- Chrony로 NTP 설정
- 리눅스용 CockroachDB 바이너리 다운로드
- CockroachDB 클러스터용 SSL 인증서 생성
- 안전한 CockroachDB 클러스터 시작
- CockroachDB용 관리자 사용자 생성
- CockroachDB 대시보드 접근
- CockroachDB 클러스터에서 데이터베이스 복제 테스트
1단계 - Chrony로 NTP 서버 설정
먼저, Chrony를 사용하여 모든 세 서버의 시간을 NTP 서버와 동기화합니다. 따라서 이 단계의 모든 명령을 모든 서버에서 실행해야 합니다.
이제 시스템에서 사용 가능한 모든 리포지토리를 업데이트하고 아래의 apt 명령을 사용하여 chrony 패키지를 설치합니다.
sudo apt update
sudo apt install chrony -y모든 설치가 완료되면 ‘/etc/chrony’ 디렉토리로 이동하여 vim 편집기를 사용하여 구성 ‘chrony.conf’를 편집합니다.
cd /etc/chrony/
vim chrony.conf아래와 같이 기본 풀을 가장 가까운 NTP 서버로 변경합니다.
pool 0.sg.pool.ntp.org iburst maxsources 4
pool 1.sg.pool.ntp.org iburst maxsources 1
pool 2.sg.pool.ntp.org iburst maxsources 1
pool 3.sg.pool.ntp.org iburst maxsources 2저장하고 닫습니다.
다음으로, chrony 서비스를 재시작하고 시스템 부팅 시 자동으로 시작되도록 설정합니다.
systemctl restart chrony
systemctl enable chronychrony 서비스가 실행 중인지 확인하려면 다음 명령을 사용합니다.
systemctl status chrony아래는 얻을 수 있는 결과입니다.

결과적으로, Chrony의 설치 및 구성이 완료되었습니다. 모든 서버의 시간이 동일한 NTP 서버와 동기화되었습니다.
2단계 - CockroachDB 바이너리 다운로드
이 단계에서는 세 개의 서버에 CockroachDB를 다운로드하고 설치합니다.
이제 ‘binary’라는 새 디렉토리를 만들고 그 안으로 들어갑니다.
mkdir -p binary; cd binary그 후, CockroachDB 바이너리 파일의 최신 버전을 다운로드하고 압축을 풉니다.
wget -q https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
tar -xf cockroach-latest.linux-amd64.tgz이제 바이너리 파일 ‘cockroach’를 ‘/usr/local/bin’ 디렉토리로 이동합니다.
cp cockroach-*/cockroach /usr/local/bin/결과적으로, 시스템에서 ‘cockroach’ 명령을 실행할 수 있습니다.
다음 명령을 사용하여 ‘cockroach’ 바이너리 파일과 CockroachDB 버전을 확인합니다.
which cockroach
cockroach version아래는 얻을 수 있는 결과입니다.

결과적으로, 리눅스 서버에 CockroachDB v20.1.5를 다운로드하고 설치했으며, 이제 CockroachDB 클러스터를 생성할 수 있습니다.
3단계 - CockroachDB 클러스터용 SSL 인증서 생성
새 CockroachDB 클러스터를 생성하기 전에 클러스터 보안을 위해 SSL 인증서를 생성하고 생성합니다. SSL 인증서를 생성하기 위해 OpenSSL 또는 ‘cockroach’ 명령줄을 사용할 수 있습니다.
- CockroachDB 인증서 디렉토리 생성
먼저, CockroachDB 클러스터의 모든 SSL 인증서를 저장할 새 디렉토리를 생성해야 합니다.
루트 사용자로 ‘~/.cockroach-certs’라는 새 디렉토리를 만들고 아래 명령을 사용하여 시스템 환경 변수 ‘COCKROACH_CERTS_DIR’를 추가합니다.
mkdir -p ${HOME}/.cockroach-certs/
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'다음으로, ‘COCKROACH_CERTS_DIR’ 환경 변수를 영구적으로 만들기 위해 vim 편집기를 사용하여 ~/.bashrc 구성을 편집합니다.
vim ~/.bashrc다음 구성을 마지막 줄에 붙여넣습니다.
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'저장하고 닫습니다.
다음으로, ~/.bashrc 구성을 다시 로드하고 ‘COCKROACH_CERTS_DIR’ 환경 변수를 확인합니다.
source ~/.bashrc
echo $COCKROACH_CERTS_DIR그리고 ‘COCKROACH_CERTS_DIR’ 변수가 ‘${HOME}/.cockroach-certs/‘ 디렉토리로 설정된 것을 확인할 수 있습니다.

- CA 인증서 및 키 생성
SSL 경로 디렉토리를 생성한 후, ‘node01’ 서버에서 ‘cockroach’ 명령줄을 사용하여 CA 인증서 및 키를 생성합니다.
‘$COCKROACH_CERT_DIR’에 CA 인증서 및 키를 생성하려면 아래의 ‘cockroach’ 명령을 사용합니다.
cockroach cert create-ca \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key그 후, 생성된 ‘ca.crt’ 및 ‘ca.key’를 scp 명령을 사용하여 다른 서버 ‘node02’ 및 ‘node03’로 복사합니다.
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/결과적으로, CA 인증서 및 키가 생성되어 모든 서버에 업로드되었습니다.

- node01에서 클라이언트 인증서 생성
CA 인증서 및 키를 생성한 후, 내장 SQL 셸과 클러스터 간의 통신을 보호하는 데 사용되는 클라이언트 인증서를 생성합니다.
다음 ‘cockroach’ 명령을 사용하여 클라이언트 인증서를 생성합니다.
cockroach cert create-client \
root \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key이제 ‘$COCKROACH_CERTS_DIR’ 디렉토리에 ‘client.root.crt’ 및 ‘client.root.key’라는 새 인증서를 얻을 수 있습니다.

- 모든 서버에서 서버 인증서 생성
서버 인증서는 CockroachDB 클러스터의 서버 간 통신을 보호하는 데 사용됩니다. 안전한 클러스터에 참여하려면 각 서버에 대한 서버 인증서를 생성해야 합니다.
첫 번째 ‘node01’에서 다음 명령을 사용하여 서버 인증서를 생성하고, IP 주소를 자신의 것으로 변경해야 합니다.
cockroach cert create-node \
localhost \
$(hostname) \
172.16.0.3 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key다음으로, ‘node02’에 대한 서버 인증서를 생성합니다.
cockroach cert create-node \
localhost \
$(hostname) \
172.16.0.4 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key그 후, ‘node03’ 서버에 대한 서버 인증서를 생성합니다.
cockroach cert create-node \
localhost \
$(hostname) \
172.16.0.5 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key이제 ‘~/.cockroach-certs’ 디렉토리를 확인하면 모든 서버에서 ‘node.crt’ 및 ‘node.key’라는 새 인증서를 얻을 수 있습니다.
ls -lah ${HOME}/.cockroach-certs/아래는 마스터 서버 ‘node01’에서 사용할 수 있는 모든 인증서입니다.

세 가지 다른 인증서, CA 인증서, 클라이언트 인증서 및 서버 인증서를 볼 수 있습니다.
다른 노드 ‘node02’ 및 ‘node03’에서는 두 개의 인증서, CA 인증서 및 서버 인증서를 볼 수 있습니다.

결과적으로, CockroachDB 안전 클러스터를 시작하고 생성할 준비가 되었습니다.
4단계 - 안전한 CockroachDB 클러스터 시작
안전한 CockroachDB 클러스터를 시작하려면 각 서버에서 CockroachDB 프로세스를 시작해야 합니다.
CockroachDB 프로세스를 시작하기 전에 각 서버의 세부 IP 주소를 자신의 것으로 변경하고 ‘$COCKROACH_CERTS_DIR’ 환경 변수가 로드되었는지 확인해야 합니다.
먼저, ‘node01’에서 다음 명령을 사용하여 CockroachDB 프로세스를 시작합니다.
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--store=/var/lib/cockroachdb \
--advertise-host=172.16.0.3 --listen-addr=172.16.0.3 \
--join=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257
이제 ‘node02’ 서버로 이동하여 CockroachDB 프로세스를 시작합니다.
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--store=/var/lib/cockroachdb \
--advertise-host=172.16.0.4 --listen-addr=172.16.0.4 \
--join=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257
그 후, ‘node03’ 서버에서 CockroachDB 프로세스를 시작합니다.
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--store=/var/lib/cockroachdb \
--advertise-host=172.16.0.5 --listen-addr=172.16.0.5 \
--join=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257
이제 모든 서버에서 CockroachDB 프로세스가 시작되었습니다. 포트 ‘26257’에서 실행 중이며, CockroachDB 데이터는 ‘/var/lib/cockroachdb’ 디렉토리에 저장됩니다.
다음 명령을 사용하여 CockroachDB 포트를 확인할 수 있습니다.
ss -plntu보시다시피, CockroachDB 프로세스는 데이터베이스 연결을 위한 TCP 포트 ‘26257’에서 실행 중이며, 기본 CockroachDB 관리 대시보드로 포트 ‘8080’에서 실행 중입니다.
다음으로, 마스터 서버 ‘node01’로 돌아가 CockroachDB 안전 클러스터를 초기화합니다.
cockroach init --host=172.16.0.3:26257그리고 다음 메시지를 받게 됩니다.
클러스터가 성공적으로 초기화되었습니다.추가로, 클러스터 초기화 세부 정보를 보려면 CockroachDB 로그 파일을 확인할 수 있습니다.
grep 'node starting' /var/lib/cockroachdb/logs/cockroach.log -A 11아래는 얻을 수 있는 결과입니다.

결과적으로, CockroachDB 안전 클러스터 초기화가 성공적으로 완료되었습니다.
5단계 - CockroachDB용 관리자 사용자 생성
CockroachDB 클러스터를 성공적으로 초기화한 후, CockroachDB 관리 대시보드에 로그인할 새 사용자를 생성해야 합니다.
마스터 서버 ‘node01’에서 다음 명령을 사용하여 CockroachDB SQL 셸에 로그인합니다.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=172.16.0.3이제 다음 쿼리를 사용하여 ‘yume’라는 이름의 새 사용자와 비밀번호 ‘yume321’을 생성합니다.
CREATE USER yume WITH PASSWORD 'yume321';그 후, 사용자 ‘yume’가 로그인할 수 있도록 허용하고 ‘admin’ 역할에 추가합니다.
ALTER USER yume LOGIN;
GRANT admin TO yume;이제 다음 쿼리를 사용하여 CockroachDB에서 모든 사용자를 확인합니다.
SHOW USERS;아래는 얻을 수 있는 결과입니다.

보시다시피, 새 사용자 yume가 목록에 있습니다. ‘admin’ 역할의 구성원입니다.
결과적으로, CockroachDB 데이터베이스에 대한 새 사용자를 생성했습니다.
6단계 - CockroachDB 대시보드 접근
기본적으로 CockroachDB는 기본 TCP 포트 ‘8080’에서 실행되는 웹 기반 관리 대시보드를 제공합니다.
웹 브라우저를 열고 주소 표시줄에 서버 IP 주소와 포트 ‘8080’을 입력합니다.
이제 아래와 같은 CockroachDB 로그인 페이지를 보게 됩니다.

필드에 사용자 ‘yume‘와 비밀번호 ‘yume321‘을 입력하고 ‘LOG IN‘ 버튼을 클릭합니다.
그리고 아래와 같은 CockroachDB 대시보드를 보게 됩니다.

보시다시피, 세 개의 활성 노드가 있는 CockroachDB 클러스터가 있습니다.
결과적으로, 새 사용자로 CockroachDB 관리 대시보드에 성공적으로 로그인했습니다.
7단계 - 데이터베이스 복제 테스트
이 단계에서는 클러스터의 각 노드 간 데이터베이스 복제를 테스트합니다.
‘node01’ 서버에서 사용자 ‘yume’를 사용하여 새 데이터베이스를 생성한 다음, 다른 노드 ‘node02’ 및 ‘node03’에서 데이터베이스를 확인합니다.
- node01에 연결하고 데이터베이스 생성
‘node01’ 서버에서 사용자 ‘yume’로 CockroachDB SQL 셸에 로그인합니다.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \
--host=172.16.0.3CockroachDB SQL 셸에 로그인한 후, 다음 쿼리를 사용하여 새 데이터베이스를 생성합니다.
CREATE DATABASE yumedb;
CREATE DATABASE yumedb2;이제 CockroachDB에서 사용 가능한 모든 데이터베이스를 확인합니다.
SHOW DATABASES;그리고 데이터베이스 목록에서 ‘yumedb’와 ‘yumedb2’를 확인할 수 있습니다.

- node02 및 node03에서 데이터베이스 복제 확인
다음으로, ‘node02’ 서버로 이동하여 사용자 ‘yume’로 CockroachDB SQL 셸에 로그인합니다.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \
--host=172.16.0.4로그인한 후, 다음 쿼리를 사용하여 사용 가능한 모든 데이터베이스를 확인합니다.
SHOW DATABASES;그리고 데이터베이스 목록에서 ‘yumedb’와 ‘yumedb2’를 확인할 수 있습니다.

‘node03’ 서버에서도 동일한 작업을 수행하면 동일한 결과를 얻을 수 있습니다.
아래는 ‘node03’ 서버의 결과입니다.

결과적으로, CockroachDB 클러스터의 노드 간 데이터베이스 복제가 작동하고 있습니다.
추가로, 아래에서 CockroachDB 관리 대시보드에서 모든 데이터베이스를 확인할 수 있습니다.

마지막으로, 우분투 20.04에서 안전한 CockroachDB 클러스터의 설치 및 구성이 성공적으로 완료되었습니다.
참고
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.