CockroachDB セキュア接続

 

https://kazuhira-r.hatenablog.com/entry/2021/08/11/003809
https://www.cockroachlabs.com/docs/v23.2/install-cockroachdb-linux


mmm191で作成した証明書と鍵をmmm192,mmm193に配布する


OS: Rocky Linux 9.2 

 


-- 1. インストール
-- mmm191, mmm192, mmm193

wget -qO- https://binaries.cockroachdb.com/cockroach-v23.2.0.linux-amd64.tgz | tar xvz
cp -i cockroach-v23.2.0.linux-amd64/cockroach /usr/local/bin/

 

 


-- 2. クラスタ設定

-- 2.1 ユーザとディレクトリの作成
-- mmm191, mmm192, mmm193


useradd myuser
echo myuser | passwd --stdin myuser

 

visudo
myuser     ALL=(ALL) NOPASSWD:     ALL

 

 

su - myuser


sudo mkdir -p /cockroach/crc/{certs,ca}
sudo chown -R myuser:myuser /cockroach/crc

 

-- 2.2 CA証明書と鍵の作成
-- mmm191


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

find /cockroach/crc -type f

-- 2.3 サーバー証明書と鍵の作成
-- mmm191

cockroach cert create-node \
localhost mmm191 mmm192 mmm193 \
--certs-dir=/cockroach/crc/certs \
--ca-key=/cockroach/crc/ca/ca.key

find /cockroach/crc -type f


-- 2.4 クライアント証明書と鍵の作成
-- mmm191

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


cockroach cert create-client \
myuser \
--certs-dir=/cockroach/crc/certs \
--ca-key=/cockroach/crc/ca/ca.key


find /cockroach/crc -type f


-- 2.5 証明書と鍵の配布
-- mmm191

cd /cockroach/crc/certs

scp \
client.root.key \
client.root.crt \
client.myuser.key \
client.myuser.crt \
node.key \
node.crt \

ca.crt \
myuser@mmm192:/cockroach/crc/certs

scp \
client.root.key \
client.root.crt \
client.myuser.key \
client.myuser.crt \
node.key \
node.crt \

ca.crt \
myuser@mmm193:/cockroach/crc/certs


cd /cockroach/crc/ca

scp \
ca.key \
myuser@mmm192:/cockroach/crc/ca

scp \
ca.key \
myuser@mmm193:/cockroach/crc/ca

 


-- 2.6 サービス設定ファイルの作成
-- mmm191, mmm192, mmm193


sudo sh -c "cat <<-'EOF' > /etc/systemd/system/cockroachdb.service
[Unit]
Description=Cockroach Database cluster node
Requires=network.target
[Service]
Type=notify
WorkingDirectory=/cockroach/crc/certs
ExecStart=/usr/local/bin/cockroach start \
--certs-dir=/cockroach/crc/certs \
--advertise-addr=$HOSTNAME \
--join=mmm191,mmm192,mmm193 \
--max-sql-memory=.35 \
--cache=.35
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroachdb
User=myuser
[Install]
WantedBy=default.target


EOF"

cat /etc/systemd/system/cockroachdb.service

sudo systemctl daemon-reload
sudo systemctl restart cockroachdb
sudo systemctl status cockroachdb

sudo systemctl enable cockroachdb

 

-- 3. クラスタの初期化
-- mmm191


cockroach init \
--certs-dir=/cockroach/crc/certs \
--host=mmm191


cockroach node status \
--certs-dir=/cockroach/crc/certs \
--host=mmm191

 

-- 4. SQLの実行
-- mmm191

 

cockroach sql \
--certs-dir=/cockroach/crc/certs \
--host=mmm191 \
-e "create user myuser with LOGIN password 'myuser';"

 

cockroach sql \
--certs-dir=/cockroach/crc/certs \
--host=mmm191 \
-e 'grant admin to myuser;'

 

cockroach sql \
--certs-dir=/cockroach/crc/certs \
--host=mmm191