Nếu bạn theo dõi website Orange Pi Việt Nam đã lâu, chắc hẳn bạn sẽ nhớ trước đây tôi đã từng hướng dẫn cài docker swarm cho Orange Pi, và có băn khoăn về một cluster Orange Pi thì làm được gì? Về cơ bản, Orange Pi trước đây là một máy tính mini nhỏ, không làm được gì nhiều và mạnh, khi đó việc nối các thiết bị Orange Pi nhỏ với nhau thành một cluster lớn kết hợp cả CPU và RAM của tất cả các Orange Pi để làm được một việc gì lớn, thì chẳng phải quá tiết kiệm sao? Trên Proxmox cũng vậy, giờ nếu cài cluster trên Promox cho Orange Pi cho ta nhiều khả năng hơn trước rất nhiều.
Cài cluster trên Proxmox cho Orange Pi để làm gì?
Cluster trên Proxmox cho Orange Pi được sử dụng để tạo một hệ thống quản lý tài nguyên tập trung, bao gồm nhiều máy chủ Orange Pi hoạt động như một hệ thống duy nhất. Những lý do chính để cài đặt cluster trên nền tảng này bao gồm:
- Tăng khả năng chịu lỗi: Nếu một nút (node) trong cluster gặp sự cố, các nút khác có thể tiếp quản khối lượng công việc để đảm bảo tính liên tục của dịch vụ.
- Cân bằng tải: Cluster giúp phân phối tài nguyên và khối lượng công việc giữa các nút, tối ưu hóa hiệu suất.
- Quản lý tài nguyên tập trung: Cluster cho phép quản lý dễ dàng các máy ảo (VM), container và tài nguyên phần cứng từ một giao diện duy nhất.
- Tích hợp với phần cứng ARM: ARM là một kiến trúc phổ biến trong các hệ thống tiết kiệm điện năng và giá thành thấp, như Orange Pi, làm cho việc triển khai cluster ARM trên Proxmox trở nên hấp dẫn cho các dự án nhỏ, edge computing, hoặc các ứng dụng microservices.
Hướng dẫn cài cluster trên Proxmox
- Đầu tiên bạn cần có 1 máy chính, và các máy node (máy phụ) để kết nối vào. Các máy này cùng phải cài cùng version Proxmox, ví dụ nếu là Promox 7 thì tất cả các node đều cùng phải là Proxmox 7, đối với Promox 8 cũng vậy. Promox 7 có phần hơi lạc hậu với các ứng dụng hiện tại, do đó tôi khuyên dùng Promox 8
- Tiếp đến tại máy chính, tôi đặt tên là orangepi5-1 chẳng hạn, ở mục Datacenter, chọn Cluster, sau đó chọn Create Cluster. Giao diện sẽ hiện ra một bảng thông báo, bạn chọn thông số cơ bản và bấm Create. Lúc đó sẽ có một cửa sổ khác, đưa ra 3 thông số:
- IP: là IP của máy chính
- Fingerprint: chuỗi mã hóa thông tin (ko cần quan tâm lắm)
- Join Information: chuỗi thông tin để tham gia vào cluster, lúc này bạn chỉ cần bấm vào button Copy Information rồi chuyển qua bước sau.
- Tại các máy node, bạn cần đổi hostname khác với máy chính, ví dụ như là orangepi5-2, orangepi5-3, …. Cả dải IP tĩnh cũng vậy, như tôi sẽ đặt là 192.168.86.150, 192.186.86.151, 192.186.86.152 …. để cluster hoạt động được ổn định. Cũng tại phần Cluster, bạn bấm nút Join Cluster và dán chuỗi thông tin Join Information từ máy chính trước vào ô, sau đó giao diện sẽ yêu cầu bạn điền password root của máy chính, IP máy phụ và xác nhận mạng. Bấm Join và đợi đến khi hoàn thành. Như vậy bạn đã join được 1 node vào cluster Proxmox của Orange Pi, lặp lại với các node khác.
Bạn có thể làm gì với giao diện Cluster Proxmox?
Đầu tiên, bạn có thể đăng nhập shell của từng node dễ dàng ngay tại trên giao diện của máy chính, vì vậy nếu muốn cài gì bằng script tự động qua Shell, bạn chỉ cần cài qua giao diện Cluster máy chính.
Tiếp theo, bạn có thể theo dõi hoạt động của từng node, khởi động lại, tắt đi, hoặc điều khiển từng node dê dàng
Triển khai cân bằng tải trên Proxmox cluster với Nginx
Một ví dụ ứng dụng cụ thể, tận dụng sức mạnh của nhiều máy, đó là dùng máy chủ Nginx cân bằng tải (Nginx Load Balancer), cụ thể như sau:
Mô hình sử dụng
- Proxmox Cluster: Bao gồm nhiều nút (node) Proxmox.
- VM/Container chạy ứng dụng web: Các nút trong cluster lưu trữ các máy ảo hoặc container chạy ứng dụng web (ví dụ: ứng dụng Node.js, Python Flask/Django, hoặc PHP Laravel).
- Load Balancer (Nginx): Được triển khai trên một máy ảo hoặc container trong cluster, đóng vai trò phân phối lưu lượng truy cập đến các backend server.
- IP phân tán: mỗi một container hoặc máy ảo trong cluster, như tôi đã nói ở trên, đều được gán 1 IP trong một mạng nội bộ riêng của Cluster. Ví dụ 192.168.100.1/24
Quy trình hoạt động
- Người dùng truy cập trang web qua load balancer (Nginx). Ví dụ 192.168.100.100
- Load balancer sẽ kiểm tra các backend server (VM/container) còn hoạt động không.
Bạn có 3 container (hoặc VM) chạy ứng dụng web trên các nút khác nhau trong cluster:
web1
(IP: 192.168.100.101)web2
(IP: 192.168.100.102)web3
(IP: 192.168.100.103)
- Nginx phân phối lưu lượng truy cập dựa trên thuật toán cân bằng tải (round-robin, least connections, IP hash, v.v.).
- Nếu một backend server gặp sự cố, Nginx tự động ngừng gửi lưu lượng đến backend đó và tiếp tục hoạt động với các server còn lại.
Cấu hình Nginx (/etc/nginx/conf.d/load_balancer.conf
) bạn xem trong gist này: https://gist.github.com/thanhtantran/e6620632a762fc7f26240b439aec98d2
Lợi ích của mô hình này trên Proxmox Cluster
- Tính sẵn sàng cao: Nếu một backend server gặp sự cố, Nginx tự động loại bỏ nó khỏi danh sách cân bằng tải.
- Cân bằng tải động: Tự động phân phối yêu cầu web đến các backend server để tránh tình trạng quá tải.
- Dễ mở rộng: Thêm các VM/container mới vào cluster và cập nhật cấu hình Nginx mà không gián đoạn dịch vụ.
- Quản lý tập trung: Tất cả các backend server đều được quản lý từ Proxmox cluster, giúp dễ dàng theo dõi và bảo trì.
Triển khai đồng bộ dữ liệu giữa các backend server
Để đảm bảo 3 VM (web1
, web2
, web3
) cung cấp cùng một nội dung, bạn cần cơ chế đồng bộ dữ liệu hoặc chia sẻ lưu trữ, ví dụ:
- Sử dụng hệ thống lưu trữ dùng chung:
- NFS (Network File System): Các server truy cập dữ liệu từ một ổ đĩa mạng chung.
- CephFS: Hệ thống lưu trữ phân tán được tích hợp sẵn trên Proxmox.
- Công cụ đồng bộ:
- rsync hoặc cron job: Đồng bộ định kỳ giữa các server.
- Git hoặc CI/CD pipeline: Đẩy mã nguồn lên các server backend sau mỗi lần cập nhật.
- Database dùng chung:
- Nếu ứng dụng cần cơ sở dữ liệu, bạn cần triển khai database trên một máy chủ riêng hoặc sử dụng cluster database (như MySQL Cluster hoặc PostgreSQL).
Việc triển khai Nginx Load Balancer hay HAProxy (High Availability Proxy) về mặt kĩ thuật khá phức tạp, và bạn cần học thêm chuyên sâu về vấn đề này. Trong khuôn khổ bài viết này, tôi không thể chia sẻ cụ thể hơn. Nhưng nếu bạn muốn đặt hàng hoặc tạo một cluster cho ứng dụng web của bạn, có sử dụng Nginx Load Balancer hay HAProxy (High Availability Proxy), đội ngũ kỹ thuật của Orange Pi Vietnam hoàn toàn có thể triển khai và bàn giao theo nhu cầu của khách hàng.
Series Proxmox cho ARM đến đây là hết, tuy nhiên khả năng của Proxmox cho ARM là vô tận, bạn hãy tự mình tìm hiểu thêm bằng cách đặt hàng các máy node Orange Pi 5 tại chúng tôi để được hỗ trợ khi cần thiết. Xem thêm các bài trước trong series:
Chúc các bạn thành công!