CockroachDBは、CockroachLabsによって開発されたオープンソースのクラウドネイティブSQLデータベースです。これは、トランザクションおよびキー値ストア上に構築された分散SQLデータベースです。 CockroachDBは、GoogleSpannerデータベースと比較されたスケーラブルなSQLデータベースです。これは、PostgreSQLプロトコルワイヤと本番環境に基づいています。
このチュートリアルでは、Ubuntu18.04でSecureCockroachDBクラスターをセットアップする方法を示します。安全なクラスターをセットアップする方法、CockroachDB管理ダッシュボードにアクセスする方法、CockroachDBで新しいユーザーを作成する方法、CockroachDBでデータベースを作成して表示する方法を学習します。
CockroachDBクラスターを実行するには、複数のサーバーが必要です。また、以下の詳細なホスト名とIPアドレスを持つ3台のUbuntu18.04サーバーを使用します。
node1 10.5.5.21
node2 10.5.5.22
node3 10.5.5.23
何をしますか?
- Chronysystemctlrestartchronyを使用してNTPサーバーをセットアップします
systemctlenable chrony - CockroachDBをダウンロードしてインストールする
- 証明書を作成する
- CockroachDBクラスターを初期化する
- CockroachDBクラスターにノードを追加する
- テスト
まず、クラスター上のサーバー間の時間を同期させる必要があります。したがって、すべてのサーバーに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プールサーバーに同期されます。
このステップでは、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 version
CockroachDBはすべてのサーバーにインストールされています。
次に、CockrouchDBクラスターを保護するための証明書をいくつか生成します。 OpenSSLまたはゴキブリコマンドラインを使用して証明書ファイルを生成できます。
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」を取得します。
その後、以下のように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 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アドレスを変更してください。
これで、サーバー証明書「node.crt」と「node.key」が「〜/.cockroach-certs」ディレクトリに取得されます。
いくつかのSSL証明書を作成した後、「node1」サーバーからSecureCockroachDBクラスターを初期化します。
'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がCockroachDBv2.1.6で稼働していることがわかります。
次に、「node2」と「node3」をCockroachDBセキュアクラスターに追加します。
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」がSecureCockroachDBクラスターに追加されました。次のコマンドを使用して、「node1」サーバーから確認してください。
cockroach node status --host=10.5.5.21
そして、3つの異なるサーバーが稼働し、ゴキブリv2.1.6を実行していることになります。
この最後のステップでは、管理ダッシュボードにアクセスしてサーバー間のデータベースレプリケーションをテストすることにより、CockroachDBSecureClusterのインストールをテストします。
CockroachDBは、クラスターを監視するための美しいダッシュボードUIを提供します。 Webブラウザーを開き、サーバーのIPアドレスに続けてポート8080を入力します。
https://10.5.5.21:8080/
そして、以下のようなCockroachDBログインページが表示されます。
ダッシュボードにログインするには、CockroachDBデータベースにユーザーを作成する必要があります。
'node1'ターミナルに戻り、次のコマンドを使用してcockroachdbSQLシェルにログインします。
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21
次に、以下のクエリを使用して、パスワード「[email protected]#」を使用して「hakase」という新しいユーザーを作成します。
CREATE USER hakase WITH PASSWORD '[email protected]#';
'\ q'と入力して、CockroachDBSQLシェルを終了します。
次に、Webブラウザに戻り、ログインページにユーザー「hakase」とパスワード「[emailprotected]#」を入力して、[ログイン]ボタンをクリックします。
そして、以下のようにCockroachDB管理ダッシュボードが表示されます。
次に、「node1」にデータベースを作成し、「node2」または「node3」からデータベースをチェックすることにより、CockroachDBクラスター上のサーバー間のデータベースレプリケーションをテストします。
'node1'で、次のコマンドを使用してCockroachDBSQLシェルにアクセスします。
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21
以下のクエリを使用して、2つのデータベース「hakasedb」と「hakasedb2」を作成します。
create database hakasedb;
create database hakasedb2;
次に、データベースリストを印刷し、作成したばかりの2つのデータベースを取得していることを確認します。
show databases;
次に、「node2」サーバーにログインし、次のコマンドを使用してCockroachDBSQLシェルにアクセスします。
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.22
データベースリストを確認してください。
show databases;
そして、「hakasedb」と「hakasedb2」が「node2」サーバーに複製されていることがわかります。
そして最後に、Ubuntu18.04を使用したSecureCockroachDBクラスターのインストールと構成が正常に完了しました。