Cách cài đặt cụm CockroachDB trên AlmaLinux 9

theanh

Administrator
Nhân viên
CockroachDB là một cơ sở dữ liệu SQL phân tán và có thể mở rộng mã nguồn mở cho các ứng dụng đám mây. CockroachDB cung cấp tính nhất quán ở cấp độ tiếp theo, cơ sở dữ liệu SQL được sao chép và kho lưu trữ dữ liệu giao dịch. CockroachDB lưu trữ dữ liệu của bạn ở nhiều vị trí giúp việc phân phối dữ liệu nhanh hơn. Ngoài ra, CockroachDB dễ dàng mở rộng và cung cấp khả năng sẵn sàng cao và khả năng chịu lỗi cho các ứng dụng của bạn.

Hướng dẫn này chỉ cho bạn cách cài đặt và tạo cụm CockroachDB trên nhiều máy chủ AlmaLinux 9. Bạn cũng sẽ học các truy vấn cơ bản bằng CockroachDB và xác minh việc sao chép tự động cơ sở dữ liệu của bạn.

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

Trước khi bắt đầu, hãy đảm bảo bạn có những điều sau:
  • Hai hoặc nhiều máy chủ AlmaLinux 9 - Trong bản demo này, chúng tôi sẽ sử dụng hai máy chủ: srv1 có địa chỉ IP 192.168.10.20srv2 có địa chỉ IP 192.168.10.21.
  • Người dùng không phải root có thể thực thi lệnh sudo để có được quyền root.

Thiết lập FQDN​

Bước đầu tiên bạn sẽ thực hiện là thiết lập fqdn (tên miền đủ điều kiện) cho tất cả các máy chủ của bạn và đảm bảo rằng mỗi fqdn được trỏ đến đúng địa chỉ IP cục bộ.

Trên srv1, hãy chạy lệnh sau để thiết lập fqdn thành srv1.hwdomain.lan.
Mã:
sudo hostnamectl set-hostname srv1.hwdomain.lan
Đối với srv2, hãy chạy lệnh sau để thiết lập fqdn srv2.hwdomain.lan.
Mã:
sudo hostnamectl set-hostname srv2.hwdomain.lan
Bây giờ hãy mở tệp /etc/hosts bằng lệnh trình chỉnh sửa nano sau.
Mã:
sudo nano /etc/hosts
Chèn cấu hình sau vào cuối dòng.
Mã:
```ini
192.168.10.20 srv1.hwdomain.lan srv1
192.168.10.21 srv2.hwdomain.lan srv2
```
Lưu và thoát khỏi tệp sau khi hoàn tất.

Cuối cùng, chạy lệnh sau để xác minh fqdn của từng máy chủ và thực hiện lệnh ping để đảm bảo rằng mỗi fqdn được trỏ đến địa chỉ IP nội bộ thích hợp.
Mã:
sudo hostname -f
ping -c3 srv1.hwdomain.lan
ping -c3 srv2.hwdomain.lan
Máy chủ srv1 phải có fqdn srv1.hwdomain.lan và trỏ đến địa chỉ IP 192.168.10.20, trong khi máy chủ srv2 được định cấu hình với fqdn srv2.hwdomain.lan và địa chỉ IP 192.168.10.21.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22749%22%20height=%22376%22%3E%3C/svg%3E

Tải xuống và cài đặt CockroachDB​

CockroachDB có thể được cài đặt trên nhiều môi trường, bạn có thể cài đặt theo cách truyền thống bằng cách tải xuống gói nhị phân dựng sẵn của CockroachDB hoặc cài đặt trong môi trường chứa như Kubernetes.

Trong phần này, bạn sẽ cài đặt CockroachDB thông qua gói nhị phân dựng sẵn vào máy chủ AlmaLinux 9 của mình.

Đầu tiên, hãy cài đặt curl bằng lệnh dnf bên dưới.
Mã:
sudo dnf install curl -y

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22231%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh bên dưới để tải xuống gói nhị phân CockroachDB và giải nén nó qua tar lệnh.
Mã:
curl https://binaries.cockroachdb.com/cockroach-v23.1.3.linux-amd64.tgz --output cockroach-v23.1.3.linux-amd64.tgz
tar -xzf cockroach-v23.1.3.linux-amd64.tgz
Di chuyển tệp nhị phân CockroachDB cockroach-v23.1.3.linux-amd64/cockroach đến thư mục /usr/bin/ bằng lệnh bên dưới.
Mã:
sudo cp -i cockroach-v23.1.3.linux-amd64/cockroach /usr/bin/

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22190%22%3E%3C/svg%3E


Cuối cùng, nhập lệnh sau để xác minh đường dẫn đầy đủ của tệp nhị phân cockroach và phiên bản CockroachDB.
Mã:
which cockroach
cockroach version

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22690%22%20height=%22360%22%3E%3C/svg%3E

Thiết lập Firewalld​

Sau khi cài đặt CockroachDB, bạn sẽ thiết lập firewalld và mở cổng 8080 cho bảng điều khiển quản trị web CockroachDB và cổng 26257 cho kết nối cụm.

Chạy lệnh firewall-cmd bên dưới để thêm cổng 8080 và 26257 vào firewalld. Sau đó, tải lại firewalld để áp dụng các thay đổi.
Mã:
sudo firewall-cmd --add-port={8080/tcp,26257/tcp} --permanent
sudo firewall-cmd --reload
Bây giờ hãy xác minh danh sách các quy tắc tường lửa bằng lệnh bên dưới. Bạn sẽ thấy cổng 8080 và 26257 được thêm vào tường lửa.
Mã:
sudo firewall-cmd --list-all

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22715%22%20height=%22304%22%3E%3C/svg%3E

Tạo chứng chỉ SSL/TLS​

Trong các mục sau phần, bạn sẽ tạo nhiều chứng chỉ sẽ được sử dụng cho cụm CockroachDB. Điều này có thể đạt được thông qua OpenSSL, nhưng bạn cũng có thể sử dụng công cụ dòng lệnh cockroach.

Dưới đây là một số chứng chỉ SSL/TLS mà bạn sẽ tạo:
  • Chứng chỉ CA: Chứng chỉ này sẽ được sử dụng để ký tất cả các chứng chỉ của bạn.
  • Chứng chỉ máy khách: Chứng chỉ này có thể được sử dụng để kết nối với cụm CockroachDB.
  • Chứng chỉ nút: Bạn phải tạo chứng chỉ nút cho từng máy chủ để tạo cụm CockroachDB an toàn.

Tạo chứng chỉ CA​

Chạy lệnh sau trên cả máy chủ srv1 và srv2 để tạo thư mục mới /opt/cockroachdb/. Trong thư mục đó, bạn cũng sẽ tạo các thư mục certs và private.
Mã:
mkdir -p /opt/cockroachdb/{certs,private}
Trên srv1, hãy chạy lệnh cockroach bên dưới để tạo chứng chỉ CA. Lệnh này sẽ tạo chứng chỉ CA ca.crtca.key.
Mã:
cockroach cert create-ca \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22540%22%20height=%22252%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh scp bên dưới để sao chép chứng chỉ CA ca.crt và ca.key vào srv2 máy chủ.
Mã:
scp /opt/cockroachdb/private/ca.key [emailprotected]:/opt/cockroachdb/private/
scp /opt/cockroachdb/certs/ca.crt [emailprotected]:/opt/cockroachdb/certs/

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22111%22%3E%3C/svg%3E

Tạo chứng chỉ máy khách​

Trên máy chủ srv1, hãy chạy lệnh sau để tạo chứng chỉ máy khách cho người dùng gốc mặc định. Điều này sẽ tạo ra hai chứng chỉ client.root.crtclient.root.key có thể được sử dụng để đăng nhập vào cụm CockroachDB.
Mã:
cockroach cert create-client \
root \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22568%22%20height=%22210%22%3E%3C/svg%3E

Tạo chứng chỉ nút​

Sau khi chứng chỉ CA được tạo và tải lên máy chủ srv2, bạn sẽ tạo chứng chỉ nút trên cả máy chủ srv1 và srv2.

Chạy lệnh sau trên máy chủ srv1 để tạo nút chứng chỉ. Đảm bảo thay đổi fqdn và địa chỉ IP của máy chủ srv1.
Mã:
cockroach cert create-node \
srv1.hwdomain.lan \
192.168.10.20 \
localhost \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key
Sau khi lệnh được thực thi, chứng chỉ nút node.crtnode.key sẽ khả dụng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22573%22%20height=%22256%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh bên dưới trên máy chủ srv2 để tạo chứng chỉ nút. Hãy chắc chắn thay đổi fqdn và địa chỉ IP của máy chủ srv2.
Mã:
cockroach cert create-node \
srv2.hwdomain.lan \
192.168.10.21 \
localhost \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key
Bạn sẽ thấy chứng chỉ nút node.crtnode.key được tạo.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22425%22%20height=%22253%22%3E%3C/svg%3E

Chạy CockroachDB dưới dạng Dịch vụ Systemd​

Sau khi tạo chứng chỉ SSL/TLS, tiếp theo bạn sẽ khởi động dịch vụ CockroachDB. Bạn có thể khởi động CockroachDB thông qua dòng lệnh theo cách thủ công, nhưng phương pháp được khuyến nghị là sử dụng dịch vụ systemd.

Đầu tiên, hãy chạy lệnh sau trên cả máy chủ srv1srv2 để tạo người dùng mới cockroach và thay đổi quyền sở hữu thư mục /opt/cockroachdb thành người dùng cockroach.
Mã:
sudo adduser -d /opt/cockroachdb -r -U cockroach
sudo chown -R cockroach:cockroach /opt/cockroachdb
Trên máy chủ srv1, hãy chạy lệnh nano bên dưới để tạo tệp dịch vụ systemd mới /etc/systemd/system/cockroachdb.service.
Mã:
sudo nano /etc/systemd/system/cockroachdb.service
Chèn cấu hình sau và đảm bảo thay đổi tham số --advertise-addr bằng địa chỉ IP máy chủ srv1.
Mã:
[Unit]
Description=Cockroach Database cluster node
Requires=network.target

[Service]
Type=notify
WorkingDirectory=/opt/cockroachdb
ExecStart=/usr/bin/cockroach start --certs-dir=/opt/cockroachdb/certs --advertise-addr=192.168.10.20 --join=192.168.10.20,192.168.10.21
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Bây giờ hãy di chuyển đến máy chủ srv2 và tạo một tệp dịch vụ systemd mới /etc/systemd/system/cockroachdb.service bằng trình soạn thảo nano.
Mã:
sudo nano /etc/systemd/system/cockroachdb.service
Thêm cấu hình sau vào tệp và đảm bảo thay đổi tham số --advertise-addr thành IP máy chủ srv2 địa chỉ.
Mã:
[Unit]
Description=Cockroach Database cluster node
Requires=network.target

[Service]
Type=notify
WorkingDirectory=/opt/cockroachdb
ExecStart=/usr/bin/cockroach start --certs-dir=/opt/cockroachdb/certs --advertise-addr=192.168.10.21 --join=192.168.10.20,192.168.10.21
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Tiếp theo, chạy lệnh systemctl bên dưới để tải lại trình quản lý systemd và áp dụng dịch vụ systemd mới.
Mã:
sudo systemctl daemon-reload
Sau đó, khởi động và kích hoạt dịch vụ cockroachdb bằng lệnh systemctl bên dưới.
Mã:
sudo systemctl start cockroachdb
sudo systemctl enable cockroachdb

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22724%22%20height=%22261%22%3E%3C/svg%3E


Cuối cùng, hãy xác minh dịch vụ cockroachdb để đảm bảo rằng dịch vụ đang chạy.
Mã:
sudo systemctl status cockroachdb
Nếu cấu hình thành công, bạn sẽ nhận được trạng thái dịch vụ cockroachdb hoạt động (đang chạy).

Trạng thái dịch vụ cockroachdb trên máy chủ srv1.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22172%22%3E%3C/svg%3E


trạng thái dịch vụ cockroachdb trên máy chủ srv2.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22165%22%3E%3C/svg%3E

Khởi tạo cụm CockroachDB​

Sau khi khởi động CockroachDB dưới dạng dịch vụ systemd trên máy chủ srv1 và srv2, bạn đã sẵn sàng khởi tạo cụm CockroachDB.

Chạy lệnh cockroach bên dưới trên máy chủ srv1 để khởi tạo CockroachDB cụm.
Mã:
cockroach init --certs-dir=/opt/cockroachdb/certs --host=192.168.10.20:26257
Nếu khởi tạo thành công, bạn sẽ nhận được đầu ra "Cụm đã khởi tạo thành công".

Bây giờ hãy chạy lệnh bên dưới để kiểm tra nhật ký CockroachDB trong thư mục dữ liệu CockroachDB /opt/cockroachdb/cockroach-data/.
Mã:
grep 'node starting' /opt/cockroachdb/cockroach-data/logs/cockroach.log -A 11
Nếu bạn nhận được kết quả như "CockroachDB node starting..", điều đó có nghĩa là cụm CockroachDB đã được khởi tạo thành công.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22247%22%3E%3C/svg%3E


Cuối cùng, hãy chạy lệnh sau để kiểm tra danh sách các nút trên cụm CockroachDB và trạng thái chi tiết của từng nút.
Mã:
cockroach node --certs-dir=/opt/cockroachdb/certs --host=192.168.10.20 ls
cockroach node --certs-dir=/opt/cockroachdb/certs --host=192.168.10.20 status
Bạn sẽ thấy hai máy chủ CockroachDB trong cụm có trạng thái hoạt động và khả dụng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22132%22%3E%3C/svg%3E

Tạo Người dùng Quản trị trên CockroachDB​

Khi cụm CockroachDB đang chạy, bước tiếp theo là tạo người dùng quản trị cho cụm CockroachDB.

Đầu tiên, hãy chạy lệnh cockroach bên dưới để kết nối với máy chủ CockroachDB srv1.hwdomain.lan với người dùng gốc mặc định và chứng chỉ trong /opt/cockroachdb/certs thư mục.
Mã:
cockroach sql --certs-dir=/opt/cockroachdb/certs --host=srv1.hwdomain.lan:26257
Trong dấu nhắc CockroachDB bên dưới, bạn đã xác nhận rằng mình đã kết nối với tư cách là người dùng root mặc định với máy chủ CockroachDB srv1.hwdomain.lan và cơ sở dữ liệu defaultdb.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22188%22%3E%3C/svg%3E


Bây giờ hãy chạy truy vấn sau để liệt kê các cơ sở dữ liệu có sẵn trên cụm CockroachDB.
Mã:
SHOW DATABASES;
Bạn sẽ thấy cơ sở dữ liệu defaultdb, postgressystem trên CockroachDB của bạn cluster.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22189%22%3E%3C/svg%3E


Tiếp theo, chạy truy vấn sau để tạo người dùng mới alice. Sau đó, cấp quyền quản trị cho người dùng alice. Đừng quên thay đổi mật khẩu trong truy vấn bên dưới.
Mã:
CREATE USER alice WITH PASSWORD 'password';
GRANT admin TO alice;
Bây giờ hãy nhập quit hoặc nhấn Ctrl+d để thoát khỏi shell CockroachDB.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22206%22%3E%3C/svg%3E


Cuối cùng, hãy khởi chạy trình duyệt web của bạn và truy cập địa chỉ IP srv1 theo sau là cổng 8080 (tức là: http://192.168.10.20:8080/) để truy cập bảng điều khiển quản trị web CockroachDB. Bạn sẽ được nhắc xác thực CockroachDB.

Nhập tên người dùng alice và mật khẩu, sau đó nhấp vào Đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22379%22%3E%3C/svg%3E


Nếu bạn có tên người dùng và mật khẩu phù hợp, bạn sẽ nhận được bảng điều khiển quản trị CockroachDB. Cụm CockroachDB của bạn có hai máy chủ, 192.168.10.20192.168.10.21.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22436%22%3E%3C/svg%3E

Hoạt động cơ bản trên CockroachDB​

Trong phần sau, bạn sẽ tìm hiểu cách tạo cơ sở dữ liệu và bảng mới, chèn và truy xuất dữ liệu trên CockroachDB. Lệnh sau sẽ được chạy trên máy chủ srv1.

Trước tiên, hãy chạy lệnh sau để đăng nhập vào cụm CockroachDB thông qua người dùng alice.
Mã:
cockroach sql --user=alice --certs-dir=/opt/cockroachdb/certs --host=srv1.hwdomain.lan:26257
Khi được nhắc nhập mật khẩu, hãy nhập mật khẩu cho người dùng alice.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22222%22%3E%3C/svg%3E


Sau khi đăng nhập, hãy chạy các truy vấn sau để tạo một cơ sở dữ liệu testdb mới với bảng users.
Mã:
CREATE DATABASE testdb;
CREATE TABLE testdb.users (
 id INT PRIMARY KEY NOT NULL,
 name TEXT NOT NULL,
 age INT NOT NULL,
 address CHAR(50),
 salary REAL
);

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22748%22%20height=%22394%22%3E%3C/svg%3E


Bây giờ hãy chạy truy vấn USE để chuyển sang cơ sở dữ liệu testdb và chạy một số truy vấn INSERT bên dưới để thêm dữ liệu mới vào bảng users.
Mã:
USE testdb;
INSERT INTO users (id,name,age,address,salary) VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (2, 'Jesse', 35, 'Mexico', 30000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (3, 'Linda', 27, 'Canada', 40000.00);

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22258%22%3E%3C/svg%3E


Cuối cùng, thực hiện truy vấn SELECT bên dưới để lấy dữ liệu của bạn từ bảng users.
Mã:
SELECT * FROM users;
Dữ liệu của bạn sẽ được in trên màn hình thiết bị đầu cuối của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22214%22%3E%3C/svg%3E

Kiểm tra bản sao cơ sở dữ liệu trong cụm CockroachDB​

Sau khi tạo cơ sở dữ liệu mới và chèn dữ liệu mới, bây giờ bạn sẽ xác minh bản sao cơ sở dữ liệu trên cụm CockroachDB từ máy chủ srv2, vì vậy hãy đảm bảo chạy các lệnh này trên máy chủ srv2.

Trên máy chủ srv2, hãy chạy lệnh sau để kết nối với máy chủ CockroachDB thông qua người dùng alice.
Mã:
cockroach sql --user=alice --certs-dir=/opt/cockroachdb/certs --host=srv2.hwdomain.lan:26257
Nhập mật khẩu cho người dùng alice khi được nhắc.

Sau khi đăng nhập, hãy chạy truy vấn sau để kiểm tra danh sách các cơ sở dữ liệu khả dụng trên CockroachDB cụm.
Mã:
SHOW DATABASES;
Nếu sao chép cơ sở dữ liệu thành công, bạn sẽ có cơ sở dữ liệu testdb khả dụng trên máy chủ srv2.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22318%22%3E%3C/svg%3E


Bây giờ hãy chạy các truy vấn sau để chuyển sang cơ sở dữ liệu testdb và truy xuất dữ liệu khả dụng từ bảng người dùng.
Mã:
USE testdb;
SELECT * FROM users;
Nếu sao chép thành công, bạn sẽ thấy dữ liệu của mình trên máy chủ srv2.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22359%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng và làm tốt lắm! Bạn đã hoàn tất cài đặt cụm CockroachDB trên máy chủ AlmaLinux 9 của mình. Bạn đã tạo một cụm CockroachDB an toàn với chứng chỉ SSL/TLS và chạy CockroachDB như một dịch vụ systemd ở chế độ nền. Ngoài ra, bạn cũng đã học một số truy vấn cơ bản để tạo người dùng quản trị, cơ sở dữ liệu và chèn và truy xuất dữ liệu trên CockroachDB.

Với những điều này trong đầu, giờ đây bạn có thể bắt đầu di chuyển đến cụm CockroachDB và cơ sở dữ liệu của bạn sẽ tự động được sao chép sang nhiều nút.
 
Back
Bên trên