Từ khi kết nối các thiết bị Pi nhỏ lại với nhau thành một cluster hay còn gọi trên docker là 1 swarm, tôi vẫn băn khoăn vậy một cluster pi thì làm được gì? Liệu các máy tính nhỏ này khi kết hợp lại với nhau thì có thể tạo nên một thiết bị có sức mạnh lớn hơn không? Vì vậy tôi luôn đi tìm các ứng dụng và các khả năng cho cluster Orange Pi có thẻ làm được:
1. Gluster
Gluster hay Gluster FS (https://www.gluster.org) là phần mềm mã nguồn mở miễn phí (lại là FOSS nữa) cho phép kết nối các hệ thống file với nhau trong mạng lưới để tạo nên một hệ thống file lớn hơn. Nói cách khác, GlusterFS cho phép ghép các ổ cứng lại với nhau trên các node mạng (hay còn gọi là các brick) và tạo thành 1 filesystem lớn hơn trong mạng lưới đó.
Gluster hỗ trợ ARM do vậy bạn có thể thoải mái cài trên Pi, Orange Pi hay Banana Pi đều được. Trên tất cả các node của cluster bạn chạy các lệnh sau để cài
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:gluster/glusterfs-7
sudo apt-get update
sudo apt-get install glusterfs-server -y
sudo systemctl start glusterd
sudo systemctl enable glusterd
sudo systemctl status glusterd
Lệnh cuối, như bạn đã biết là kiểm tra xem glusterd
đã chạy chưa, nếu hệ thống báo đã chạy thì ok coi như bạn đã cài xong.
Tiếp đến bạn đặt host name cho từng node, nếu không sẽ phải dùng IP
sudo hostnamectl set-hostname "Tên gì đó"
Bạn có thể đặt theo thứ tự như là node-1, node-2, node-3 … để tiện theo dõi
Nhưng sau đó thì phải sửa file host tại tất cả các node bằng lệnh sudo nano /etc/hosts
và đánh lại danh sách IP và tên node vào đó theo đúng tên và IP của node bạn đã đặt
192.168.1.24 node-1
192.168.1.25 node-2
192.168.1.26 node-3
Sau đó, nối các node vào với nhau theo câu lệnh sudo gluster peer probe 192.168.1.25/node-2
…, rồi kiểm tra lại danh sách các node sudo gluster pool list
Tạo thư mục chưa dữ liệu, là brick trên tất các node sudo mkdir -p /mnt/gluster/brick
Cuối cùng, tạo gluster
sudo gluster volume create swarm-disrtributed 192.168.1.24:/mnt/gluster/brick 192.168.1.25:/mnt/gluster/brick 192.168.1.26:/mnt/gluster/brick force
sudo gluster volume start swarm-disrtributed
sudo gluster volume info
ở câu lệnh đầu như bạn thấy là chúng ta có thể dùng IP hoặc hostname đều được, nếu dùng hostname, nó sẽ là
sudo gluster volume create swarm-disrtributed node-1:/mnt/gluster/brick node-2:/mnt/gluster/brick node-3:/mnt/gluster/brick force
Các tùy chọn của tạo gluster là distributed hay replica, hay dispersed. Bạn đọc thêm tại tài liệu sau: https://docs.gluster.org/en/main/Quick-Start-Guide/Architecture/
Đây là ví dụ về kết hợp 5 ổ cứng emmc 8GB của 5 node Orange Pi Zero 2 lại, chúng ta có 1 ổ cứng distributed trên node chính là /mnt/glusterfs có size là 36GB. Nếu dùng thẻ nhớ lớn hơn, hoặc dùng Orange Pi 3 cài HDH lên eMMC, dùng thẻ nhớ 32GB trên 8 nodes, chúng ta sẽ có ổ chung là 32*8 ~ 256GB lưu trữ 🙂
2. Stack deploy
Trên docker, chúng ta có thể deploy 1 stack ứng dụng trên 1 cluster bằng cách phân chia cho node này chạy 1 service này, node kia chạy service kia, từ đó có một máy chủ micro-service khả mở. Việc phân chia cho DB chạy trên 1 node, Nginx trên 1 node, và WordPress trên 1 node, giúp cho việc phân phối tài nguyên tốt hơn, và khả năng mở của ứng dụng sẽ dễ dàng hơn khi cần nâng cấp lên. Thay vì chỉ dùng 1 máy chủ duy nhất cho tất cả dịch vụ.
Cái này thì không cần giới thiệu nhiều, ai làm web service đều biết, đây là ví dụ 1 wordpress stack chạy trên 1 cluster 5x Orange Pi Zero 2
2. DistCC
Cái này khá mới với tôi, vì tôi ít khi sử dụng C compiler. Tuy nhiên đối với dân dùng Linux và lập trình thì việc compile C hay build phần mềm sau khi code lại hoặc tùy biến lại khá cần thiết. Ví dụ như build ra openwrt hoặc build ra android chẳng hạn. DistCC (https://www.distcc.org) là phần mềm cho phép phân phối tác vụ biên dịch phần mềm ngôn ngữ C, C++, … giữa các máy tính với nhau trên cùng 1 mạng lưới. DistCC cho ra kết quả giống như biên dịch trên 1 máy, đơn giản và dễ dùng.
DistCC thậm chí cũng không cần các máy trên cùng mạng lưới có cùng hệ thống file giống nhau, hay cpu giống nhau. Cho nên việc cài trên các node giống nhau là cực kì hợp lý.
distcc is a program to distribute builds of C, C++, Objective C or Objective C++ code across several machines on a network. distcc should always generate the same results as a local build, is simple to install and use, and is usually much faster than a local compile.
distcc does not require all machines to share a filesystem, have synchronized clocks, or to have the same libraries or header files installed. They can even have different processors or operating systems, if cross-compilers are installed.
Viêc cài DistCC như thế nào thì trên trang chủ của phần mềm đã hướng dẫn kĩ. Tôi cũng không giới thiệu nhiều. Như đây là file biểu đồ về thời gian giảm khi sử dụng nhiều node cùng build 1 phần mềm
Có lẽ sẽ còn nhiều ứng dụng nữa cho 1 cluster trên PI, do khôgn có nhiều thời gian nghiên cứu nên hy vọng là những người yêu Orange Pi như các bạn có thể sẽ nghiên cứu và tìm ra. Nếu cần trợ giúp về tạo 1 cluster PI, hãy liên hệ với chúng tôi.
Mà nếu bán nguyên 1 cluster phần cứng ráp sẵn, xong các bạn về chỉ việc triển khai phần mềm có khi là 1 ý hay đó nhỉ 🙂
bạn có thể build rồi bán cho ae dc á