웹사이트 검색

Ubuntu 서버에 Secure CockroachDB 클러스터를 배포하는 방법


이 페이지에서

  1. 전제 조건
  2. 무엇을 할 것인가?\n
  3. 1단계 - Chrony로 NTP 서버 설정
  4. 2단계 - CockroachDB 다운로드 및 설치
  5. 3단계 - 인증서 만들기
    1. CA 생성 및 모든 노드에 복사
    2. 클라이언트 인증서 만들기
    3. 서버 인증서 만들기

    1. CockroachDB 대시보드 테스트
    2. 데이터베이스 복제 테스트

    CockroachDB는 CockroachLabs에서 개발한 오픈 소스 및 클라우드 네이티브 SQL 데이터베이스입니다. 트랜잭션 및 키-값 저장소에 구축된 분산 SQL 데이터베이스입니다. CockroachDB는 Google Spanner 데이터베이스와 비교할 수 있는 확장 가능한 SQL 데이터베이스입니다. PostgreSQL 프로토콜 유선 및 생산 준비를 기반으로 합니다.

    이 튜토리얼에서는 Ubuntu 18.04에서 Secure CockroachDB 클러스터를 설정하는 방법을 보여줍니다. 보안 클러스터를 설정하고, CockroachDB 관리 대시보드에 액세스하고, CockroachDB에서 새 사용자를 생성하고, CockroachDB에서 데이터베이스를 생성 및 표시하는 방법을 배웁니다.

    전제 조건

    CockroachDB 클러스터를 실행하려면 여러 서버가 필요합니다. 그리고 세부 호스트 이름과 IP 주소가 아래와 같은 세 개의 Ubuntu 18.04 서버를 사용할 것입니다.

    node1   10.5.5.21
    node2   10.5.5.22
    node3   10.5.5.23

    우리는 무엇을 할 것입니까?

    • Chronysystemctl restart chrony로 NTP 서버 설정
      systemctl enable chrony
    • CockroachDB 다운로드 및 설치
    • 인증서 만들기
    • CockroachDB 클러스터 초기화\n
    • CockroachDB 클러스터에 노드 추가
    • 테스트

    1단계 - Chrony로 NTP 서버 설정

    첫째, 클러스터의 서버 간 시간을 동기화해야 합니다. 따라서 모든 서버에 NTP 패키지를 설치해야 합니다. 그리고 이 가이드에서는 chrony를 사용할 것입니다.

    다음 명령을 사용하여 모든 서버에 chrony 패키지를 설치합니다.

    sudo apt install chrony -y

    설치가 완료되면 /etc/chrony/ 구성 디렉토리로 이동하여 chrony.conf 파일을 편집합니다.

    cd /etc/chrony/
    vim chrony.conf

    기본 NTP 풀을 삭제하고 자체 국가 풀로 바꿉니다.

    pool 0.id.pool.ntp.org iburst maxsources 4
    pool 1.id.pool.ntp.org iburst maxsources 1
    pool 2.id.pool.ntp.org iburst maxsources 1
    pool 3.id.pool.ntp.org iburst maxsources 2

    저장하고 닫습니다.

    이제 chrony 서비스를 다시 시작한 다음 시작 서비스에 chrony를 추가하십시오.

    systemctl restart chrony
    systemctl enable chrony

    결과적으로 서버 간의 시간은 동일한 NTP 풀 서버에 동기화됩니다.

    2단계 - CockroachDB 다운로드 및 설치

    이 단계에서는 모든 서버에 CockroachDB를 다운로드하여 설치합니다. 따라서 모든 클러스터 서버에서 모든 명령을 실행하십시오.

    바이너리라는 새 디렉토리를 만들고 그 안에 들어갔습니다.

    mkdir -p binary; cd binary

    압축된 Linux용 cockroachdb 바이너리 파일을 다운로드하고 압축을 풉니다.

    wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
    tar -xvzf cockroach-latest.linux-amd64.tgz

    이제 바퀴벌레 바이너리 파일을 /etc/local/bin 디렉토리에 복사합니다.

    cp cockroach-*/cockroach /usr/local/bin/

    그런 다음 바퀴벌레 명령을 실행하고 기본 명령을 탐색하여 도움말을 확인하고 버전 등을 확인할 수 있습니다.

    cockroach version

    CockroachDB는 모든 서버에 설치되었습니다.

    3단계 - 인증서 생성

    이제 CockrouchDB 클러스터를 보호하기 위해 몇 가지 인증서를 생성하려고 합니다. OpenSSL 또는 바퀴벌레 명령줄을 사용하여 인증서 파일을 생성할 수 있습니다.

    CA 인증서와 키를 생성하고 사용자 루트에 대한 인증서와 클러스터의 각 노드에 대한 인증서를 생성합니다.

    인증서 디렉터리 ~/.cockroach-certs 및 이에 대한 환경 변수를 생성합니다.

    mkdir -p ${HOME}/.cockroach-certs/
    export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'

    CA 생성 및 모든 노드에 복사

    node1 서버에서 아래의 cockroach 명령을 사용하여 인증 기관을 생성합니다.

    cockroach cert create-ca \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    그러면 ~/.cockroach-certs 디렉토리에서 ca.key 및 ca.crt를 얻을 수 있습니다.

    그런 다음 아래와 같이 scp 명령을 사용하여 ca 인증서와 키를 모든 서버에 복사합니다.

    node2 서버에 복사합니다.

    scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key :~/.cockroach-certs/

    node3 서버에 복사합니다.

    scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key :~/.cockroach-certs/

    이제 CA 인증서와 키가 모든 호스트 서버에 업로드되었는지 확인하십시오.

    클라이언트 인증서 생성

    인증 기관을 생성한 후 클라이언트 인증서를 생성해야 합니다. 클라이언트 인증서는 기본 제공 SQL 셸과 클러스터 간의 통신을 보호하는 데 사용됩니다.

    다음 cockroach 명령을 사용하여 모든 서버에서 클라이언트 인증서를 생성하십시오.

    cockroach cert create-client \
    root \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    그리고 사용자 루트 client.root.crt 및 client.root.key에 대한 클라이언트 인증서를 얻습니다.

    서버 인증서 생성

    서버 인증서는 CockroachDB 클러스터의 서버 간 통신을 보호하는 데 사용됩니다. 그리고 보안클러스터에 가입하기 위해서는 각 서버별로 서버 인증서를 생성해야 합니다.

    node1에서 다음 명령을 사용하여 서버 인증서를 생성합니다.

    cockroach cert create-node \
    localhost \
    $(hostname) \
    10.5.5.21 \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    자신의 IP 주소로 변경하십시오.

    node2에서 다음 명령을 사용하여 서버 인증서를 생성합니다.

    cockroach cert create-node \
    localhost \
    $(hostname) \
    10.5.5.22 \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    자신의 IP 주소로 변경하십시오.

    node3에서 다음 명령을 사용하여 서버 인증서를 생성합니다.

    cockroach cert create-node \
    localhost \
    $(hostname) \
    10.5.5.23 \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    자신의 IP 주소로 변경하십시오.

    이제 ~/.cockroach-certs 디렉토리에서 서버 인증서 node.crt 및 node.key를 얻을 수 있습니다.

    4단계 - 보안 CockroachDB 클러스터 시작

    일부 SSL 인증서를 생성한 후 node1 서버에서 Secure CockroachDB 클러스터를 초기화합니다.

    node1 서버에서 다음 명령을 실행합니다.

    cockroach start \
    --background --certs-dir=$COCKROACH_CERTS_DIR \
    --advertise-host=10.5.5.21 --listen-addr=10.5.5.21

    오류가 없는지 확인하십시오.

    이후 아래의 cockroach 명령어를 실행하여 클러스터 노드 상태를 확인합니다.

    cockroach node status --host=10.5.5.21

    IP 주소가 10.5.5.21인 node1이 CockroachDB v2.1.6과 함께 실행됩니다.

    5단계 - 클러스터에 노드 추가

    다음으로 CockroachDB 보안 클러스터에 node2와 node3를 추가합니다.

    CA 및 서버 인증서가 ~/.cockroach-certs 디렉토리에 있는지 확인하십시오.

    ls -lah ~/.cockroah-certs/

    이제 다음 명령을 실행하여 IP 주소가 10.5.5.22인 node2를 추가합니다. CockroachDB 클러스터에 추가하십시오.

    cockroach start \
    --background --certs-dir=$COCKROACH_CERTS_DIR \
    --advertise-host=10.5.5.22 --listen-addr=10.5.5.22 \
    --join=10.5.5.21:26257

    완료되면 node3으로 이동하여 다음 명령을 실행하십시오.

    cockroach start \
    --background --certs-dir=$COCKROACH_CERTS_DIR \
    --advertise-host=10.5.5.23 --listen-addr=10.5.5.23 \
    --join=10.5.5.21:26257

    자신의 IP 주소로 변경하십시오.

    이제 node2와 node3가 Secure CockroachDB 클러스터에 추가되었습니다. 다음 명령을 사용하여 node1 서버에서 확인하십시오.

    cockroach node status --host=10.5.5.21

    그리고 바퀴벌레 v2.1.6을 실행하는 세 개의 서로 다른 서버를 얻게 됩니다.

    6단계 - 테스트

    이 마지막 단계에서는 관리 대시보드에 액세스하고 서버 간 데이터베이스 복제를 테스트하여 CockroachDB 보안 클러스터 설치를 테스트합니다.

    CockroachDB 대시보드 테스트

    CockroachDB는 클러스터를 모니터링할 수 있는 아름다운 대시보드 UI를 제공합니다. 웹 브라우저를 열고 서버 IP 주소와 포트 8080을 차례로 입력합니다.

    그러면 아래와 같이 CockroachDB 로그인 페이지가 나타납니다.

    대시보드에 로그인하려면 CockroachDB 데이터베이스에 사용자를 생성해야 합니다.

    node1 터미널로 돌아가 다음 명령을 사용하여 cockroachdb SQL 셸에 로그인합니다.

    cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
    --host=10.5.5.21

    이제 아래 쿼리를 사용하여 비밀번호 [email #로 hakase라는 새 사용자를 만듭니다.

    CREATE USER hakase WITH PASSWORD '#';

    CockroachDB SQL 쉘을 종료하려면 \\q를 입력하십시오.

    이제 웹 브라우저로 돌아가 로그인 페이지에서 비밀번호 [email #와 함께 사용자 hakase를 입력하고 로그인 버튼을 클릭합니다.

    그러면 아래와 같이 CockroachDB 관리 대시보드가 표시됩니다.

    데이터베이스 복제 테스트

    이제 node1에 데이터베이스를 생성하고 node2 또는 node3에서 데이터베이스를 확인하여 CockroachDB 클러스터의 서버 간 데이터베이스 복제를 테스트하려고 합니다.

    node1에서 다음 명령을 사용하여 CockroachDB SQL 셸에 액세스합니다.

    cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
    --host=10.5.5.21

    아래 쿼리를 사용하여 두 개의 데이터베이스 hakasedb 및 hakasedb2를 만듭니다.

    create database hakasedb;
    create database hakasedb2;

    이제 데이터베이스 목록을 인쇄하고 방금 생성한 두 개의 데이터베이스를 얻었는지 확인하십시오.

    show databases;

    다음으로 node2 서버에 로그인하고 다음 명령을 사용하여 CockroachDB SQL 셸에 액세스합니다.

    cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
    --host=10.5.5.22

    데이터베이스 목록을 확인하십시오.

    show databases;

    그러면 hakasedb가 표시되고 hakasedb2가 node2 서버에 복제되었습니다.

    그리고 마지막으로 Ubuntu 18.04를 사용한 Secure CockroachDB Cluster의 설치 및 구성이 성공적으로 완료되었습니다.