CockroachDB là cơ sở dữ liệu SQL phân tán miễn phí và gốc đám mây được sử dụng để xây dựng và quản lý các dịch vụ đám mây hiện đại, có thể mở rộng. Nó giúp bạn vượt qua các lỗi phần mềm và phần cứng. Nó lưu trữ các bản sao dữ liệu ở nhiều vị trí để cung cấp quyền truy cập nhanh chóng. Nó được xây dựng trên kho lưu trữ khóa-giá trị giao dịch và có tính nhất quán cao và có khả năng tồn tại sau các lỗi đĩa, máy và trung tâm dữ liệu với độ trễ gần như bằng không và không cần can thiệp thủ công.
Hướng dẫn này sẽ giải thích cách thiết lập cụm CockroachDB ba nút trên máy chủ Ubuntu 22.04.
tên máy chủ Địa chỉ IP
node1 192.168.10.10
node2 192.168.10.11
node3 192.168.10.12
Sau khi tất cả các nút được cập nhật, hãy khởi động lại chúng để áp dụng các thay đổi.
Trước tiên, hãy cài đặt chrony bằng lệnh sau:
Sau khi cài đặt, hãy chỉnh sửa tệp cấu hình chrony bằng lệnh sau:
Tìm nhóm mặc định và thay thế chúng bằng nhóm sau dòng:
Lưu và đóng tệp sau đó khởi động lại dịch vụ chrony và cho phép nó bắt đầu khi khởi động lại hệ thống bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Đầu tiên, tải xuống phiên bản mới nhất của CockroachDB từ trang web chính thức của họ bằng lệnh sau:
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống bằng lệnh sau:
Tiếp theo, sao chép tệp nhị phân CockroachDB vào thư mục /usr/local/bin với lệnh sau lệnh:
Tiếp theo, xác minh phiên bản CockroachDB bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Lúc này, CockroachDB đã được cài đặt trên tất cả các nút. Bây giờ bạn có thể tiến hành bước tiếp theo.
Tiếp theo, bạn sẽ cần tạo chứng chỉ CA, chứng chỉ gốc và chứng chỉ máy khách.
Lệnh này sẽ tạo ca.key và ca.crt bên trong thư mục~/certs.
Sau đó, sao chép CA đã tạo vào cả hai nút bằng lệnh sau:
Chạy lệnh sau trên tất cả các nút để tạo chứng chỉ máy khách:
Sau khi hoàn tất, bạn có thể tiến hành tạo chứng chỉ máy chủ.
Trên node1, hãy chạy lệnh sau để tạo máy chủ chứng chỉ:
Trên node2, chạy lệnh sau để tạo chứng chỉ máy chủ:
Trên node3, chạy lệnh sau để tạo máy chủ chứng chỉ:
Điều này sẽ tạo tệp node.key và node.crt bên trong thư mục ~/certs.
Bạn có thể liệt kê tất cả các chứng chỉ bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Trên node1, hãy chạy lệnh sau để quảng cáo Secure CockroachDB Cụm:
Bạn sẽ nhận được kết quả sau.
Tiếp theo, khởi tạo cụm bằng lệnh sau lệnh.
Theo mặc định, cụm CockroachDB lắng nghe trên cổng 26257. Bạn có thể kiểm tra bằng lệnh sau.
Bạn sẽ nhận được thông báo sau đầu ra.
Bạn cũng có thể kiểm tra trạng thái của cụm bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Trên node2, hãy chạy lệnh sau để thêm nó vào CockroachDB cụm.
Trên nút 3, hãy chạy lệnh sau để thêm nó vào cụm CockroachDB.
Tiếp theo, quay lại nút 1 và kiểm tra trạng thái của cụm bằng lệnh sau lệnh:
Bạn sẽ thấy tất cả các nút được thêm vào cụm.
Tại thời điểm này, cụm CockroachDB đã được khởi động và lắng nghe trên cổng 8080. Bây giờ bạn có thể tiến hành bước tiếp theo.
Trên node1, hãy đăng nhập vào shell SQL cockroachdb bằng lệnh sau:
Tiếp theo, hãy tạo một người dùng có tên là user1 và đặt mật khẩu bằng lệnh sau:
Tiếp theo, hãy thoát khỏi shell SQL sử dụng lệnh sau.
Bây giờ, hãy mở trình duyệt web của bạn và truy cập giao diện web CockroachDB bằng URL
Bạn sẽ thấy trang sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%22%3E%3C/svg%3E
Cung cấp tên người dùng, mật khẩu và quản trị viên của bạn nhấp vào nút ĐĂNG NHẬP. Bạn sẽ thấy bảng điều khiển CockroachDB trên trang sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22371%22%3E%3C/svg%3E
Trên node1, hãy đăng nhập vào shell SQL bằng lệnh sau lệnh:
Tiếp theo, tạo một cơ sở dữ liệu có tên là wpdb1 và wpdb2 bằng lệnh sau:
Tiếp theo, xác minh cơ sở dữ liệu bằng lệnh sau lệnh:
Bạn sẽ thấy tất cả các cơ sở dữ liệu trong đầu ra sau:
Tiếp theo, hãy đến Node2 và xác minh xem cơ sở dữ liệu đã được sao chép hay chưa.
Trên node2, hãy đăng nhập vào shell SQL bằng lệnh sau lệnh:
Chạy lệnh sau để hiển thị cơ sở dữ liệu:
Bạn sẽ thấy wpdb1 và wpdb2 trong đầu ra:
Đầu ra ở trên cho biết quá trình sao chép cơ sở dữ liệu đang hoạt động trên CockroachDB Cluster.
Hướng dẫn này sẽ giải thích cách thiết lập cụm CockroachDB ba nút trên máy chủ Ubuntu 22.04.
Điều kiện tiên quyết
- Ba máy chủ chạy Ubuntu 22.04.
- Mật khẩu gốc được cấu hình trên mỗi máy chủ.
tên máy chủ Địa chỉ IP
node1 192.168.10.10
node2 192.168.10.11
node3 192.168.10.12
Cập nhật hệ thống của bạn
Trước khi bắt đầu, chúng tôi khuyên bạn nên cập nhật và nâng cấp tất cả các nút lên phiên bản mới nhất. Bạn có thể cập nhật từng nút một bằng cách chạy lệnh sau:
Mã:
apt update -y
apt upgrade -y
Thiết lập đồng bộ hóa thời gian
Trước khi bắt đầu, bạn sẽ cần thiết lập đồng bộ hóa thời gian giữa tất cả các nút. Bạn có thể thực hiện bằng cách sử dụng chrony.Trước tiên, hãy cài đặt chrony bằng lệnh sau:
Mã:
apt install chrony -y
Mã:
nano /etc/chrony/chrony.conf
Mã:
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
Mã:
systemctl restart chrony
systemctl enable chrony
Cài đặt CockroachDB trên tất cả các nút
Trong phần này, chúng tôi sẽ cài đặt CockroachDB trên tất cả các nút. Chạy các lệnh sau trên tất cả các nút để cài đặt CockroachDB.Đầu tiên, tải xuống phiên bản mới nhất của CockroachDB từ trang web chính thức của họ bằng lệnh sau:
Mã:
wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
Mã:
tar -xvzf cockroach-latest.linux-amd64.tgz
Mã:
cp cockroach-*/cockroach /usr/local/bin/
Mã:
cockroach version
Mã:
Build Tag: v22.2.2
Build Time: 2023/01/04 17:23:00
Distribution: CCL
Platform: linux amd64 (x86_64-pc-linux-gnu)
Go Version: go1.19.1
C Compiler: gcc 6.5.0
Build Commit ID: 07a53a36601e9ca5fcffcff55f69b43c6dfbf1c1
Build Type: release
Tạo chứng chỉ
CockroachDB cũng yêu cầu chứng chỉ máy chủ và máy khách để có kết nối an toàn. Trước tiên, hãy tạo một thư mục để lưu trữ các tệp chứng chỉ trên tất cả các nút. Chạy lệnh sau trên tất cả các nút để tạo thư mục certs:
Mã:
mkdir ~/certs
Tạo chứng chỉ CA
Trên nút1, tạo chứng chỉ CA bằng cách sử dụng lệnh sau lệnh:
Mã:
cockroach cert create-ca --certs-dir=certs --ca-key=certs/ca.key
Sau đó, sao chép CA đã tạo vào cả hai nút bằng lệnh sau:
Mã:
scp ~/certs/ca.crt ~/certs/ca.key [emailprotected]:~/certs/
scp ~/certs/ca.crt ~/certs/ca.key [emailprotected]:~/certs/
Tạo chứng chỉ máy khách
Tiếp theo, bạn sẽ cần tạo chứng chỉ máy khách để bảo mật thông tin liên lạc giữa SQL và cụm.Chạy lệnh sau trên tất cả các nút để tạo chứng chỉ máy khách:
Mã:
cockroach cert create-client root --certs-dir=certs --ca-key=certs/ca.key
Tạo chứng chỉ máy chủ
Tiếp theo, bạn sẽ cần tạo chứng chỉ máy chủ để bảo mật thông tin liên lạc giữa các máy chủ trên cụm CockroachDB.Trên node1, hãy chạy lệnh sau để tạo máy chủ chứng chỉ:
Mã:
cockroach cert create-node localhost $(hostname) 192.168.10.10 --certs-dir=certs --ca-key=certs/ca.key
Mã:
cockroach cert create-node localhost $(hostname) 192.168.10.11 --certs-dir=certs --ca-key=certs/ca.key
Mã:
cockroach cert create-node localhost $(hostname) 192.168.10.12 --certs-dir=certs --ca-key=certs/ca.key
Bạn có thể liệt kê tất cả các chứng chỉ bằng lệnh sau:
Mã:
cockroach --certs-dir=certs cert list
Mã:
Certificate directory: certs Usage | Certificate File | Key File | Expires | Notes | Error
---------+------------------+-----------------+------------+--------------------------------------------+-------- CA | ca.crt | | 2033/01/17 | num certs: 1 | Node | node.crt | node.key | 2028/01/14 | addresses: localhost,vultr,192.168.10.10 | Client | client.root.crt | client.root.key | 2028/01/14 | user: root |
(3 rows)
Khởi động cụm CockroachDB
Tại thời điểm này, tất cả các chứng chỉ đã sẵn sàng để khởi động cụm CockroachDB.Trên node1, hãy chạy lệnh sau để quảng cáo Secure CockroachDB Cụm:
Mã:
cockroach start --background --certs-dir=certs --advertise-host=192.168.10.10 --join=192.168.10.10,192.168.10.11,192.168.10.12 --background
Mã:
* WARNING: Running a server without --sql-addr, with a combined RPC/SQL listener, is deprecated.
* This feature will be removed in the next version of CockroachDB.
*
*
* INFO: initial startup completed.
* Node will now attempt to join a running cluster, or wait for `cockroach init`.
* Client connections will be accepted after this completes successfully.
* Check the log file(s) for progress.
Mã:
cockroach init --certs-dir=certs --host=192.168.10.10
Mã:
ss -antpl | grep 26257
Mã:
LISTEN 0 4096 *:26257 *:* users:(("cockroach",pid=86868,fd=25))
Mã:
cockroach node status --certs-dir=certs --host=192.168.10.10
Mã:
id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live
-----+-----------------------+-----------------------+---------+--------------------------------------+--------------------------------------+----------+--------------+---------- 1 | 192.168.10.10:26257 | 192.168.10.10:26257 | v22.2.2 | 2023-01-10 07:19:44.009519 +0000 UTC | 2023-01-10 07:20:24.521341 +0000 UTC | | true | true
(1 row)
Thêm các nút còn lại vào cụm
Tiếp theo, bạn sẽ cần thêm cả hai nút vào cụm CockroachDB.Trên node2, hãy chạy lệnh sau để thêm nó vào CockroachDB cụm.
Mã:
cockroach start --background --certs-dir=certs --advertise-host=192.168.10.11 --listen-addr=192.168.10.11 --join=192.168.10.10:26257
Mã:
cockroach start --background --certs-dir=certs --advertise-host=192.168.10.12 --listen-addr=192.168.10.12 --join=192.168.10.10:26257
Mã:
cockroach node status --certs-dir=certs --host=192.168.10.10
Mã:
id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live
-----+-----------------------+-----------------------+---------+--------------------------------------+--------------------------------------+----------+--------------+---------- 1 | 192.168.10.10:26257 | 192.168.10.10:26257 | v22.2.2 | 2023-01-10 07:19:44.009519 +0000 UTC | 2023-01-10 07:21:27.529911 +0000 UTC | | true | true 2 | 192.168.10.11:26257 | 192.168.10.11:26257 | v22.2.2 | 2023-01-10 07:21:04.206015 +0000 UTC | 2023-01-10 07:21:26.718227 +0000 UTC | | true | true 3 | 192.168.10.12:26257 | 192.168.10.12:26257 | v22.2.2 | 2023-01-10 07:21:17.704146 +0000 UTC | 2023-01-10 07:21:26.718768 +0000 UTC | | true | true
Truy cập Bảng điều khiển CockroachDB
CockroachDB cung cấp giao diện web đơn giản và dễ sử dụng để giám sát cụm. Trước khi truy cập giao diện web CockroachDB, bạn sẽ cần tạo một người dùng quản trị và đặt mật khẩu cho người dùng đó.Trên node1, hãy đăng nhập vào shell SQL cockroachdb bằng lệnh sau:
Mã:
cockroach sql --certs-dir=certs --host=192.168.10.10
Mã:
[emailprotected]:26257/defaultdb> CREATE USER user1 WITH PASSWORD 'securepassword';
Mã:
[emailprotected]:26257/defaultdb> exit;
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%22%3E%3C/svg%3E
Cung cấp tên người dùng, mật khẩu và quản trị viên của bạn nhấp vào nút ĐĂNG NHẬP. Bạn sẽ thấy bảng điều khiển CockroachDB trên trang sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22371%22%3E%3C/svg%3E
Xác minh bản sao cơ sở dữ liệu trong Custer
Tiếp theo, bạn sẽ cần xác minh xem cơ sở dữ liệu có được sao chép giữa tất cả các nút hay không.Trên node1, hãy đăng nhập vào shell SQL bằng lệnh sau lệnh:
Mã:
cockroach sql --certs-dir=certs --host=192.168.10.10
Mã:
create database wpdb1;
create database wpdb2;
Mã:
show databases;
Mã:
database_name | owner | primary_region | secondary_region | regions | survival_goal
----------------+-------+----------------+------------------+---------+---------------- defaultdb | root | NULL | NULL | {} | NULL postgres | root | NULL | NULL | {} | NULL system | node | NULL | NULL | {} | NULL wpdb1 | root | NULL | NULL | {} | NULL wpdb2 | root | NULL | NULL | {} | NULL
(5 rows)
Time: 3ms total (execution 3ms / network 1ms)
Trên node2, hãy đăng nhập vào shell SQL bằng lệnh sau lệnh:
Mã:
cockroach sql --certs-dir=certs --host=192.168.10.11
Mã:
show databases;
Mã:
database_name | owner | primary_region | secondary_region | regions | survival_goal
----------------+-------+----------------+------------------+---------+---------------- defaultdb | root | NULL | NULL | {} | NULL postgres | root | NULL | NULL | {} | NULL system | node | NULL | NULL | {} | NULL wpdb1 | root | NULL | NULL | {} | NULL wpdb2 | root | NULL | NULL | {} | NULL
(5 rows)
Time: 7ms total (execution 6ms / network 1ms)