Yêu cầu phần cứng tối thiểu cho Cassandra
Đánh giá và chuẩn bị tài nguyên vật lý
Apache Cassandra là hệ thống NoSQL phân tán dựa trên đĩa cứng, hoạt động kém hiệu quả nếu thiếu tài nguyên I/O hoặc RAM.
Đối với môi trường phát triển (Development) hoặc PoC, cấu hình tối thiểu bắt buộc như sau:
- CPU: Tối thiểu 2 nhân (vCPU) với kiến trúc 64-bit.
- RAM: Tối thiểu 4GB. Cassandra cần RAM để lưu trữ Cache (Key Cache và Row Cache) và Heap.
- Disk: Tối thiểu 50GB. Bắt buộc sử dụng SSD. HDD cơ học sẽ gây nghẽn cổ chai nghiêm trọng (I/O bottleneck).
- Mạng: Băng thông 1Gbps trở lên, độ trễ (latency) dưới 2ms giữa các node.
Trong bài hướng dẫn này, chúng ta sẽ giả định bạn đã có một instance Ubuntu 24.04 đáp ứng các yêu cầu trên (ví dụ: 4 vCPU, 8GB RAM, 100GB SSD NVMe).
Để xác minh cấu hình phần cứng hiện tại của server, hãy chạy lệnh sau:
lscpu | grep "Model name" && free -h && lsblk -d -o NAME,SIZE,TYPE
Kết quả mong đợi: Hiển thị tên CPU, tổng RAM (ví dụ: 7.8G available), và danh sách đĩa cứng với loại TYPE là "part" hoặc "disk" có dung lượng lớn (ví dụ: 100G).
Cài đặt và chuẩn bị Ubuntu 24.04 LTS
Cập nhật hệ thống và cài đặt gói tiện ích cơ bản
Trước khi cài đặt Cassandra, cần đảm bảo hệ điều hành mới nhất và các công cụ quản lý gói đã sẵn sàng.
Thực hiện cập nhật repository và nâng cấp các gói hiện có:
sudo apt update && sudo apt upgrade -y
Kết quả mong đợi: Hệ thống hiển thị danh sách các gói cần nâng cấp và thực hiện cài đặt thành công mà không báo lỗi.
Cài đặt các gói tiện ích cần thiết cho việc quản lý server (build-essential, curl, vim, net-tools):
sudo apt install -y build-essential curl vim net-tools wget gnupg lsb-release
Kết quả mong đợi: Các gói được cài đặt xong, bạn có thể sử dụng lệnh `vim`, `curl`, `ifconfig` ngay lập tức.
Cấu hìnhHostname, User và Firewall
Đổi tên Host (Hostname) cho Node
Cassandra yêu cầu mỗi node phải có một hostname tĩnh và phân giải được. Tên này sẽ được dùng để các node giao tiếp với nhau trong cluster.
Đổi hostname của server hiện tại thành `cassandra-node1` (tên này sẽ dùng xuyên suốt series):
sudo hostnamectl set-hostname cassandra-node1
Kết quả mong đợi: Không có thông báo lỗi. Tên host thay đổi ngay sau khi đăng nhập lại hoặc chạy lệnh `hostname`.
Thêm mapping vào file `/etc/hosts` để server tự phân giải chính nó:
echo "$(ip route get 8.8.8.8 | awk '{print $NF}')" cassandra-node1 | sudo tee -a /etc/hosts
Kết quả mong đợi: File `/etc/hosts` được cập nhật thêm dòng IP nội bộ và tên `cassandra-node1`. Chạy `ping cassandra-node1` sẽ trả về địa chỉ IP của chính nó.
Cấu hình User và quyền Sudo
Tốt nhất không nên chạy Cassandra dưới quyền root. Chúng ta sẽ tạo một user riêng (ví dụ: `cassandra`) và cấp quyền sudo để quản trị.
Tạo user mới với home directory riêng:
sudo adduser cassandra
Trong quá trình chạy, bạn sẽ được hỏi: Password, Confirm Password, và các thông tin cá nhân (Full Name, etc.). Nhấn Enter để bỏ qua các thông tin không cần thiết, nhập `Y` cho các câu hỏi Yes/No.
Thêm user `cassandra` vào nhóm `sudo` để có quyền quản trị:
sudo usermod -aG sudo cassandra
Kết quả mong đợi: User `cassandra` được tạo và có quyền sử dụng lệnh `sudo`.
Thiết lập SSH key cho user `cassandra` để có thể login không cần password (giảm thiểu rủi ro bảo mật):
sudo mkdir /home/cassandra/.ssh && sudo chmod 700 /home/cassandra/.ssh && sudo touch /home/cassandra/.ssh/authorized_keys && sudo chmod 600 /home/cassandra/.ssh/authorized_keys && sudo chown -R cassandra:cassandra /home/cassandra/.ssh
Sao chép public key của user hiện tại (root hoặc user đang login) vào file `authorized_keys` của user mới:
cat ~/.ssh/id_rsa.pub | sudo tee -a /home/cassandra/.ssh/authorized_keys
Kết quả mong đợi: Bạn có thể đăng nhập vào server bằng lệnh `ssh cassandra@` mà không cần nhập mật khẩu.
Cấu hình Firewall (UFW)
Ubuntu 24.04 sử dụng UFW (Uncomplicated Firewall) mặc định. Cần mở các cổng cần thiết cho Cassandra trước khi kích hoạt firewall để tránh bị khóa kết nối.
Thiết lập chính sách mặc định: Cho phép kết nối nội bộ, chặn kết nối từ bên ngoài:
sudo ufw default deny incoming && sudo ufw default allow outgoing
Cho phép SSH (Cổng 22) để không bị khóa khỏi server:
sudo ufw allow ssh
Cho phép các cổng giao tiếp của Cassandra:
- 9042: Native Transport Protocol (Client kết nối vào CQL). Bắt buộc mở nếu client ở mạng khác.
- 7000: Native Transport (Inter-node communication). Chỉ cần mở cho các node trong cluster.
- 7001: Native Transport (Inter-node communication) - Dùng cho việc phát hiện node mới.
- 8888: JMX Port (Giám sát). Thường chỉ mở cho node quản trị.
Lệnh mở các cổng quan trọng cho Cassandra:
sudo ufw allow 9042/tcp && sudo ufw allow 7000/tcp && sudo ufw allow 7001/tcp && sudo ufw allow 8888/tcp
Kích hoạt Firewall:
sudo ufw enable
Khi được hỏi "Command may disrupt existing ssh connections. Proceed anyway?", nhấn `Y` (vì chúng ta đã cho phép cổng 22 ở bước trước).
Verify trạng thái firewall:
sudo ufw status verbose
Kết quả mong đợi: Hiển thị `Status: active`, `Default: deny (incoming), allow (outgoing)`, và danh sách các cổng 22, 9042, 7000, 7001, 8888 trong trạng thái `ALLOW`.
Cài đặt Java JDK 21 (OpenJDK)
Thêm PPA và cài đặt OpenJDK 21
Apache Cassandra phiên bản 4.x yêu cầu Java 21 (LTS). Ubuntu 24.04 mặc định có thể chưa có sẵn OpenJDK 21 trong repository chính, hoặc phiên bản không tương thích. Chúng ta sẽ thêm PPA của OpenJDK.
Thêm PPA `ppa:openjdk-r/ppa` vào hệ thống:
sudo add-apt-repository ppa:openjdk-r/ppa && sudo apt update
Cài đặt OpenJDK 21 JDK (bao gồm cả JRE và công cụ phát triển):
sudo apt install -y openjdk-21-jdk
Kết quả mong đợi: Quá trình cài đặt chạy xong, hiển thị thông tin về việc cài đặt các gói liên quan đến Java 21.
Cấu hình biến môi trường và xác minh phiên bản
Đảm bảo hệ thống sử dụng đúng phiên bản Java 21 mặc định:
sudo update-alternatives --config java
Nhấn Enter để chọn đường dẫn chứa `java-21-openjdk-amd64` (thường là lựa chọn mặc định hoặc số 1 nếu chỉ có một bản).
Thiết lập biến môi trường `JAVA_HOME` cho user `cassandra` và root (để Cassandra tìm thấy Java):
Tạo file cấu hình `/etc/default/cassandra` (chưa có nội dung, sẽ viết trong phần sau, nhưng cần đảm bảo đường dẫn Java đúng). Tuy nhiên, để kiểm tra ngay lập tức, hãy chạy lệnh xác minh:
java -version
Kết quả mong đợi: Hiển thị dòng đầu tiên là `openjdk version "21.0.x"` (với x là số bản vá), dòng thứ hai là `OpenJDK Runtime Environment`, và dòng thứ ba là `OpenJDK 64-Bit Server VM`.
Để chắc chắn Cassandra sẽ dùng đúng Java, hãy kiểm tra đường dẫn:
readlink -f $(which java)
Kết quả mong đợi: Đường dẫn kết thúc bằng `/usr/lib/jvm/java-21-openjdk-amd64/bin/java`.
Cấu hình biến môi trường `JAVA_HOME` toàn cục trong file `/etc/environment` để tất cả các service đều nhận diện:
echo "JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64" | sudo tee -a /etc/environment
Reload cấu hình và kiểm tra lại:
source /etc/environment && echo $JAVA_HOME
Kết quả mong đợi: In ra đường dẫn `/usr/lib/jvm/java-21-openjdk-amd64`.
Verify môi trường trước khi chuyển sang Phần 2
Trước khi tiến hành cài đặt Cassandra, hãy chạy script kiểm tra nhanh để đảm bảo mọi thứ đã sẵn sàng:
echo "=== System Check ===" && hostname && echo "=== Java Version ===" && java -version 2>&1 | head -n 1 && echo "=== Firewall Status ===" && sudo ufw status | grep -E "(7000|7001|9042|22)" && echo "=== Disk Check ===" && df -h /var/lib && echo "=== User Check ===" && id cassandra
Kết quả mong đợi:
hostname trả về `cassandra-node1`.
java -version trả về `openjdk version "21....
ufw status hiển thị các cổng 22, 7000, 7001, 9042 ở trạng thái `ALLOW`.
df -h /var/lib cho thấy phân vùng có đủ dung lượng trống (ít nhất 10GB).
id cassandra hiển thị user `cassandra` thuộc nhóm `sudo`.
Nếu tất cả các mục trên hiển thị đúng, môi trường Ubuntu 24.04 đã sẵn sàng cho việc cài đặt Apache Cassandra.
Điều hướng series:
Mục lục: Series: Triển khai Database phân tán với Apache Cassandra và Ubuntu 24.04
Phần 2: Cài đặt và cấu hình node đầu tiên của Apache Cassandra »