データベース · 2 min read · Dec 19, 2025

UbuntuサーバーにセキュアなCockroachDBクラスターをデプロイする方法

CockroachDBは、CockroachLabsによって開発されたオープンソースでクラウドネイティブなSQLデータベースです。これは、トランザクションおよびキー・バリュー・ストアに基づいた分散SQLデータベースです。CockroachDBはスケーラブルなSQLデータベースであり、Google Spannerデータベースと比較されています。これはPostgreSQLプロトコルワイヤーに基づいており、商用利用に適しています。

このチュートリアルでは、Ubuntu 18.04上にセキュアなCockroachDBクラスターを設定する方法を示します。セキュアなクラスターの設定、CockroachDB管理ダッシュボードへのアクセス、新しいユーザーの作成、CockroachDB上のデータベースの作成と表示を学びます。

前提条件

CockroachDBクラスターを実行するには、複数のサーバーが必要です。以下の詳細なホスト名とIPアドレスを持つ3つのUbuntu 18.04サーバーを使用します。

node1   10.5.5.21  
node2   10.5.5.22  
node3   10.5.5.23

何をしますか?

  • ChronyでNTPサーバーを設定する
    systemctl restart chrony
    systemctl enable chrony
  • CockroachDBをダウンロードしてインストールする
  • 証明書を作成する
  • CockroachDBクラスターを初期化する
  • 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プールサーバーに同期されます。

Chronyを開始して有効にする

ステップ2 - CockroachDBをダウンロードしてインストールする

このステップでは、すべてのサーバーにCockroachDBをダウンロードしてインストールします。したがって、すべてのクラスターサーバーでコマンドを実行します。

‘binary’という新しいディレクトリを作成し、その中に移動します。

mkdir -p binary; cd binary

Linux用の圧縮されたcockroachdbバイナリファイルをダウンロードして解凍します。

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

次に、’cockroach’バイナリファイルを’/etc/local/bin’ディレクトリにコピーします。

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

その後、’cockroach’コマンドを実行して、ヘルプやバージョン確認などの基本コマンドを探索できます。

cockroach version

CockroachDBはすべてのサーバーにインストールされました。

CockroachDBをインストールする

ステップ3 - 証明書を作成する

今、私たちはCockroachDBクラスターを保護するためのいくつかの証明書を生成します。証明書ファイルを生成するためにOpenSSLまたはcockroachコマンドラインを使用できます。

CA証明書とキーを生成し、ユーザーrootのための証明書とクラスター内の各ノードのための証明書を生成します。

証明書ディレクトリ’~/.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’が生成されます。

CAを作成し、すべてのノードにコピーする

その後、以下のscpコマンドを使用して、すべてのサーバーにCA証明書とキーをコピーします。

‘node2’サーバーにコピーします。

scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/

‘node3’サーバーにコピーします。

scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/

CA証明書とキーがすべてのホストサーバーにアップロードされていることを確認します。

クライアント証明書を作成する

証明書機関を作成した後、クライアント証明書を生成する必要があります。クライアント証明書は、組み込みのSQLシェルとクラスター間の通信を保護するために使用されます。

以下のcockroachコマンドを使用して、すべてのサーバーでクライアント証明書を生成します。

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

そして、ユーザーrootのためのクライアント証明書’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アドレスを自分のものに変更します。

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アドレスを自分のものに変更します。

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アドレスを自分のものに変更します。

これで、’node.crt’と’node.key’のサーバー証明書が’~/.cockroach-certs’ディレクトリに生成されます。

ステップ4 - セキュアなCockroachDBクラスターを開始する

いくつかのSSL証明書を作成した後、’node1’サーバーからセキュアな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

ノード1がIPアドレス10.5.5.21で稼働中で、CockroachDB v2.1.6が実行されていることがわかります。

ステップ5 - クラスターにノードを追加する

次に、’node2’と’node3’をCockroachDBセキュアクラスターに追加します。

CAおよびサーバー証明書が~/.cockroach-certsディレクトリにあることを確認します。

ls -lah ~/.cockroach-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’がセキュアなCockroachDBクラスターに追加されました。以下のコマンドを使用して、’node1’サーバーから確認します。

cockroach node status --host=10.5.5.21

そして、3つの異なるサーバーがCockroach v2.1.6を実行していることがわかります。

クラスターにノードを追加する

ステップ6 - テスト

この最後のステップでは、管理ダッシュボードにアクセスし、サーバー間のデータベースレプリケーションをテストすることによって、CockroachDBセキュアクラスターのインストールをテストします。

CockroachDBダッシュボードのテスト

CockroachDBは、クラスターを監視するための美しいダッシュボードUIを提供します。ウェブブラウザを開き、サーバーのIPアドレスの後にポート8080を入力します。

https://10.5.5.21:8080/

そして、以下のようなCockroachDBログインページが表示されます。

CockroachDBダッシュボード

ダッシュボードにログインするには、CockroachDBデータベースにユーザーを作成する必要があります。

‘node1’ターミナルに戻り、以下のコマンドを使用してcockroachdb SQLシェルにログインします。

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

次に、以下のクエリを使用して、’hakase’という名前の新しいユーザーをパスワード’hakase-labs123@#’で作成します。

CREATE USER hakase WITH PASSWORD 'hakase-labs123@#';

‘ を入力してCockroachDB SQLシェルから退出します。

CockroachDB SQLシェル

今、ウェブブラウザに戻り、ログインページでユーザー’hakase’とパスワード’hakase-labs123@#’を入力し、ログインボタンをクリックします。

Cockroach DB

そして、以下のようなCockroachDB管理ダッシュボードが表示されます。

クラスターの概要

データベースレプリケーションのテスト

今、’node1’でデータベースを作成し、’node2’または’node3’からデータベースを確認することによって、CockroachDBクラスター内のサーバー間のデータベースレプリケーションをテストします。

‘node1’で、以下のコマンドを使用してCockroachDB SQLシェルにアクセスします。

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

以下のクエリを使用して、2つのデータベース’hakasedb’と’hakasedb2’を作成します。

create database hakasedb;  
 create database hakasedb2;

データベースリストを印刷し、先ほど作成した2つのデータベースが表示されることを確認します。

show databases;

Cockroach DBコマンドライン

次に、’node2’サーバーにログインし、以下のコマンドを使用してCockroachDB SQLシェルにアクセスします。

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

データベースリストを確認します。

show databases;

そして、’hakasedb’と’hakasedb2’が’node2’サーバーにレプリケートされていることがわかります。

データベースを表示

最後に、Ubuntu 18.04を使用したセキュアなCockroachDBクラスターのインストールと構成が成功裏に完了しました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。