Cài đặt CockroachDB từ Repository chính thức trên Ubuntu 24.04
Chúng ta cần thêm repository chính thức của CockroachDB vào hệ thống Ubuntu 24.04 để đảm bảo nhận được bản cập nhật mới nhất và ổn định nhất.
Thực hiện lệnh sau để cài đặt gói gnupg và thêm khóa GPG của CockroachDB:
sudo apt-get update && sudo apt-get install -y gnupg wget
wget https://www.cockroachlabs.com/repo/cockroachdb.gpg
sudo apt-key add cockroachdb.gpg
rm cockroachdb.gpg
Kết quả: Khóa GPG được thêm vào hệ thống, không có lỗi hiển thị.
Tiếp theo, thêm repository vào danh sách nguồn cài đặt và cập nhật lại danh sách gói:
echo "deb https://repos.cockroachdb.com/cockroach/v24.1/ focal main" | sudo tee /etc/apt/sources.list.d/cockroachdb.list
sudo apt-get update
Kết quả: Repository được ghi vào file /etc/apt/sources.list.d/cockroachdb.list và lệnh update chạy thành công.
Cài đặt gói CockroachDB chính thức:
sudo apt-get install -y cockroach
Kết quả: Gói cockroach được cài đặt, bạn có thể chạy lệnh cockroach --version để kiểm tra phiên bản.
Cấu hình Service systemd cho CockroachDB
Để CockroachDB tự động khởi động khi máy lên và chạy như một service hệ thống, ta cần tạo file cấu hình systemd.
Tạo file cấu hình service tại /etc/systemd/system/cockroach.service với nội dung sau:
cat > /etc/systemd/system/cockroach.service
Kết quả: File service được tạo. Lưu ý thay thế địa chỉ IP trong tham số --join bằng IP thực tế của các node trong cụm của bạn.
Reload systemd daemon để nhận diện file service mới:
sudo systemctl daemon-reload
Kết quả: Không có lỗi, systemd đã nhận file cấu hình.
Verify bằng lệnh kiểm tra trạng thái service (chưa bật):
systemctl status cockroach
Kết quả: Hiển thị trạng thái inactive hoặc dead, nhưng không báo lỗi Unit not found.
Khởi tạo cụm (Cluster) với 3 Node đầu tiên
Trước khi chạy service, ta cần khởi tạo cụm bằng lệnh init. Việc này tạo người dùng root và cấu hình cơ bản. Chúng ta sẽ thực hiện trên node đầu tiên (Node 1).
Chạy lệnh khởi tạo cụm với chế độ bảo mật (sẽ được kích hoạt sau) hoặc không bảo mật để test cấu trúc. Ở đây ta dùng chế độ bảo mật ngay từ đầu để chuẩn bị cho bước tiếp theo.
sudo -u cockroach cockroach init --certs-dir=/var/lib/cockroach --host=192.168.1.10
Kết quả: Hiển thị initialized cluster và thông tin cockroach root@192.168.1.10:26257.
Khởi động service CockroachDB trên Node 1:
sudo systemctl enable --now cockroach
Kết quả: Service được bật và chạy tự động. Lệnh systemctl status cockroach sẽ trả về active (running).
Trên Node 2 và Node 3, bạn cần thực hiện tương tự: Chỉnh sửa file /etc/systemd/system/cockroach.service (nếu cần), chạy daemon-reload, và bật service:
sudo systemctl enable --now cockroach
Kết quả: Cả 3 node đều chạy service CockroachDB.
Verify trạng thái cụm từ Node 1 (Node đã chạy init):
cockroach node list --certs-dir=/var/lib/cockroach --host=192.168.1.10
Kết quả: Danh sách hiển thị 3 node với trạng thái live và liveness là live.
Bật chế độ bảo mật TLS và Xác thực người dùng
Để bảo mật giao tiếp giữa các node và từ client đến server, ta cần tạo chứng chỉ (certificates) cho từng node và cụm.
Trên Node 1, tạo thư mục chứa chứng chỉ và sinh chứng chỉ CA (Certificate Authority):
mkdir -p /var/lib/cockroach
cd /var/lib/cockroach
sudo -u cockroach cockroach gen certificate ca --certs-dir=/var/lib/cockroach
Kết quả: Các file ca.key và ca.crt được tạo trong thư mục /var/lib/cockroach.
Tạo chứng chỉ cho Node 1 (thay
192.168.1.10 bằng IP thực của Node 1):
sudo -u cockroach cockroach gen certificate node --certs-dir=/var/lib/cockroach --ca-key=/var/lib/cockroach/ca.key 192.168.1.10
Kết quả: Các file node..key và node..crt được tạo.
Trên Node 2 và Node 3, copy file ca.crt và ca.key từ Node 1 sang (hoặc sinh lại nếu có CA riêng, nhưng tốt nhất dùng chung 1 CA):
sudo cp /var/lib/cockroach/ca.crt /var/lib/cockroach/ca.key /var/lib/cockroach/
sudo -u cockroach cockroach gen certificate node --certs-dir=/var/lib/cockroach --ca-key=/var/lib/cockroach/ca.key 192.168.1.11
Kết quả: Chứng chỉ cho Node 2 được tạo. Lặp lại tương tự cho Node 3 với IP 192.168.1.12.
Tạo chứng chỉ cho người dùng root (client):
sudo -u cockroach cockroach gen certificate client --certs-dir=/var/lib/cockroach --ca-key=/var/lib/cockroach/ca.key root
Kết quả: File root.key và root.crt được tạo.
Khởi động lại service trên cả 3 node để áp dụng chứng chỉ (file service đã chỉ định --certs-dir):
sudo systemctl restart cockroach
Kết quả: Service restart thành công. Kiểm tra log tại /var/log/cockroach/cockroach.log để đảm bảo không có lỗi TLS.
Verify kết nối bảo mật bằng lệnh SQL:
cockroach sql --certs-dir=/var/lib/cockroach --host=192.168.1.10 -e "SHOW DATABASES"
Kết quả: Hiển thị danh sách database (thường có defaultdb). Nếu không dùng --certs-dir, kết nối sẽ bị từ chối.
Cấu hình Firewall (UFW) cho phép kết nối giữa các Node
Trên Ubuntu 24.04, UFW là firewall mặc định. Ta cần mở cổng 26257 (giao tiếp node-to-node và client) và 8080 (Dashboard UI).
Bật UFW và cho phép kết nối từ các node trong cụm:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 192.168.1.10 to any port 26257
sudo ufw allow from 192.168.1.11 to any port 26257
sudo ufw allow from 192.168.1.12 to any port 26257
Kết quả: Các quy tắc firewall được thêm vào. Lệnh sudo ufw show rules sẽ hiển thị danh sách cho phép.
Cho phép cổng Dashboard (nếu cần truy cập web UI từ ngoài):
sudo ufw allow 8080
Kết quả: Cổng 8080 được mở.
Bật UFW:
sudo ufw enable
Kết quả: Hiển thị Firewall is active and enabled on system startup.
Verify kết nối giữa các node bằng telnet hoặc nc từ Node 1 đến Node 2:
nc -zv 192.168.1.11 26257
Kết quả: Hiển thị succeeded hoặc open. Nếu thấy refused hoặc failed, kiểm tra lại cấu hình UFW hoặc trạng thái service.
Điều hướng series:
Mục lục: Series: Triển khai Database phân tán an toàn với CockroachDB và Ubuntu 24.04
« Phần 1: Chuẩn bị môi trường và kiến thức nền tảng
Phần 3: Cấu hình bảo mật nâng cao và quản lý chứng chỉ »