Cấu hình Repository chính thức CockroachDB cho Ubuntu 24.04
Thêm GPG Key và Repository vào hệ thống
Để đảm bảo tính bảo mật và cập nhật phiên bản mới nhất, ta cần thêm khóa GPG chính thức của CockroachDB vào kho package của Ubuntu.
Thực hiện lệnh sau để tải key và lưu vào thư mục keys của apt:
curl https://bin.cockroachlabs.com/public/cockroach-archive-keyring.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cockroach-archive-keyring.gpg
Kết quả mong đợi: Không có lỗi hiển thị, file key được tạo thành công tại /usr/share/keyrings/.
Tiếp theo, thêm repository vào danh sách nguồn apt của Ubuntu 24.04 (Noble). Lưu ý chỉ định đúng codename 'noble' cho Ubuntu 24.04.
echo "deb [signed-by=/usr/share/keyrings/cockroach-archive-keyring.gpg] https://apt.cockroachdb.com/ noble main" | sudo tee /etc/apt/sources.list.d/cockroachdb.list
Kết quả mong đợi: Dòng cấu hình repository được in ra màn hình và ghi vào file /etc/apt/sources.list.d/cockroachdb.list.
Update nguồn package
Cập nhật danh sách package từ repository vừa thêm để apt nhận diện được gói cockroachdb.
sudo apt update
Kết quả mong đợi: Không có lỗi, và trong output phải có dòng "Hit" hoặc "Get" liên quan đến "apt.cockroachdb.com".
Cài đặt gói CockroachDB và xác minh phiên bản
Install gói CockroachDB
Cài đặt gói cockroachdb chính thức. Gói này bao gồm cả binary thực thi và file cấu hình systemd mặc định.
sudo apt install cockroachdb
Kết quả mong đợi: Quá trình cài đặt hoàn tất, apt thông báo "Setting up cockroachdb" và không có lỗi.
Xác minh phiên bản đã cài
Kiểm tra xem binary đã được cài đặt ở đâu và phiên bản cụ thể là gì để đảm bảo khớp với yêu cầu.
cockroach version
Kết quả mong đợi: Hiển thị thông tin phiên bản dạng "CockroachDB CCL v24.x.x" cùng với thông tin build.
Tạo user hệ thống và cấu hình quyền sở hữu thư mục dữ liệu
Tạo user 'cockroach' chuyên biệt
Tạo user hệ thống không có shell (nol-login) để chạy dịch vụ CockroachDB, đảm bảo an ninh và tách biệt quyền hạn với user root hoặc admin khác.
sudo useradd --system --no-create-home --shell /bin/false cockroach
Kết quả mong đợi: Lệnh chạy không báo lỗi, user 'cockroach' đã được tạo trong /etc/passwd.
Tạo thư mục dữ liệu và gán quyền sở hữu
Tạo thư mục lưu trữ dữ liệu (data directory) tại /var/lib/cockroach. Đây là nơi chứa các file SST, logs và metadata của cluster.
sudo mkdir -p /var/lib/cockroach
Kết quả mong đợi: Thư mục /var/lib/cockroach được tạo thành công.
Chuyển quyền sở hữu thư mục này cho user 'cockroach' vừa tạo. Đây là bước bắt buộc để systemd service chạy dưới user này có thể ghi dữ liệu.
sudo chown cockroach:cockroach /var/lib/cockroach
Kết quả mong đợi: Không có lỗi. Kiểm tra bằng lệnh `ls -ld /var/lib/cockroach` sẽ thấy owner là `cockroach:cockroach`.
Cấu hình file service systemd để tự động khởi động
Biên tập file Unit của CockroachDB
Package apt đã tạo file mặc định tại /etc/systemd/system/cockroach.service. Tuy nhiên, để cấu hình rõ ràng cho việc khởi động với thư mục dữ liệu cụ thể và mode Row-Oriented (sẽ khai báo trong Part 3), ta cần chỉnh sửa file này để đảm bảo các tham số khởi động (Start command) chính xác.
Thay thế toàn bộ nội dung file /etc/systemd/system/cockroach.service bằng cấu hình sau:
cat > /etc/systemd/system/cockroach.service
Kết quả mong đợi: File /etc/systemd/system/cockroach.service được ghi đè thành công với nội dung trên. Lệnh chạy không báo lỗi.
Lưu ý: Tham số `--store=cockroach-data=/var/lib/cockroach` trong ExecStart định nghĩa rõ ràng nơi lưu trữ dữ liệu Row-Oriented. Tham số `--insecure` dùng cho môi trường phát triển/test (sẽ cấu hình TLS ở phần sau).
Reload và Enable dịch vụ Systemd
Cập nhật cấu hình systemd để nhận diện file unit vừa chỉnh sửa.
sudo systemctl daemon-reload
Kết quả mong đợi: Không có lỗi, systemd đã đọc lại cấu hình.
Cho phép dịch vụ tự động khởi động khi máy chủ lên (boot) và khởi động dịch vụ ngay lập tức.
sudo systemctl enable cockroach && sudo systemctl start cockroach
Kết quả mong đợi: Hệ thống thông báo "Created symlink..." và "Started CockroachDB SQL Database".
Verify trạng thái dịch vụ
Kiểm tra trạng thái hoạt động của dịch vụ để đảm bảo nó đang chạy (Active: active (running)) và không có lỗi khởi động.
sudo systemctl status cockroach
Kết quả mong đợi: Dòng đầu tiên hiển thị "● cockroach.service - CockroachDB SQL Database", trạng thái là "active (running)". Trong phần "Active" sẽ thấy thời gian chạy (Uptime).
Kiểm tra log để đảm bảo không có lỗi khởi động liên quan đến quyền truy cập thư mục.
sudo journalctl -u cockroach -n 20 --no-pager
Kết quả mong đợi: Các dòng log cuối cùng hiển thị "node started", "cluster ID initialized", hoặc "ready to serve". Tuyệt đối không xuất hiện lỗi "permission denied" hay "cannot open data directory".
Điều hướng series:
Mục lục: Series: Triển khai Database Row-Oriented với CockroachDB trên Ubuntu 24.04
« Phần 1: Chuẩn bị môi trường Ubuntu 24.04 và yêu cầu hệ thống cho CockroachDB
Phần 3: Khởi tạo cluster đơn nút và cấu hình lưu trữ Row-Oriented »