1. Kiểm tra yêu cầu phần cứng và tài nguyên hệ thống
Yêu cầu tối thiểu cho Apache Flink
Apache Flink là framework xử lý stream dựa trên Java, do đó nó tiêu tốn nhiều tài nguyên RAM và CPU. Đối với môi trường Ubuntu 24.04 để chạy một cluster nhỏ (Standalone) hoặc Single-node cho mục đích phát triển và test, bạn cần đảm bảo cấu hình sau.
- CPU: Tối thiểu 2 nhân (vCPU), khuyến nghị 4 nhân trở lên để xử lý parallelism.
- RAM: Tối thiểu 4GB. Flink cần RAM cho JVM heap và native memory. Nếu RAM thấp, bạn sẽ gặp lỗi OutOfMemoryError khi chạy job.
- Disk: Tối thiểu 20GB trống. Cần không gian cho JDK, Maven, Flink binaries, logs và data checkpoint (nếu có).
- Hệ điều hành: Ubuntu Server 24.04 LTS (Focal/Focal-upgrade hoặc Noble).
Để xác minh cấu hình hiện tại của server, hãy chạy các lệnh kiểm tra sau.
cat /proc/cpuinfo | grep "model name" | wc -l
Kết quả mong đợi: Trả về số lượng nhân vật lý (ví dụ: 4). Con số này xác nhận khả năng parallelism của node.
free -h
Kết quả mong đợi: Dòng "Mem" hiển thị tổng RAM. Giá trị "available" nên lớn hơn 2GB để cài đặt JDK và chạy Flink mượt mà.
df -h /
Kết quả mong đợi: Cột "Avail" phải lớn hơn 20G. Nếu nhỏ hơn, bạn cần resize disk hoặc xóa file không cần thiết trước khi tiến hành.
2. Cài đặt và cập nhật Ubuntu Server 24.04
Cập nhật hệ thống và cài đặt gói tiện ích cơ bản
Sau khi cài đặt Ubuntu 24.04 từ ISO, bước đầu tiên là cập nhật package list và nâng cấp các gói bảo mật lên phiên bản mới nhất. Đây là bước bắt buộc để tránh xung đột khi cài đặt phần mềm thứ ba sau này.
sudo apt update && sudo apt upgrade -y
Kết quả mong đợi: Hệ thống liệt kê các package cần nâng cấp và thực hiện cài đặt. Nếu có yêu cầu xác nhận, hãy gõ Y và Enter. Quá trình này có thể mất từ 2-5 phút tùy tốc độ mạng.
Cài đặt các công cụ cần thiết cho Sysadmin
Để triển khai Flink và quản lý server, bạn cần cài đặt các công cụ quản lý package, giải nén, và dòng lệnh cơ bản.
sudo apt install -y build-essential git curl wget unzip net-tools htop vim
Kết quả mong đợi: Các package được tải và cài đặt thành công. Bạn có thể kiểm tra bằng lệnh htop để thấy giao diện quản lý tài nguyên ngay lập tức.
3. Cấu hình SSH và quyền Sudo
Tạo người dùng mới với quyền sudo
Không nên làm việc trực tiếp với tài khoản root. Hãy tạo một user mới (ví dụ: flinkadmin) để quản lý cluster. Điều này giúp bảo mật và dễ dàng audit log sau này.
sudo adduser flinkadmin
Kết quả mong đợi: Hệ thống sẽ yêu cầu bạn nhập Password cho user mới, xác nhận lại password, và các thông tin cá nhân (có thể bỏ trống). Sau đó thông báo "The user information will be updated in database" và "Adding user to group 'sudo'...".
Đảm bảo user mới đã có trong nhóm sudo bằng cách kiểm tra.
groups flinkadmin
Kết quả mong đợi: Đầu ra phải chứa chuỗi sudo (ví dụ: flinkadmin : flinkadmin sudo). Nếu không có, hãy chạy lệnh sudo usermod -aG sudo flinkadmin.
Cấu hình SSH Key cho truy cập không mật khẩu
Để tự động hóa việc deploy sau này, ta sẽ cấu hình SSH Key. Giả sử bạn đang làm việc từ một máy Client, hãy tạo key và copy sang Server.
Trên Client (máy cá nhân của bạn), chạy lệnh tạo key (nếu chưa có):
ssh-keygen -t ed25519 -C "flink-deploy-key"
Kết quả mong đợi: Key được tạo tại ~/.ssh/id_ed25519 và ~/.ssh/id_ed25519.pub.
Copy public key sang server Ubuntu (chạy trên Client):
ssh-copy-id flinkadmin@YOUR_SERVER_IP
Kết quả mong đợi: Hệ thống yêu cầu mật khẩu của user flinkadmin trên server, sau đó hiển thị thông báo "Number of key(s) added: 1".
Để kiểm tra, đăng nhập vào server:
ssh flinkadmin@YOUR_SERVER_IP
Kết quả mong đợi: Kết nối thành công ngay lập tức mà không cần nhập password.
4. Cài đặt Java 17 (JDK) và Apache Maven
Cài đặt OpenJDK 17
Apache Flink phiên bản 1.16 trở lên yêu cầu Java 17 (hoặc cao hơn). Ubuntu 24.04 mặc định có thể không bao gồm JDK 17 trong repository mặc định, do đó ta cần cài đặt từ PPA hoặc repository chính thức.
Đầu tiên, thêm repository PPA của OpenJDK:
sudo add-apt-repository ppa:openjdk-r/ppa -y
Kết quả mong đợi: Thông báo repository đã được thêm vào nguồn cập nhật.
Cập nhật lại danh sách package và cài đặt JDK 17:
sudo apt update && sudo apt install -y openjdk-17-jdk openjdk-17-jre
Kết quả mong đợi: Quá trình cài đặt hoàn tất, hiển thị các package liên quan đến OpenJDK 17 đã được cài đặt.
Cấu hình để sử dụng JDK 17 làm mặc định (update-alternatives):
sudo update-alternatives --config java
Kết quả mong đợi: Hiển thị danh sách các phiên bản Java. Chọn số tương ứng với /usr/lib/jvm/java-17-openjdk-amd64/bin/java. Sau đó làm tương tự với javac nếu cần.
Verify phiên bản Java:
java -version
Kết quả mong đợi: Hiển thị dòng openjdk version "17.x.x".
Cài đặt Apache Maven
Maven là công cụ build để compile code Java ứng dụng Flink. Ubuntu 24.04 có Maven trong repo mặc định.
sudo apt install -y maven
Kết quả mong đợi: Package maven được cài đặt.
Verify phiên bản Maven:
mvn -version
Kết quả mong đợi: Hiển thị Apache Maven 3.x.x cùng dòng Java version: 17.x.x. Dòng Java version rất quan trọng để xác nhận Maven đang dùng đúng JDK 17.
5. Cấu hình Firewall UFW và mở cổng
Bật và cấu hình UFW (Uncomplicated Firewall)
Ubuntu 24.04 sử dụng UFW để quản lý firewall. Mặc định UFW có thể tắt. Chúng ta cần bật nó và cấu hình để chỉ cho phép các kết nối cần thiết cho Flink Cluster.
Bật UFW:
sudo ufw enable
Kết quả mong đợi: Thông báo Firewall is active and enabled on system startup. Lưu ý: Nếu đang SSH, lệnh này có thể ngắt kết nối nếu chưa mở cổng SSH. Do đó, hãy mở cổng SSH trước khi enable.
Mở các cổng cần thiết cho Flink và Kafka
Đối với Flink Standalone Cluster và Kafka, bạn cần mở các cổng sau:
- 22: SSH (Truy cập quản trị).
- 8081: Flink Web UI (Trình duyệt để monitor job).
- 6123: Port mặc định của Flink JobManager (Internal communication).
- 9092: Kafka Broker (Nếu bạn sẽ cài Kafka trong Phần 4).
- 2181: ZooKeeper (Nếu bạn sẽ cài ZooKeeper trong Phần 2).
Mở các cổng này bằng lệnh:
sudo ufw allow 22/tcp
sudo ufw allow 8081/tcp
sudo ufw allow 6123/tcp
sudo ufw allow 9092/tcp
sudo ufw allow 2181/tcp
Kết quả mong đợi: Mỗi lệnh trả về Rules updated hoặc Rules updated (v6).
Đẩy ra Internet (nếu server có public IP) và kiểm tra danh sách luật:
sudo ufw allow from any to any port 8081
Kết quả mong đợi: Rules updated.
Verify cấu hình firewall:
sudo ufw status verbose
Kết quả mong đợi:
- Dòng Status: active.
- Dòng Default: deny (incoming), allow (outgoing).
- Danh sách các cổng (22, 8081, 6123, 9092, 2181) hiện thị trạng thái ALLOW.
Kiểm tra kết nối từ xa
Để đảm bảo firewall không chặn kết nối từ máy Client của bạn đến Web UI Flink:
curl -I http://YOUR_SERVER_IP:8081
Kết quả mong đợi: Nếu chưa chạy Flink, bạn sẽ thấy HTTP/1.1 404 Not Found hoặc Connection refused (đây là bình thường vì server chưa chạy). Quan trọng là không thấy Connection timed out hoặc Connection refused by firewall. Nếu thấy timeout, hãy kiểm tra lại lệnh sudo ufw allow 8081.
Điều hướng series:
Mục lục: Series: Triển khai Database Streaming với Apache Flink và Ubuntu 24.04
Phần 2: Cài đặt và cấu hình ZooKeeper cho môi trường phân tán »