Tải và chuẩn bị hình ảnh Docker của Nebula Graph
Trước khi khởi tạo Meta Service, ta cần kéo (pull) image chính thức từ Docker Hub. Phiên bản hiện tại ổn định nhất cho Ubuntu 24.04 là v3.8.0.
Thực thi lệnh pull để tải image về local repository của Docker daemon.
docker pull nebula/nebula-graph:v3.8.0
Kết quả mong đợi: Docker hiển thị dòng "Status: Downloaded newer image for nebula/nebula-graph:v3.8.0" và không có lỗi network.
Tạo thư mục làm việc để chứa cấu hình và data, đảm bảo quyền sở hữu thuộc về user hiện tại.
mkdir -p ~/nebula-cluster/meta/{conf,logs,data}
cd ~/nebula-cluster/meta
Kết quả mong đợi: Thư mục được tạo thành công, con trỏ shell chuyển vào thư mục ~/nebula-cluster/meta.
Cấu hình file meta.conf để định nghĩa cluster và replica
Meta Service là "bộ não" của cụm Nebula Graph, chịu trách nhiệm lưu trữ metadata (schema, partition mapping, host topology). File cấu hình quyết định địa chỉ lắng nghe và cơ chế lưu trữ.
Tạo file cấu hình meta.conf với nội dung hoàn chỉnh dưới đây. Lưu ý: host phải là địa chỉ IP thật của server, không dùng localhost nếu chạy phân tán.
cat > ~/nebula-cluster/meta/conf/meta.conf
Kết quả mong đợi: File ~/nebula-cluster/meta/conf/meta.conf được tạo, có thể xem nội dung bằng lệnh cat.
Khởi động Meta Service với Docker Compose
Để quản lý container Meta Service một cách linh hoạt, ta sử dụng Docker Compose. File docker-compose.yml sẽ ánh xạ các thư mục local sang container.
Tạo file docker-compose.yml trong thư mục ~/nebula-cluster/meta. Lưu ý mapping volume chính xác cho conf, logs, data.
cat > ~/nebula-cluster/meta/docker-compose.yml
Kết quả mong đợi: File docker-compose.yml được tạo với cấu trúc service và volume mapping đúng chuẩn.
Khởi động container ở chế độ detached (chạy nền) và theo dõi log để đảm bảo khởi động thành công.
docker-compose up -d
docker-compose logs -f nebula-meta
Kết quả mong đợi: Container chạy trạng thái "running", log hiển thị dòng "Meta Service started successfully" và "Listening on 0.0.0.0:9559".
Kiểm tra trạng thái Meta Service qua log và CLI
Sau khi khởi động, cần xác nhận Meta Service đã sẵn sàng nhận kết nối từ Graph Service và Storage Service.
Chạy lệnh docker exec để vào container và kiểm tra tiến trình meta server.
docker exec -it nebula-meta-1 ps aux | grep meta
Kết quả mong đợi: Xuất hiện tiến trình với tên "nebula-meta" đang chạy, không có trạng thái crash.
Sử dụng nGQL client (nebula-console) để kết nối thử nghiệm vào Meta Service. Lưu ý: Meta Service thường không dùng để query data trực tiếp như Graph Service, nhưng ta có thể kiểm tra trạng thái qua HTTP hoặc command init.
Khởi tạo cluster metadata bằng lệnh init cluster (thay thế IP bằng IP thật của bạn).
docker exec -it nebula-meta-1 nebula-init --meta_server_host=192.168.1.100 --meta_server_port=9559
Kết quả mong đợi: Dòng "Meta cluster initialized successfully" hoặc "Success" xuất hiện. Nếu lỗi, kiểm tra lại IP trong meta.conf.
Quét log để tìm từ khóa "error" hoặc "failed" nhằm phát hiện sớm vấn đề.
docker logs nebula-meta-1 | grep -i "error"
Kết quả mong đợi: Không có output (trống) hoặc chỉ có các cảnh báo thông thường (warning) nhưng không có lỗi critical.
Xác thực kết nối giữa Meta và các node khác
Bước cuối là đảm bảo Meta Service có thể nhận kết nối từ các node Graph và Storage (sẽ triển khai ở Phần 3). Ta sẽ kiểm tra cổng và firewall.
Đảm bảo cổng 9559 (Meta RPC) và 19559 (Meta HTTP) đang lắng nghe trên host Ubuntu.
sudo netstat -tulpn | grep 9559
sudo netstat -tulpn | grep 19559
Kết quả mong đợi: Thấy trạng thái LISTEN trên địa chỉ 0.0.0.0 hoặc IP của máy với cổng tương ứng.
Thử kết nối từ một máy khác (hoặc từ local nếu có firewall mở) dùng telnet hoặc nc để kiểm tra tính khả dụng của cổng.
nc -zv 192.168.1.100 9559
Kết quả mong đợi: Dòng "Connection to 192.168.1.100 9559 port [tcp/*] succeeded!".
Đảm bảo ufw (firewall mặc định của Ubuntu 24.04) cho phép traffic qua cổng Meta.
sudo ufw allow 9559/tcp
sudo ufw allow 19559/tcp
sudo ufw status | grep 9559
Kết quả mong đợi: Lệnh ufw trả về "9559/tcp ALLOW" và "19559/tcp 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 1: Chuẩn bị môi trường Ubuntu 24.04 và cài đặt các công cụ nền tảng
Phần 3: Triển khai Graph Service và Storage Service cho cụm phân tán »