Phân tích yêu cầu phần cứng tối ưu cho kiến trúc HTAP
YugabyteDB kiến trúc HTAP (Hybrid Transactional/Analytical Processing) yêu cầu tài nguyên cân bằng giữa tốc độ ghi (OLTP) và khả năng quét dữ liệu lớn (OLAP).
Để đạt hiệu năng tối đa trên Ubuntu 24.04, mỗi node (tNode hoặc Master) cần đáp ứng các thông số tối thiểu sau:
- CPU: Tối thiểu 4 vCPU, khuyến nghị 8 vCPU trở lên. Cần hỗ trợ tập lệnh AVX2 để tối ưu hóa mã hóa và giải mã dữ liệu.
- RAM: Tối thiểu 16GB, khuyến nghị 32GB. YugabyteDB cần RAM cho Buffer Pool và Heap của JVM.
- Ổ cứng: Bắt buộc sử dụng SSD NVMe. Tránh HDD vì latency cao sẽ giết chết hiệu năng HTAP. Dung lượng tối thiểu 500GB cho dữ liệu + log.
- Mạng: Bandwidth 10Gbps, Latency < 1ms giữa các node trong cụm.
Verify yêu cầu phần cứng trước khi cài đặt hệ điều hành bằng lệnh kiểm tra CPU và Disk:
lscpu | grep -i avx && lsblk -d -o NAME,MODEL,TYPE
Kết quả mong đợi: Dòng avx2 hiện trong output của lscpu và tên model ổ cứng chứa từ NVMe hoặc SSD.
Cài đặt Ubuntu Server 24.04 LTS
Download image ISO Ubuntu Server 24.04 LTS từ trang chủ Canonical hoặc mirror gần nhất.
Khởi động máy ảo hoặc vật lý từ ISO. Trong quá trình cài đặt, chọn Minimal Installation để giảm tải không cần thiết, sau đó cài thêm các gói cần thiết thủ công để kiểm soát chính xác phiên bản.
Cài đặt hệ điều hành với các tham số sau:
- Partitioning: Chọn Use entire disk hoặc LVM (khuyến nghị LVM để resize sau).
- Network: Đặt tên host tạm thời (ví dụ:
node1, node2), cấu hình IP tĩnh ngay trong quá trình cài đặt nếu có script pre-seeding, hoặc cấu hình thủ công sau khi boot.
- User: Tạo user
yugabyte với quyền sudo.
Sau khi boot vào hệ thống mới, cập nhật toàn bộ repository và cài đặt các công cụ cơ bản:
sudo apt update && sudo apt upgrade -y && sudo apt install -y vim curl wget net-tools ufw
Kết quả mong đợi: Hệ thống được cập nhật lên phiên bản kernel mới nhất của 24.04 LTS và các công cụ mạng được cài đặt thành công.
Cấu hình tên miền và Hostname cho các Node
YugabyteDB yêu cầu tên miền phân giải (DNS resolution) chính xác giữa các node. Không được dùng IP thay cho tên host trong cấu hình cluster.
Thực hiện trên tất cả các node (Node1, Node2, Node3...).
Bước 1: Cài đặt gói hostname và đặt tên tĩnh cho từng node:
sudo hostnamectl set-hostname yb-node1.local
Thay thế yb-node1.local bằng yb-node2.local và yb-node3.local tương ứng cho các máy khác.
Bước 2: Cấu hình file /etc/hosts để map IP với hostname trên tất cả các node. Nội dung file phải giống hệt nhau trên mọi máy.
Đường dẫn file: /etc/hosts
192.168.1.10 yb-node1.local yb-node1
192.168.1.11 yb-node2.local yb-node2
192.168.1.12 yb-node3.local yb-node3
127.0.0.1 localhost
127.0.1.1 yb-node1.local
Thay đổi các địa chỉ IP 192.168.1.x theo thực tế mạng của bạn. Lưu ý: Dòng cuối cùng trong file /etc/hosts của mỗi node phải trỏ về chính nó (ví dụ: trên node1, dòng cuối là 127.0.1.1 yb-node1.local).
Verify kết quả bằng lệnh ping qua tên miền:
ping -c 3 yb-node2.local && ping -c 3 yb-node3.local
Kết quả mong đợi: Ping thành công với latency thấp (< 1ms) và trả về đúng IP đã cấu hình.
Cài đặt các gói phụ thuộc cần thiết
YugabyteDB v2.11 chạy trên nền tảng Java. Ubuntu 24.04 mặc định không cài sẵn JDK phù hợp. Cần cài đặt OpenJDK 17 hoặc 21 (khuyến nghị OpenJDK 17 cho sự ổn định nhất hiện tại).
Cùng lúc đó, cài đặt OpenSSL và Git để hỗ trợ các script cài đặt và chứng chỉ bảo mật.
Thực thi lệnh cài đặt gói trên tất cả các node:
sudo apt install -y openjdk-17-jdk openssl git ca-certificates
Kiểm tra phiên bản Java đã cài đặt:
java -version
Kết quả mong đợi: Output hiển thị openjdk version "17.0.x" và OpenJDK Runtime Environment.
Cấu hình biến môi trường JAVA_HOME để các script của YugabyteDB tìm thấy JDK chính xác. Chèn nội dung sau vào file /etc/profile.d/java.sh (tạo file mới nếu chưa có):
Đường dẫn file: /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
Áp dụng ngay lập tức cho phiên terminal hiện tại:
source /etc/profile.d/java.sh
Verify bằng lệnh:
echo $JAVA_HOME
Kết quả mong đợi: Trả về đường dẫn /usr/lib/jvm/java-17-openjdk-amd64.
Kiểm tra kết nối mạng giữa các Node
Trước khi khởi động cluster, cần đảm bảo các cổng (port) quan trọng không bị tường lửa (firewall) chặn. YugabyteDB sử dụng nhiều cổng TCP cho giao tiếp nội bộ.
Cổng quan trọng cần mở:
5433: Cổng YSQL (giao tiếp client SQL).
7000: Cổng Master (YB-Master).
9042: Cổng YCQL (giao tiếp client CQL).
7100 - 7102: Cổng TServer (giao tiếp node-to-node).
Cấu hình UFW (Uncomplicated Firewall) trên Ubuntu 24.04 để cho phép traffic từ các node trong cụm. Thực hiện trên tất cả các node.
Đầu tiên, tắt UFW nếu đang bật để tránh chặn lỗi ngay lập tức, sau đó cấu hình lại:
sudo ufw disable
Sau đó, cho phép các cổng cụ thể cho giao tiếp nội bộ (thay thế 192.168.1.0/24 bằng subnet của bạn):
sudo ufw default deny incoming
sudo ufw allow from 192.168.1.0/24 to any port 5433
sudo ufw allow from 192.168.1.0/24 to any port 7000
sudo ufw allow from 192.168.1.0/24 to any port 9042
sudo ufw allow from 192.168.1.0/24 to any port 7100:7102
sudo ufw enable
Verify trạng thái firewall:
sudo ufw status verbose
Kết quả mong đợi: Trạng thái Status: active và danh sách ALLOW hiển thị các cổng đã cấu hình từ subnet nội bộ.
Kiểm tra kết nối TCP thực tế từ Node1 đến Node2 trên cổng 7000:
nc -zv 192.168.1.11 7000
Kết quả mong đợi: Output Connection to 192.168.1.11 7000 port [tcp/*] succeeded!. Nếu thấy Connection refused, kiểm tra lại firewall hoặc dịch vụ chưa chạy (bước này chỉ kiểm tra khả năng truyền dẫn mạng).
Điều hướng series:
Mục lục: Series: Triển khai Database HTAP với YugabyteDB và Linux Kernel Tuning trên Ubuntu 24.04
Phần 2: Tinh chỉnh Linux Kernel (Part 1): Tối ưu hóa hệ thống tệp và bộ nhớ »