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

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

CockroachDBは、CockroachLabsによって開発されたオープンソースでクラウドネイティブなSQLデータベースです。これは、トランザクションおよびキー・バリュー・ストアに基づいた分散SQLデータベースです。

CockroachDBはスケーラブルなSQLデータベースで、Google Spannerデータベースと比較されています。これはPostgreSQLプロトコルワイヤーに基づいており、商用利用に適しています。

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

前提条件

このガイドでは、3つのUbuntuサーバー20.04でセキュアCockroachDBクラスターをセットアップします。

node01 172.16.0.3
node02 172.16.0.4
node03 172.16.0.5

何をしますか?

  • ChronyでNTPをセットアップ
  • Linux用の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 chrony

chronyサービスが稼働中であることを確認するために、以下のコマンドを使用します。

systemctl status chrony

以下は得られる結果です。

Ubuntu 20.04にChronyをインストール

その結果、Chronyのインストールと設定が完了しました。すべてのサーバーの時間が同じNTPサーバーと同期されています。

ステップ2 - CockroachDBバイナリをダウンロード

このステップでは、3つのサーバーすべてに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バイナリをダウンロードしてインストール

その結果、Linuxサーバーに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/‘の値を持つことがわかります。

Cockroach証明書ディレクトリのセットアップ

- CA証明書とキーを作成

SSLパスディレクトリを作成した後、’node01’サーバーで’cockroach’コマンドラインを使用してCA証明書とキーを生成します。

以下の’cockroach’コマンドを使用して’$COCKROACH_CERT_DIR’にCA証明書とキーを生成します。

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証明書とキーが作成され、すべてのサーバーにアップロードされました。

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のクライアント証明書を生成

- すべてのサーバーでサーバー証明書を作成

サーバー証明書は、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’にあるすべての利用可能な証明書です。

node01の証明書を生成

CA証明書、クライアント証明書、サーバー証明書の3つの異なる証明書が表示されます。

他のノード’node02’と’node03’では、CA証明書とサーバー証明書の2つの証明書が表示されます。

node02とnode03のサーバー証明書を生成

その結果、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

セキュアCockroachDBクラスターを開始

次に、’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

セキュアCockroachDBクラスターを開始

その後、’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クラスターを開始

これで、すべてのサーバーでCockroachDBプロセスが開始されました。ポート’26257’で実行されており、CockroachDBデータは’/var/lib/cockroachdb’ディレクトリに保存されています。

以下のコマンドを使用してCockroachDBポートを確認できます。

ss -plntu

CockroachDBプロセスがデータベース接続用のTCPポート’26257’で実行されており、デフォルトのCockroachDB管理ダッシュボード用のポート’8080’で実行されていることがわかります。

次に、マスターサーバー’node01’に戻り、以下のコマンドを使用してCockroachDBセキュアクラスターを初期化します。

cockroach init --host=172.16.0.3:26257

次のメッセージが表示されます。

Cluster successfully initialized

さらに、CockroachDBログファイルを確認してクラスター初期化の詳細を確認できます。

grep 'node starting' /var/lib/cockroachdb/logs/cockroach.log -A 11

以下は得られる結果です。

CockroachDBクラスターの初期化

その結果、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;

以下は得られる結果です。

CockroachDBの管理ユーザーを作成

新しいユーザー’yume’がリストに表示されていることがわかります。これは’admin’ロールのメンバーです。

その結果、CockroachDBデータベース用の新しいユーザーを作成しました。

ステップ6 - CockroachDBダッシュボードにアクセス

デフォルトでは、CockroachDBはデフォルトのTCPポート’8080’で動作するWebベースの管理ダッシュボードを提供します。

Webブラウザを開き、アドレスバーにサーバーのIPアドレスとポート’8080’を入力します。

https://172.16.0.3:8080/

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

CockroachDBログインページ

ユーザー’ yume ‘とパスワード’ yume321 ‘を入力し、’ LOG IN ‘ボタンをクリックします。

次に、以下のようなCockroachDBダッシュボードが表示されます。

CockroachDBダッシュボード

これで、3つのライブノードを持つ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.3

CockroachDB SQLシェルにログインしたら、以下のクエリを使用して新しいデータベースを作成します。

CREATE DATABASE yumedb;  
CREATE DATABASE yumedb2;

次に、CockroachDB上のすべての利用可能なデータベースを確認します。

SHOW DATABASES;

そして、データベースのリストに’yumedb’と’yumedb2’が表示されます。

CockroachDBでデータベースを作成

- node02とnode03でデータベースレプリケーションを確認

次に、’node02’サーバーに移動し、以下のコマンドを使用してユーザー’yume’としてCockroachDB SQLシェルにログインします。

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \  
 --host=172.16.0.4

ログインしたら、以下のクエリを使用してすべての利用可能なデータベースを確認します。

SHOW DATABASES;

そして、データベースのリストに’yumedb’と’yumedb2’が表示されます。

node02でデータベースレプリケーションを確認

‘node03’サーバーでも同様の操作を行い、同じ結果が得られます。

以下は’node03’サーバーの結果です。

node03でデータベースレプリケーションを確認

その結果、CockroachDBクラスター内のノード間でのデータベースレプリケーションが機能しています。

さらに、以下にCockroachDB管理ダッシュボードからすべてのデータベースを確認できます。

CockroachDBダッシュボードからデータベースを確認

最後に、Ubuntu 20.04上でのセキュアCockroachDBクラスターのインストールと設定が正常に完了しました。

参考

https://www.cockroachlabs.com/docs/stable/

Share: X/Twitter LinkedIn

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

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