Cách triển khai cụm Secure CockroachDB trên máy chủ Ubuntu 20.04

theanh

Administrator
Nhân viên
CockroachDB là cơ sở dữ liệu SQL nguồn mở và gốc đám mây do CockroachLabs phát triển. Đây là cơ sở dữ liệu SQL phân tán được xây dựng trên các kho lưu trữ giao dịch và khóa-giá trị.

CockroachDB là cơ sở dữ liệu SQL có khả năng mở rộng đã được so sánh với cơ sở dữ liệu Google Spanner. Cơ sở dữ liệu này dựa trên giao thức PostgreSQL và sẵn sàng cho sản xuất.

Hướng dẫn này sẽ chỉ cho bạn cách thiết lập Secure CockroachDB Cluster trên Ubuntu 20.04. Bạn sẽ học cách thiết lập cụm bảo mật, truy cập bảng điều khiển quản trị CockroachDB, tạo người dùng mới trên CockroachDB, tạo và hiển thị cơ sở dữ liệu trên CockroachDB.

Điều kiện tiên quyết

Đối với hướng dẫn này, chúng tôi sẽ thiết lập Cụm CockroachDB Bảo mật với 3 Máy chủ Ubuntu 20.04.

node01 172.16.0.3
node02 172.16.0.4
node03 172.16.0.5

Chúng ta sẽ làm gì?
  • Thiết lập NTP với Chrony
  • Tải xuống CockroachDB Binary cho Linux
  • Tạo chứng chỉ SSL cho Cụm CockroachDB
  • Khởi động Cụm CockroachDB Bảo mật
  • Tạo Người dùng Quản trị cho CockroachDB
  • Truy cập Bảng điều khiển CockroachDB
  • Kiểm tra Cơ sở dữ liệu Sao chép trên cụm CockroachDB

Bước 1 - Thiết lập máy chủ NTP với Chrony​

Đầu tiên, chúng ta sẽ đồng bộ hóa thời gian trên cả ba máy chủ của mình với máy chủ NTP bằng cách sử dụng chrony. Vì vậy, hãy đảm bảo chạy tất cả lệnh ở bước này trên tất cả các máy chủ.

Bây giờ hãy cập nhật tất cả các kho lưu trữ khả dụng trên hệ thống của bạn và cài đặt gói chrony bằng lệnh apt bên dưới.
Mã:
sudo apt update
sudo apt install chrony -y
Sau khi hoàn tất quá trình cài đặt, hãy vào thư mục '/etc/chrony' và chỉnh sửa cấu hình 'chrony.conf' bằng trình soạn thảo vim.
Mã:
cd /etc/chrony/
vim chrony.conf
Thay đổi nhóm mặc định bằng máy chủ NTP gần nhất của bạn thành bên dưới.
Mã:
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
Lưu và đóng.

Tiếp theo, khởi động lại dịch vụ chrony và thêm nó vào hệ thống khởi động.
Mã:
systemctl restart chrony
systemctl enable chrony
Dịch vụ chrony đã hoạt động, hãy kiểm tra bằng lệnh sau.
Mã:
systemctl status chrony
Dưới đây là kết quả bạn sẽ nhận được.



Kết quả là quá trình cài đặt và cấu hình Chrony đã hoàn tất. Trên thực tế, thời gian trên tất cả các máy chủ đã được đồng bộ hóa với cùng một Máy chủ NTP.

Bước 2 - Tải xuống CockroachDB Binary​

Trong bước này, chúng ta sẽ tải xuống và cài đặt CockroachDB cho cả ba máy chủ của mình.

Bây giờ, hãy tạo một thư mục mới có tên là 'binary' và truy cập vào đó.
Mã:
mkdir -p binary; cd binary
Sau đó, tải xuống phiên bản mới nhất của tệp nhị phân CockroachDB và giải nén nó.
Mã:
wget -q https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
tar -xf cockroach-latest.linux-amd64.tgz
Bây giờ hãy di chuyển tệp nhị phân 'cockroach' vào thư mục '/usr/local/bin'.
Mã:
cp cockroach-*/cockroach /usr/local/bin/
Kết quả là, bạn có thể chạy lệnh 'cockroach' trên hệ thống của mình.

Kiểm tra tệp nhị phân 'cockroach' và phiên bản CockroachDB bằng lệnh sau.
Mã:
which cockroach
cockroach version
Dưới đây là kết quả bạn sẽ nhận được.



Kết quả là, bạn đã đã tải xuống và cài đặt CockroachDB v20.1.5 trên máy chủ Linux và bây giờ bạn có thể tạo CockroachDB Cluster.

Bước 3 - Tạo chứng chỉ SSL cho CockroachDB Cluster​

Trước khi tạo CockroachDB Cluster mới, chúng ta sẽ tạo và tạo chứng chỉ SSL để bảo mật cụm của mình. Để tạo Chứng chỉ SSL, chúng ta có thể sử dụng OpenSSL hoặc sử dụng dòng lệnh 'cockroach'.

- Tạo Thư mục Chứng chỉ CockroachDB​

Trước tiên, chúng ta cần tạo một thư mục mới để lưu trữ tất cả các chứng chỉ SSL cho Cụm CockroachDB của chúng ta.

Là người dùng root, hãy tạo một thư mục mới '~/.cockroach-certs' và thêm biến môi trường hệ thống 'COCKROACH_CERTS_DIR' bằng lệnh bên dưới.
Mã:
mkdir -p ${HOME}/.cockroach-certs/
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'
Tiếp theo, để biến môi trường 'COCKROACH_CERTS_DIR' trở thành vĩnh viễn, hãy chỉnh sửa cấu hình ~/.bashrc bằng trình soạn thảo vim.
Mã:
vim ~/.bashrc
Dán cấu hình sau vào cuối dòng.
Mã:
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'
Lưu và đóng.

Tiếp theo, tải lại cấu hình ~/.bashrc và kiểm tra biến môi trường 'COCKROACH_CERTS_DIR'.
Mã:
source ~/.bashrc
echo $COCKROACH_CERTS_DIR
Và bạn sẽ nhận được biến 'COCKROACH_CERTS_DIR' có giá trị 'directory ${HOME}/.cockroach-certs/'.


- Tạo chứng chỉ CA và khóa​

Sau khi tạo thư mục đường dẫn SSL, chúng ta sẽ tạo chứng chỉ CA và khóa bằng dòng lệnh 'cockroach' trên máy chủ 'node01'.

Tạo chứng chỉ CA và khóa cho '$COCKROACH_CERT_DIR' bằng lệnh 'cockroach' bên dưới.
Mã:
cockroach cert create-ca \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Sau đó, sao chép 'ca.crt' và 'ca.key' đã tạo vào các máy chủ khác 'node02' và 'node03' bằng lệnh scp như bên dưới.
Mã:
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [emailprotected]:~/.cockroach-certs/
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [emailprotected]:~/.cockroach-certs/
Kết quả là, chứng chỉ CA và khóa được tạo và tải lên tất cả các máy chủ.


- Tạo Chứng chỉ Máy khách trên node01​

Sau khi tạo chứng chỉ CA và khóa, chúng tôi sẽ tạo chứng chỉ máy khách được sử dụng để bảo mật giao tiếp giữa shell SQL tích hợp và cụm.

Tạo chứng chỉ máy khách bằng lệnh cockroach sau.
Mã:
cockroach cert create-client \
root \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Bây giờ bạn sẽ nhận được chứng chỉ mới 'client.root.crt' và 'client.root.key' trên thư mục '$COCKROACH_CERTS_DIR'.


- Tạo Chứng chỉ Máy chủ trên Tất cả Máy chủ​

Chứng chỉ máy chủ sẽ được sử dụng để bảo mật thông tin liên lạc giữa các máy chủ trên cụm CockroachDB. Để tham gia cụm bảo mật, bạn cần tạo chứng chỉ máy chủ cho từng máy chủ.

Trên 'node01' đầu tiên, hãy tạo chứng chỉ máy chủ bằng lệnh sau và đảm bảo thay đổi địa chỉ IP bằng địa chỉ IP của riêng bạn.
Mã:
cockroach cert create-node \
localhost \
$(hostname) \
172.16.0.3 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Tiếp theo, hãy tạo chứng chỉ máy chủ cho 'node02' bằng lệnh sau.
Mã:
cockroach cert create-node \
localhost \
$(hostname) \
172.16.0.4 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Sau đó, tạo chứng chỉ máy chủ cho máy chủ 'node03'.
Mã:
cockroach cert create-node \
localhost \
$(hostname) \
172.16.0.5 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key
Bây giờ, nếu bạn kiểm tra thư mục '~/.cockroach-certs', bạn sẽ nhận được chứng chỉ mới 'node.crt' và 'node.key' trên tất cả các máy chủ.
Mã:
ls -lah ${HOME}/.cockroach-certs/
Dưới đây là tất cả các chứng chỉ có sẵn trên máy chủ chính 'node01'.



Bạn sẽ thấy ba chứng chỉ khác nhau, chứng chỉ CA, chứng chỉ Client và chứng chỉ Server.

Và đối với các nút khác là 'node02' và 'node03', bạn sẽ thấy hai chứng chỉ, chứng chỉ CA và chứng chỉ Server.



Do đó, chúng ta đã sẵn sàng để bắt đầu và tạo CockroachDB Secure Cluster.

Bước 4 - Khởi động Secure Cluster CockRoachDB​

Để khởi động secure CockroachDB cluster, bạn cần khởi động tiến trình CockroachDB trên mỗi máy chủ.

Trước khi khởi động tiến trình CockroachDB, hãy đảm bảo thay đổi địa chỉ IP chi tiết cho từng máy chủ bằng địa chỉ IP của riêng bạn và đảm bảo biến môi trường '$COCKROACH_CERTS_DIR' được tải.

Đầu tiên, hãy khởi động tiến trình CockroachDB trên 'node01' bằng lệnh sau.
Mã:
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


Bây giờ hãy di chuyển đến máy chủ 'node02' và bắt đầu quy trình CockroachDB.
Mã:
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


Sau đó, khởi động tiến trình CockroachDB trên máy chủ 'node03'.
Mã:
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--store=/var/lib/cockroachdb \
--advertise-host=172.16.0.5 --listen-addr=172.16.0.5 \
--tham gia=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257


Bây giờ tiến trình CockroachDB đã được bắt đầu trên tất cả các máy chủ. Nó đang chạy trên cổng '26257' và dữ liệu DockroachDB được lưu trữ tại thư mục '/var/lib/cockroachdb'.

Bạn có thể kiểm tra cổng CockroachDB bằng lệnh sau.
Mã:
ss -plntu
Như có thể thấy, quy trình CockroachDB đang chạy trên cổng TCP '26257' để kết nối cơ sở dữ liệu và cổng '8080' làm bảng điều khiển quản trị CockroachDB mặc định.

Tiếp theo, quay lại máy chủ chính 'node01' và khởi tạo cụm bảo mật CockroachDB bằng lệnh bên dưới.
Mã:
cockroach init --host=172.16.0.3:26257
Và bạn sẽ nhận được thông báo sau.
Mã:
Cluster successfully initialized
Ngoài ra, bạn có thể kiểm tra tệp nhật ký CockroachDB để xem chi tiết về quá trình khởi tạo cụm.
Mã:
grep 'node starting' /var/lib/cockroachdb/logs/cockroach.log -A 11
Dưới đây là kết quả bạn sẽ nhận được.



Kết quả là quá trình khởi tạo CockroachDB Secure Cluster đã hoàn tất thành công.

Bước 5 - Tạo Người dùng Quản trị cho CockroachDB​

Sau khi bạn đã khởi tạo thành công CockroachDB Secure Cluster, bạn cần tạo một người dùng mới để đăng nhập vào bảng điều khiển quản trị CockroachDB.

Từ máy chủ chính 'node01', hãy đăng nhập vào CockroachDB SQL shell bằng lệnh sau.
Mã:
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=172.16.0.3
Bây giờ hãy tạo một người dùng mới có tên 'yume' với mật khẩu 'yume321' bằng truy vấn sau.
Mã:
CREATE USER yume WITH PASSWORD 'yume321';
Sau đó, cho phép người dùng 'yume' đăng nhập và thêm vào vai trò 'admin'.
Mã:
ALTER USER yume LOGIN;
GRANT admin TO yume;
Bây giờ hãy kiểm tra tất cả người dùng khả dụng trên CocoroachDB bằng truy vấn sau.
Mã:
SHOW USERS;
Dưới đây là kết quả bạn sẽ nhận được.



Như có thể thấy, người dùng mới yume có sẵn trong danh sách. Đây là thành viên của vai trò 'admin'.

Do đó, bạn đã tạo một người dùng mới cho Cơ sở dữ liệu CockroachDB.

Bước 6 - Truy cập Bảng điều khiển CockroachDB​

Theo mặc định, CockroachDB cung cấp bảng điều khiển quản trị dựa trên web chạy trên cổng TCP mặc định '8080'.

Mở trình duyệt web của bạn và nhập địa chỉ IP máy chủ của bạn với cổng '8080' trên thanh địa chỉ.

https://172.16.0.3:8080/

Bây giờ bạn sẽ nhận được trang Đăng nhập CockroachDB như bên dưới.



Nhập tên người dùng 'yume' và mật khẩu 'yume321' vào trường và nhấp vào 'ĐĂNG NHẬP' button.

Và bạn sẽ nhận được CockroachDB Dashboard như bên dưới.



Như có thể thấy, bạn có CockroachDB Cluster với ba nút trực tiếp.

Kết quả là bạn đã đăng nhập thành công vào CockroachDB Admin Dashboard với một người dùng mới.

Bước 7 - Kiểm tra bản sao cơ sở dữ liệu​

Đối với bước này, chúng ta sẽ kiểm tra bản sao cơ sở dữ liệu giữa mỗi nút trên cụm.

Chúng ta sẽ tạo một cơ sở dữ liệu mới trên máy chủ 'node01' bằng cách sử dụng người dùng 'yume' và sau đó kiểm tra cơ sở dữ liệu từ các nút khác 'node02' và 'node03'.

- Kết nối với node01 và tạo cơ sở dữ liệu​

Trên máy chủ 'node01', hãy đăng nhập vào CockroachDB SQL Shell với tư cách là người dùng 'yume' bằng cách sử dụng lệnh sau.
Mã:
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \
--host=172.16.0.3
Sau khi đăng nhập vào CockroachDB SQL shell, hãy tạo cơ sở dữ liệu mới bằng các truy vấn sau.
Mã:
CREATE DATABASE yumedb;
CREATE DATABASE yumedb2;
Bây giờ hãy kiểm tra tất cả các cơ sở dữ liệu có sẵn trên CockroachDB.
Mã:
SHOW DATABASES;
Và bạn sẽ nhận được 'yumedb' và 'yumedb2' trong danh sách các cơ sở dữ liệu.


- Kiểm tra Bản sao cơ sở dữ liệu trên node02 và node03​

Tiếp theo, di chuyển đến máy chủ 'node02' và đăng nhập vào CockroachDB SQL shell với tư cách là người dùng 'yume' bằng lệnh sau.
Mã:
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \
--host=172.16.0.4
Sau khi đăng nhập, hãy kiểm tra tất cả các cơ sở dữ liệu khả dụng bằng truy vấn sau.
Mã:
SHOW DATABASES;
Và bạn sẽ nhận được các cơ sở dữ liệu 'yumedb' và 'yumedb2' trong danh sách.



Thực hiện tương tự trên máy chủ 'node03' và bạn sẽ nhận được kết quả tương tự.

Dưới đây là kết quả của máy chủ 'node03'.



Kết quả là, quá trình sao chép cơ sở dữ liệu trên các nút trên Cụm CockroachDB đang hoạt động.

Ngoài ra, bên dưới bạn có thể thấy tất cả các cơ sở dữ liệu từ Bảng điều khiển quản trị CockroachDB.



Và cuối cùng, quá trình cài đặt và cấu hình cụm CockroachDB an toàn trên Ubuntu 20.04 đã hoàn tất thành công.

Tham khảo​

https://www.cockroachlabs.com/docs/stable/
 
Back
Bên trên