Kiểm tra và chuẩn bị yêu cầu phần cứng cho Milvus
Milvus là hệ thống Vector Database yêu cầu tài nguyên đáng kể để đảm bảo hiệu năng tìm kiếm và độ trễ thấp. Bạn cần kiểm tra cấu hình server trước khi bắt đầu cài đặt Ubuntu.
1. Kiểm tra CPU và RAM
Để chạy Milvus Standalone (phiên bản đơn) trên Ubuntu 24.04, cấu hình tối thiểu là 4 CPU cores và 16GB RAM. Nếu dữ liệu lớn hơn 1TB hoặc cần độ trễ dưới 10ms, cần nâng lên 8 cores và 32GB RAM trở lên.
Chạy lệnh kiểm tra số nhân logic và dung lượng RAM hiện tại:
nproc
Kết quả mong đợi: Số nguyên >= 4 (ví dụ: 8).
free -h
Kết quả mong đợi: Dòng "total" trong cột "Mem" phải >= 16G.
2. Kiểm tra Disk IOPS và dung lượng
Milvus ghi nhiều metadata và vector vào disk. SSD NVMe là bắt buộc. HDD cơ học sẽ gây nghẽn cổ chai nghiêm trọng. Yêu cầu tối thiểu 100GB trống, khuyến nghị 200GB+ cho dữ liệu vector và log.
Chạy lệnh kiểm tra loại disk và tốc độ IOPS (sử dụng dd để test write speed nhanh):
lsblk -d -o NAME,TYPE
Kết quả mong đợi: Cột TYPE hiển thị "disk" hoặc "rom" (NVMe thường là nvme0n1), không thấy "sd" (SATA/HDD) nếu có thể tránh.
dd if=/dev/zero of=/tmp/test_disk bs=1G count=1 oflag=direct
Kết quả mong đợi: Tốc độ ghi (MB/s) cuối cùng > 200MB/s. Nếu thấp hơn, disk không phù hợp cho production.
Xóa file test sau khi kiểm tra:
rm -f /tmp/test_disk
Kết quả mong đợi: Không có lỗi, file đã bị xóa.
Cài đặt và phân vùng Ubuntu 24.04 cho Server Database
Để tối ưu hóa I/O cho Milvus, chúng ta cần phân vùng disk rõ ràng: một partition cho OS, một partition riêng cho dữ liệu (data), và swap file (không dùng partition swap để linh hoạt hơn).
1. Khởi động và chọn phân vùng trong Installer
Khi vào màn hình "Installation type" của Ubuntu 24.04 Server Installer, chọn Custom partitioning (LVM hoặc Manual). Cấu hình như sau:
- / (Root): 60GB, type ext4, mount point
/
- /var: 40GB, type ext4, mount point
/var (Chứa logs và socket)
- /data: Phần còn lại của disk, type ext4, mount point
/data (Nơi chứa vector data của Milvus)
- Swap: 8GB (Tạo sau khi cài xong bằng swapfile, không tạo partition swap cố định)
Đảm bảo flag "Format" được bật cho tất cả các partition mới tạo trước khi click "Done" và "Install".
2. Tạo Swap file sau khi cài đặt
Ubuntu 24.04 Server mặc định có thể không tạo swap nếu disk nhỏ. Milvus cần swap để tránh OOM Killer giết tiến trình khi bộ nhớ đầy.
Tạo file swap 8GB tại root:
sudo fallocate -l 8G /swapfile
Kết quả mong đợi: Không có lỗi, file /swapfile được tạo.
Đặt quyền truy cập an toàn cho swap file:
sudo chmod 600 /swapfile
Kết quả mong đợi: Quyền chỉ cho phép root đọc/ghi.
Khởi tạo file thành swap:
sudo mkswap /swapfile
Kết quả mong đợi: Thông báo "Setting up swapspace version 1, size = 8388608 KiB".
Bật swap ngay lập tức:
sudo swapon /swapfile
Kết quả mong đợi: Swap file đã được kích hoạt.
Cấu hình tự động mount swap khi reboot bằng cách thêm vào fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Kết quả mong đợi: Dòng cấu hình được thêm vào cuối file /etc/fstab.
Verify kết quả bằng lệnh:
free -h
Kết quả mong đợi: Cột "Swap" hiển thị "total" khoảng 8.0G.
Cập nhật hệ thống và cài đặt công cụ nền tảng
Sau khi phân vùng, cần cập nhật package list và cài đặt các công cụ thiết yếu như git, curl, và chuẩn bị cho Docker.
1. Cập nhật hệ thống (System Update)
Cập nhật repository và nâng cấp tất cả các gói hiện có lên phiên bản mới nhất của Ubuntu 24.04 để đảm bảo bảo mật và kernel mới.
sudo apt update && sudo apt upgrade -y
Kết quả mong đợi: Quá trình chạy xong, không có lỗi, thông báo "System is up to date".
2. Cài đặt công cụ mạng và tiện ích
Cài đặt các gói cần thiết cho việc cấu hình network, download file, và debug sau này.
sudo apt install -y curl wget git net-tools iproute2 htop
Kết quả mong đợi: Các gói được cài đặt thành công, không có lỗi dependency.
3. Cài đặt Docker Engine và Docker Compose
Milvus chạy trên container. Chúng ta sẽ cài Docker Engine trực tiếp từ repo chính thức của Docker (không dùng gói trong apt cache của Ubuntu vì thường quá cũ).
Thêm GPG key của Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Kết quả mong đợi: Không có lỗi, key được lưu vào thư mục keyrings.
Thêm repository Docker vào apt sources:
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
Kết quả mong đợi: Dòng source được thêm vào file docker.list.
Cập nhật lại apt và cài đặt Docker Engine, CLI, Containerd, và Compose Plugin:
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 Engine được cài đặt thành công.
Bật Docker service để chạy tự động khi khởi động:
sudo systemctl enable docker && sudo systemctl start docker
Kết quả mong đợi: Service được enable và started.
Verify Docker đã chạy bằng lệnh:
docker version
Kết quả mong đợi: Hiển thị Client và Server version (ví dụ: Docker version 27.x.x).
Verify Docker Compose plugin:
docker compose version
Kết quả mong đợi: Hiển thị phiên bản Docker Compose (ví dụ: Docker Compose version v2.x.x).
Cấu hình Hostname và Network Interface
Milvus Standalone cần một hostname cố định để các component (etcd, minio, milvus) giao tiếp nội bộ qua DNS hoặc /etc/hosts. Network interface phải cấu hình IP tĩnh hoặc DHCP reservation.
1. Đặt Hostname cố định
Đổi tên server thành "milvus-node" (hoặc tên bạn muốn) để nhận diện dễ dàng trong log.
sudo hostnamectl set-hostname milvus-node
Kết quả mong đợi: Không có lỗi.
Thêm mapping vào /etc/hosts để localhost và hostname trỏ về IP của server (giả sử IP là 192.168.1.100, hãy thay bằng IP thực tế của bạn):
echo "127.0.0.1 localhost" | sudo tee -a /etc/hosts
echo "192.168.1.100 milvus-node" | sudo tee -a /etc/hosts
Kết quả mong đợi: File /etc/hosts có 2 dòng mapping mới.
Verify hostname:
hostname
Kết quả mong đợi: Trả về "milvus-node".
2. Cấu hình Network Interface (Netplan)
Ubuntu 24.04 sử dụng Netplan để quản lý network. Cấu hình IP tĩnh để đảm bảo Milvus không bị mất kết nối khi IP thay đổi.
Chỉnh sửa file cấu hình Netplan (tên file có thể khác nhau, ví dụ: /etc/netplan/00-installer-config.yaml hoặc 50-cloud-init.yaml. Hãy dùng lệnh ls để tìm file .yaml trong /etc/netplan/):
ls /etc/netplan/
Kết quả mong đợi: Danh sách file yaml, ví dụ: "00-installer-config.yaml".
Sửa file đó (thay thế YOUR_IP_ADDRESS, GATEWAY, DNS bằng thông tin thực tế):
sudo nano /etc/netplan/00-installer-config.yaml
Nội dung file hoàn chỉnh (thay thế placeholder):
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
dhcp4: false
Lưu file (Ctrl+O, Enter) và thoát (Ctrl+X).
Áp dụng cấu hình Netplan:
sudo netplan apply
Kết quả mong đợi: Không có lỗi, mạng được cấu hình lại.
Verify IP đã gán đúng:
ip addr show eth0
Kết quả mong đợi: Dòng "inet 192.168.1.100/24" xuất hiện.
Tạo user chuyên dụng để vận hành Milvus
Tuyệt đối không chạy Docker daemon hoặc ứng dụng Milvus với quyền root. Chúng ta sẽ tạo user "milvus" với quyền sudo để quản lý container nhưng chạy tiến trình với user đó.
1. Tạo user và nhóm
Tạo user mới có home directory và thêm vào nhóm docker để có quyền điều khiển container mà không cần sudo.
sudo useradd -m -s /bin/bash milvus
Kết quả mong đợi: User milvus được tạo, thư mục /home/milvus xuất hiện.
Đặt mật khẩu cho user milvus:
sudo passwd milvus
Kết quả mong đợi: Yêu cầu nhập và xác nhận lại mật khẩu 2 lần.
Thêm user vào nhóm docker:
sudo usermod -aG docker milvus
Kết quả mong đợi: Không có lỗi.
2. Cấu hình quyền sudo an toàn
Cho phép user milvus sử dụng lệnh sudo cho các tác vụ quản trị hệ thống (update, restart service) nhưng không cho phép sudo vào root shell trực tiếp để tăng bảo mật.
Tạo file sudoers riêng cho user milvus:
echo 'milvus ALL=(ALL) ALL' | sudo tee /etc/sudoers.d/milvus
Kết quả mong đợi: File được tạo trong /etc/sudoers.d/.
Đặt quyền đọc cho file sudoers (bắt buộc):
sudo chmod 440 /etc/sudoers.d/milvus
Kết quả mong đợi: Không có lỗi.
3. Tạo thư mục làm việc cho Milvus
Tạo thư mục chính nơi sẽ chứa docker-compose.yml và dữ liệu persistent của Milvus tại /data.
sudo mkdir -p /data/milvus
Kết quả mong đợi: Thư mục được tạo.
Chuyển quyền sở hữu thư mục cho user milvus:
sudo chown -R milvus:milvus /data/milvus
Kết quả mong đợi: Quyền sở hữu thay đổi.
Switch sang user milvus để verify:
sudo su - milvus
Kết quả mong đợi: Prompt thay đổi thành [milvus@milvus-node ~]$.
Verify quyền truy cập thư mục /data/milvus:
ls -ld /data/milvus
Kết quả mong đợi: Hiển thị chủ sở hữu là "milvus milvus".
Verify quyền docker của user milvus (không cần sudo):
docker ps
Kết quả mong đợi: Hiển thị danh sách container trống hoặc có container đang chạy, không báo lỗi "permission denied".
Thoát khỏi user milvus để quay lại root cho bước tiếp theo:
exit
Kết quả mong đợi: Quay lại prompt root [root@milvus-node ~]#.
Verify toàn bộ môi trường
Trước khi sang phần 2 (Cấu hình Docker Compose), hãy chạy checklist cuối cùng để đảm bảo mọi thứ đã sẵn sàng.
Kiểm tra tổng thể:
echo "=== Hardware Check ===" && free -h | grep total && df -h /data
Kết quả mong đợi: RAM >= 16G, /data có dung lượng trống đủ lớn.
echo "=== Docker Check ===" && docker version | grep ServerVersion && docker compose version
Kết quả mong đợi: Docker Engine và Compose plugin hoạt động.
echo "=== Network & User Check ===" && hostname && ip addr show eth0 | grep "inet " && id milvus
Kết quả mong đợi: Hostname đúng, IP đúng, user milvus tồn tại và thuộc nhóm docker.
echo "=== Directory Check ===" && ls -ld /data/milvus
Kết quả mong đợi: Thư mục tồn tại, owner là milvus.
Điều hướng series:
Mục lục: Series: Triển khai Database Vector với Milvus và Ubuntu 24.04
Phần 2: Cấu hình Docker Engine và Docker Compose trên Ubuntu 24.04 »