Yêu cầu phần cứng tối thiểu cho cụm Nebula Graph phân tán
Để triển khai một cụm Nebula Graph phân tán ổn định, bạn cần chuẩn bị ít nhất 3 máy chủ vật lý hoặc ảo (Virtual Machine) để đóng vai trò là các node Meta, Graph và Storage. Các yêu cầu phần cứng này đảm bảo hệ thống hoạt động trơn tru ngay từ giai đoạn khởi tạo.
Cấu hình tối thiểu cho mỗi node (CPU/RAM/Disk) như sau:
- CPU: Tối thiểu 4 nhân (vCore) để xử lý các query phức tạp và cân bằng tải.
- RAM: Tối thiểu 8GB. Nebula Graph sử dụng bộ nhớ cache cho dữ liệu thường xuyên truy cập, thiếu RAM sẽ gây giảm hiệu năng nghiêm trọng.
- Disk: Tối thiểu 100GB SSD (Nehme hoặc NVMe). SSD là bắt buộc để đảm bảo độ trễ thấp (latency) khi ghi/đọc dữ liệu.
- Mạng: Băng thông nội bộ ít nhất 1Gbps, độ trễ (latency) giữa các node dưới 1ms.
Verify: Kiểm tra cấu hình hiện tại bằng lệnh:
lscpu | grep "Core(s)" && free -h && lsblk -o NAME,SIZE,TYPE
Kết quả mong đợi: Thấy số nhân CPU >= 4, tổng RAM >= 8G, và có ổ đĩa loại SSD với dung lượng đủ lớn.
Cài đặt Ubuntu 24.04 Server Edition và cập nhật hệ thống
Bước đầu tiên là chuẩn bị hệ điều hành nền tảng. Ubuntu 24.04 LTS cung cấp kernel mới nhất và hỗ trợ tốt cho các công nghệ container hiện đại như Docker và Kubernetes mà Nebula Graph thường sử dụng.
Sau khi cài đặt Ubuntu 24.04 Server, bạn cần cập nhật tất cả các gói phần mềm để đảm bảo an ninh và tính tương thích.
sudo apt update && sudo apt upgrade -y
Kết quả mong đợi: Hệ thống hiển thị thông báo "All packages are up to date" hoặc danh sách các gói đã được nâng cấp thành công.
Thiết lập môi trường root và sudo
Nebula Graph yêu cầu quyền quản trị để cài đặt Docker và cấu hình mạng. Đảm bảo user hiện tại có quyền sudo.
id && sudo whoami
Kết quả mong đợi: Lệnh đầu tiên hiển thị UID/GID của user, lệnh thứ hai trả về "root".
Cấu hình hostname và file /etc/hosts cho các node
Trong môi trường phân tán, việc định danh node là cực kỳ quan trọng. Các thành phần Meta, Graph và Storage cần biết IP và tên host của nhau để giao tiếp qua TCP. Chúng ta sẽ đặt tên theo quy ước: nebula-meta-1, nebula-graph-1, nebula-storage-1.
Thực hiện trên Node 1 (Meta Node):
sudo hostnamectl set-hostname nebula-meta-1
Kết quả mong đợi: Không có lỗi, hostname được đổi thành "nebula-meta-1".
Thực hiện trên Node 2 (Graph Node):
sudo hostnamectl set-hostname nebula-graph-1
Kết quả mong đợi: Hostname được đổi thành "nebula-graph-1".
Thực hiện trên Node 3 (Storage Node):
sudo hostnamectl set-hostname nebula-storage-1
Kết quả mong đợi: Hostname được đổi thành "nebula-storage-1".
Cấu hình file /etc/hosts trên TẤT CẢ các node
Sau khi đổi hostname, bạn cần cập nhật file /etc/hosts trên TẤT CẢ 3 máy chủ để ánh xạ tên host sang địa chỉ IP tĩnh. Thay thế 192.168.1.X bằng IP thực tế của từng máy trong mạng của bạn.
Tạo nội dung file /etc/hosts giống hệt nhau trên cả 3 node:
sudo tee /etc/hosts
Kết quả mong đợi: File được ghi đè thành công. Chạy lệnh cat /etc/hosts để xác minh nội dung hiển thị đúng các dòng IP và Hostname.
Verify kết quả kết nối mạng
Trên Node 1 (Meta), ping sang Node 2 và Node 3 để đảm bảo DNS resolution hoạt động tốt.
ping -c 3 nebula-graph-1 && ping -c 3 nebula-storage-1
Kết quả mong đợi: Cả 2 lệnh ping trả về địa chỉ IP tương ứng (192.168.1.11 và 192.168.1.12) và 100% packets received.
Cài đặt các gói phụ thuộc: Docker, Docker Compose và Go
Nebula Graph hiện đại thường được triển khai qua Docker để cách ly môi trường. Chúng ta cần cài đặt Docker Engine, Docker Compose V2, và Go (Golang) để build các công cụ client hoặc script tự động hóa nếu cần.
1. Cài đặt Docker Engine
Cài đặt Docker từ kho chính thức của Docker để đảm bảo phiên bản mới nhất tương thích với Ubuntu 24.04.
sudo apt install ca-certificates curl gnupg lsb-release -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Kết quả mong đợi: Docker được cài đặt thành công, không có lỗi về GPG key hay repository.
2. Kiểm tra và chạy Docker với quyền user thường
Thêm user hiện tại vào nhóm docker để không phải gõ sudo khi chạy lệnh docker.
sudo usermod -aG docker $USER && newgrp docker
Kết quả mong đợi: Session shell được reload, user thuộc nhóm docker.
3. Cài đặt Go (Golang)
Cài đặt Go từ nguồn chính thức để sử dụng các công cụ CLI của Nebula hoặc build extension.
sudo apt install golang-go -y
Kết quả mong đợi: Gói golang-go được cài đặt.
Verify kết quả cài đặt
Kiểm tra phiên bản của Docker, Docker Compose và Go.
docker --version && docker compose version && go version
Kết quả mong đợi:
- Docker version 24.x.x hoặc cao hơn.
- Docker Compose version v2.x.x.
- go version go1.22.x (hoặc cao hơn) linux/amd64.
Cấu hình firewall (UFW) để mở các port cần thiết
Ubuntu 24.04 mặc định sử dụng UFW (Uncomplicated Firewall). Để Nebula Graph hoạt động, các service phải giao tiếp qua các cổng TCP cụ thể. Chúng ta cần mở cổng cho Meta Service, Graph Service và Storage Service trước khi khởi động cụm.
Các cổng mặc định của Nebula Graph:
- Meta Service: 9559 (client), 9589 (internal RPC)
- Graph Service: 9669 (client), 9599 (internal RPC)
- Storage Service: 9779 (client), 9699 (internal RPC)
- Dashboard (Nebula Console - Optional nhưng cần thiết): 8080, 8081
Kích hoạt UFW và mở các cổng trên tất cả các node (chạy lệnh này trên Node 1, 2 và 3):
sudo ufw allow 9559/tcp
sudo ufw allow 9589/tcp
sudo ufw allow 9669/tcp
sudo ufw allow 9599/tcp
sudo ufw allow 9779/tcp
sudo ufw allow 9699/tcp
sudo ufw allow 8080/tcp
sudo ufw allow 8081/tcp
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
Kết quả mong đợi: UFW bật lên (Firewall active) và hiển thị danh sách các rule đã thêm.
Verify kết quả Firewall
Liệt kê các rule đã được cấu hình để đảm bảo không thiếu cổng nào.
sudo ufw status verbose
Kết quả mong đợi: Output hiển thị "Status: active", "Default: deny (incoming), allow (outgoing)", và danh sách các cổng 9559, 9589, 9669, 9599, 9779, 9699, 8080, 8081 có trạng thái "ALLOW".
Điều hướng series:
Mục lục: Series: Triển khai Database Graph phân tán với Nebula Graph trên Ubuntu 24.04
Phần 2: Khởi tạo và cấu hình Meta Service của Nebula Graph »