Yêu cầu phần cứng tối thiểu và phân vùng lưu trữ
Để triển khai LiteFS hiệu quả trên Edge Nodes, bạn cần đảm bảo phần cứng đáp ứng tối thiểu 1 CPU core, 512MB RAM và 10GB Storage. LiteFS sử dụng SQLite làm cơ sở dữ liệu, do đó hiệu năng I/O của ổ cứng là yếu tố then chốt.
Chúng ta sẽ thực hiện phân vùng ổ cứng riêng biệt cho thư mục dữ liệu SQLite để tránh xung đột I/O với hệ điều hành và tăng độ tin cậy khi xảy ra lỗi đĩa.
1. Kiểm tra cấu hình phần cứng hiện tại
Trước khi cài đặt, hãy xác nhận tài nguyên của server bằng các lệnh sau để đảm bảo đủ điều kiện.
lscpu | grep "Model name"
free -h
df -h
Kết quả mong đợi: CPU hiển thị ít nhất 1 core, RAM hiển thị >= 512M, và dung lượng trống (Available) của partition root >= 10G.
2. Tạo partition mới cho dữ liệu Database
Chúng ta sẽ tạo một partition riêng biệt (ví dụ /dev/sdb1) để mount vào thư mục /var/lib/litefs, nơi LiteFS sẽ lưu trữ các file journal và snapshot của SQLite.
sudo fdisk /dev/sdb
Trong trình tương tác của fdisk, thực hiện các thao tác sau: gõ n để tạo partition mới, chọn p (primary), nhấn Enter để chọn partition 1, nhấn Enter để chọn sector đầu, nhấn Enter để chọn sector cuối (dùng toàn bộ dung lượng). Sau đó gõ w để lưu và thoát.
Tiếp theo, định dạng partition vừa tạo thành hệ thống file ext4.
sudo mkfs.ext4 /dev/sdb1
Kết quả mong đợi: Thông báo "The filesystem has been created on /dev/sdb1".
3. Mount partition vào thư mục dữ liệu
Tạo thư mục đích và mount partition vĩnh viễn qua file /etc/fstab để dữ liệu không mất khi khởi động lại máy.
sudo mkdir -p /var/lib/litefs
sudo mount /dev/sdb1 /var/lib/litefs
sudo blkid | grep sdb1
Sau khi lấy được UUID từ lệnh trên (ví dụ: UUID="abc-123-xyz"), hãy thêm dòng cấu hình vào /etc/fstab.
echo "UUID=abc-123-xyz /var/lib/litefs ext4 defaults,noatime,nodiratime 0 2" | sudo tee -a /etc/fstab
Thay thế "abc-123-xyz" bằng UUID thực tế bạn vừa lấy được. Lệnh này sẽ thêm dòng mount vào file cấu hình.
Verify kết quả bằng cách kiểm tra lại mount point.
mount | grep /var/lib/litefs
Kết quả mong đợi: Dòng output hiển thị /dev/sdb1 mounted on /var/lib/litefs.
Cài đặt và cấu hình Ubuntu 24.04 LTS
Ubuntu 24.04 LTS sử dụng kernel 6.8 mới, hỗ trợ tốt các tính năng của gRPC và SQLite. Chúng ta cần cập nhật toàn bộ hệ thống và cài đặt các gói cốt lõi trước khi vào phần cấu hình mạng.
1. Cập nhật hệ thống và cài đặt công cụ cơ bản
Thực hiện cập nhật repository và nâng cấp các package hiện có lên phiên bản mới nhất của Ubuntu 24.04.
sudo apt update && sudo apt upgrade -y
Kết quả mong đợi: Hệ thống báo "0 packages upgraded" hoặc đã nâng cấp thành công, không có lỗi.
Cài đặt các công cụ hệ thống cần thiết cho việc quản lý server và tải file: git, curl, build-essential.
sudo apt install -y git curl build-essential htop vim net-tools
Kết quả mong đợi: Các gói đã được cài đặt, không có cảnh báo về package không tồn tại.
Cấu hình SSH và Firewall (UFW) an toàn
Trong môi trường Edge, việc bảo mật truy cập từ xa là ưu tiên số 1. Chúng ta sẽ cấu hình SSH chỉ cho phép key-based authentication và bật UFW để chặn mọi traffic không cần thiết.
1. Cấu hình SSH Key-based Authentication
Tạo cặp key SSH mới trên client (máy của bạn) và copy sang server nếu chưa có. Sau đó, cấu hình server chỉ chấp nhận key, tắt password login.
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Sửa file cấu hình SSHD để tắt mật khẩu và yêu cầu key.
sudo nano /etc/ssh/sshd_config
Trong file, tìm và sửa/thêm các dòng sau (bình luận các dòng cũ nếu có):
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Khởi động lại dịch vụ SSH để áp dụng thay đổi. Lưu ý: Hãy mở thêm một terminal để test kết nối trước khi đóng terminal hiện tại, tránh bị khóa ngoài.
sudo systemctl restart sshd
Verify kết quả: Thử đăng nhập bằng key từ máy khác, đảm bảo không bị hỏi password.
2. Cấu hình UFW (Uncomplicated Firewall)
Bật UFW và thiết lập chính sách mặc định: chặn mọi kết nối đến (deny incoming), cho phép mọi kết nối đi ra (allow outgoing).
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
Cấp quyền cho SSH (port 22) để không bị khóa ngay sau khi bật firewall.
sudo ufw allow 22/tcp
Đối với LiteFS, chúng ta cần mở các port giao tiếp giữa các node. Theo mặc định LiteFS dùng port 2025 cho gRPC. Mở port này ngay để chuẩn bị cho các phần sau.
sudo ufw allow 2025/tcp
Verify kết quả bằng cách liệt kê các rule đang chạy.
sudo ufw status verbose
Kết quả mong đợi: Status là "active", port 22 và 2025 trong trạng thái "ALLOW", Default deny incoming.
Cài đặt Docker và Docker Compose
LiteFS thường được chạy trong container để cách ly môi trường và dễ dàng quản lý lifecycle. Chúng ta sẽ cài đặt Docker Engine phiên bản mới nhất và Docker Compose v2.
1. Cài đặt Docker Engine trên Ubuntu 24.04
Cài đặt các gói phụ thuộc cần thiết cho Docker.
sudo apt install -y ca-certificates curl gnupg lsb-release
Thêm GPG key chính thức của Docker vào hệ thống.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Thêm repository của Docker vào list nguồn.
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Cập nhật lại apt và cài đặt Docker Engine, CLI, Containerd và Buildx.
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Kết quả mong đợi: Docker được cài đặt thành công, không có lỗi về dependency.
2. Cấu hình Docker để chạy với user hiện tại
Thêm user hiện tại vào nhóm docker để không phải gõ sudo mỗi khi chạy lệnh docker.
sudo usermod -aG docker $USER
Áp dụng thay đổi nhóm ngay lập tức (hoặc logout/login lại).
newgrp docker
Verify kết quả: Chạy lệnh docker version để kiểm tra.
docker version
Kết quả mong đợi: Hiển thị thông tin Client và Server version của Docker mà không cần sudo.
3. Kiểm tra Docker Compose Plugin
Trên Docker Engine mới, Docker Compose đã tích hợp sẵn dưới dạng plugin. Hãy kiểm tra xem nó có hoạt động không.
docker compose version
Kết quả mong đợi: Hiển thị phiên bản Docker Compose Plugin (ví dụ: Docker Compose version v2.x.x).
Điều hướng series:
Mục lục: Series: Triển khai Database Edge với LiteFS và Ubuntu 24.04
Phần 2: Giới thiệu kiến trúc LiteFS và cài đặt LiteFS »