paint-brush
Cách xây dựng cụm Raspberry Pi 32 lõi từ Scratchtừ tác giả@alejandroduarte
29,185 lượt đọc
29,185 lượt đọc

Cách xây dựng cụm Raspberry Pi 32 lõi từ Scratch

từ tác giả Alejandro Duarte9m2022/07/18
Read on Terminal Reader
Read this story w/o Javascript

dài quá đọc không nổi

Raspberry Pi là một bo mạch máy tính mini mà bạn có thể kết nối màn hình, chuột, bàn phím và cài đặt hệ điều hành dựa trên Linux với GUI. Bạn có thể sử dụng nó ở chế độ "không đầu" không có GUI và chạy, ví dụ: máy chủ cơ sở dữ liệu. Một cụm như thế này là một cách tuyệt vời để thử nghiệm với các hệ thống phân tán. Trong bài viết này, tôi sẽ hướng dẫn bạn cách tạo một cụm Raspberry Pi với: 8 nút với 32 lõi, 64 GB RAM và 2TB dung lượng lưu trữ.

Company Mentioned

Mention Thumbnail
featured image - Cách xây dựng cụm Raspberry Pi 32 lõi từ Scratch
Alejandro Duarte HackerNoon profile picture

Raspberry Pi là một bo mạch máy tính mini mà bạn có thể kết nối màn hình, chuột và bàn phím và cài đặt hệ điều hành dựa trên Linux với GUI. Hoặc bạn có thể sử dụng nó ở chế độ "không đầu" không có GUI và chạy, ví dụ: máy chủ cơ sở dữ liệu. Có rất nhiều cách sử dụng mà bạn có thể cung cấp cho Raspberry Pi — từ xây dựng máy chủ Minecraft đến gương thông minh, khả năng là vô tận.


Bảng máy tính mini


Kể từ khi tôi bắt đầu khám phá MariaDB và tìm hiểu về các cụm cơ sở dữ liệu, SQL phân tánXpand , ý tưởng xây dựng một cụm Raspberry Pi đã nằm trong đầu tôi. Một cụm như thế này là một cách tuyệt vời để thử nghiệm với các hệ thống phân tán.


Trong bài viết này, tôi sẽ chỉ cho bạn cách tạo một cụm Raspberry Pi với:


  • 8 nút
  • 32 lõi
  • RAM 64 GB
  • 2TB dung lượng lưu trữ

Những gì bạn cần

Nếu bạn muốn xây dựng cụm của riêng mình, bạn không cần phải mua 8 thiết bị Raspberry Pi. Ngay cả một thiết bị cũng đủ để học mọi thứ. Các hướng dẫn trong bài viết này hữu ích ngay cả khi bạn định cấu hình chỉ một Raspberry Pi. Tuy nhiên, lời khuyên của tôi là phải có ít nhất ba thiết bị để xây dựng cụm của bạn nếu bạn thực sự muốn nâng cao kỹ năng của mình trong quản trị Linux , Ansible , Docker , Kubernetes , cụm cơ sở dữ liệu … bạn đặt tên cho nó!


8 x Raspberry Pi 4 Model B (RAM 8 GB)


Với ý nghĩ đó, vui lòng thay thế số 8 bằng bất kỳ số nào của bạn. Thực hiện tương tự với các thông số kỹ thuật của thiết bị Raspberry Pi nếu bạn có các kiểu máy khác nhau với RAM hoặc bộ nhớ ít hơn hoặc nhiều hơn. Đây là những gì tôi đã sử dụng:



Điều chỉnh số lượng để thiết lập của bạn. Bạn có thể nhận một hoặc nhiều bộ nguồn Raspberry Pi nếu bạn có rất ít thiết bị (giả sử là 1 hoặc 2) hoặc bộ sạc đa USB. Nếu bạn sử dụng bộ sạc nhiều USB, hãy đảm bảo rằng mỗi cổng có thể cung cấp ít nhất 2,4Am (5V). Chọn thẻ microSD phù hợp với mục tiêu và ngân sách của bạn. Tôi khuyên bạn nên sử dụng thẻ SD ít nhất 32 GB.


Về phía dây cáp và vỏ máy, hãy chọn bất cứ thứ gì phù hợp với thiết lập của bạn. Bạn không nhất thiết phải có quạt làm mát, nhưng tôi khuyên bạn nên sử dụng chúng nếu bạn định để thiết bị của mình bật trong thời gian dài.


Tôi cũng khuyên bạn nên lấy tất cả các nguyên liệu trước khi bắt đầu “nấu ăn”, đặc biệt nếu bạn muốn sử dụng nhiều thiết bị Raspberry Pi.

Cài đặt Raspberry Pi OS (Headless)

Hệ điều hành (OS) chúng tôi sẽ sử dụng là Raspberry Pi OS , một hệ điều hành dựa trên Debian được tối ưu hóa cho bo mạch Raspberry Pi. Hệ điều hành Raspberry Pi được cài đặt trên thẻ nhớ microSD bằng máy tính của bạn. Sau đó, bạn kết nối các thẻ microSD này với thiết bị Raspberry Pi của mình và khởi động chúng.


Đặt tất cả các thẻ microSD và hộp Raspberry Pi trên bàn làm việc của bạn. Bạn sẽ cần bộ điều hợp thẻ SD (chúng thường đi kèm với thẻ microSD) hoặc đầu đọc USB thẻ SD nếu máy tính đang làm việc của bạn không có khe cắm thẻ SD. Mang theo cả Sharpie nữa.


Tải xuống ứng dụng Raspberry Pi Imager và cài đặt nó trên máy tính của bạn. Lấy thẻ nhớ microSD và kết nối nó với máy tính của bạn. Mở ứng dụng Raspberry Pi Imager và nhấp vào CHỌN HĐH . Từ danh sách, nhấp vào Hệ điều hành Raspberry Pi (khác) và chọn Raspberry Pi OS Lite (64-bit) nếu thiết bị Raspberry Pi của bạn là 64-bit hoặc Raspberry Pi OS Lite (32-bit) nếu không:


Raspberry Pi Imager


Nhấp vào CHỌN LƯU TRỮ và chọn thẻ nhớ microSD. Kiểm tra kỹ xem bạn đã chọn đúng ổ đĩa chưa và nhấp vào biểu tượng “bánh răng” (tùy chọn nâng cao). Đối với tên máy chủ, hãy sử dụng rpi01 hoặc một cái gì đó tương tự. Bạn sẽ đặt tên cho các thiết bị là rpi01 , rp02 , rp03 , v.v.


Chọn tùy chọn Bật SSHSử dụng xác thực mật khẩu . Đặt tên người dùng (tôi sẽ để số pi mặc định) và đặt mật khẩu an toàn.


Đánh dấu vào tùy chọn Định cấu hình mạng LAN không dây và nhập tên và mật khẩu của kết nối WiFi của bạn. Định cấu hình cài đặt ngôn ngữ của bạn.


Vì chúng ta phải thực hiện việc này một lần với mỗi thẻ microSD, hãy đảm bảo đặt trường Tùy chọn tùy chỉnh hình ảnh thành: để luôn sử dụng . Bằng cách này, các cài đặt sẽ được lưu và quá trình này sẽ dễ dàng hơn cho các thẻ tiếp theo:


Các tùy chọn nâng cao của Raspberry Pi Imager


Bây giờ, bạn có thể nhấp vào LƯU và sau đó VIẾT để bắt đầu quá trình. Sau khi hoàn tất, hãy đẩy thẻ ra và kết nối nó với một trong các thiết bị Raspberry Pi, đặt nó trở lại hộp và đánh dấu hộp bằng số 01 . Lặp lại quá trình này cho tất cả các thiết bị.

Lắp ráp cụm

Tùy thuộc vào loại trường hợp cụm bạn có, quá trình lắp ráp có thể khác nhau. Làm theo hướng dẫn đi kèm với vỏ máy của bạn hoặc tìm ảnh trực tuyến để biết rõ cách đặt thiết bị trong các lớp.


Lắp ráp cụm


Tôi khuyên bạn nên nhìn trước để quyết định lắp ráp bộ phận nào trước. Ví dụ: với trường hợp tôi chọn, tôi phải lắp quạt làm mát trước khi gắn thiết bị Raspberry Pi lên các lớp.


Sau khi bạn gắn Raspberry Pi, hãy sử dụng Sharpie để viết số của nó trên lớp. Điều này sẽ giúp bạn trong tương lai nếu bạn phải lấy thẻ nhớ microSD ra để cấu hình lại hoặc bất kỳ tác vụ quản trị nào khác liên quan đến việc chạm vào phần cứng.


Tất cả các thiết bị được gắn


Khi bạn đã gắn tất cả các thiết bị, hãy kết nối cáp USB với thiết bị Raspberry Pi và bộ sạc đa USB. Bạn có thể tùy chọn sử dụng Nguồn qua Ethernetbộ chuyển mạng thay vì bộ sạc USB nếu muốn, nhưng tôi sẽ để bạn khám phá; nó chắc chắn đáng để kiểm tra.


Bạn có thể có bộ sạc (hoặc bộ chuyển mạng nếu bạn muốn sử dụng) bên cạnh giá Raspberry Pi hoặc gắn vào nó. Tôi đã sử dụng dây cao su để giữ bộ sạc được gắn vào mặt bên của vỏ máy. Nó hoạt động tốt.


Với cáp USB được cắm vào, bạn đã sẵn sàng khởi động tất cả các máy tính mini đó! Kết nối bộ sạc và bật nó lên. Tùy thuộc vào kiểu Raspberry Pi mà bạn sử dụng, chúng có thể mất một khoảng thời gian để khởi động, vì vậy hãy kiên nhẫn. Trong khi đó, hãy tận hưởng đèn LED nhấp nháy và quạt khởi động.


Đèn LED nhấp nháy và quạt khởi động

Kết nối thông qua SSH

Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ có thể truy cập các thiết bị Raspberry Pi thông qua SSH. Hãy thử bằng cách chạy phần sau từ máy tính của bạn:


 ssh [email protected]


Giới thiệu mật khẩu của bạn và trả lời để thêm thiết bị vào danh sách các máy chủ đã biết. Chúc mừng! Cụm của bạn hiện đang hoạt động.


Cụm trực tiếp

Bạn có thể muốn chạy các lệnh để kiểm tra thông tin phần cứng. Ví dụ:


  • lscpu : Thông tin về kiến trúc CPU
  • df -H : Sử dụng dung lượng đĩa hệ thống tệp
  • sudo fdisk -l : Thông tin phân vùng
  • free -m : Dung lượng RAM đã sử dụng, dung lượng trống và tổng dung lượng RAM
  • cat /proc/version : Thông tin nhân Linux

Cấu hình thủ công với raspi-config

Nếu bạn có một Raspberry Pi, bạn có thể kết nối với nó thông qua SSH như được mô tả ở trên và sử dụng chương trình tiện ích raspi-config để định cấu hình các cài đặt khác nhau. Bạn có thể sửa đổi kết nối WiFi ( S1 ), thay đổi tên máy chủ ( S4 ) và mật khẩu người dùng ( S3 ) và mở rộng hệ thống tệp ( A1 ), trong số nhiều thứ khác.


Cấu hình thủ công với raspi-config

Cấu hình tự động với Ansible

Nếu bạn có nhiều Raspberry Pi trong cụm của mình, bạn có thể muốn tự động hóa quá trình cấu hình bằng công cụ như Ansible . Với Ansible, bạn có thể chạy một lệnh trên nhiều máy mà không cần phải thực hiện các tác vụ lặp đi lặp lại. Ví dụ: giả sử chúng tôi muốn mở rộng hệ thống tệp trên mỗi Raspberry Pi. Điều này có thể được thực hiện từ dòng lệnh như sau:


 sudo raspi-config --expand-rootfs


Nếu không có tự động hóa, bạn phải SSH thành rpi01.local , chạy lệnh trên và kết thúc phiên SSH. Bạn phải lặp lại tất cả các bước này cho rpi02.local , pr03.local , rp04.local , v.v. Thay vào đó, bạn có thể chỉ cần yêu cầu Ansible chạy lệnh cho bạn trên tất cả các máy. Hãy xem làm thế nào để làm điều này.


Bạn phải cài đặt Ansible trên một nút điều khiển được kết nối với mạng cục bộ của bạn. Nó có thể là một trong các thiết bị Raspberry Pi, máy tính xách tay đang làm việc của bạn hoặc bất kỳ máy nào khác miễn là nó chạy hệ điều hành dựa trên Unix như Linux hoặc macOS.


Tôi tình cờ có một máy tính xách tay cũ mà tôi đã đặt lại làm cơ sở dữ liệu chuyên dụng được kết nối với mạng của mình, vì vậy tôi đã sử dụng nó làm nút điều khiển (Tôi sẽ chỉ cách cài đặt cơ sở dữ liệu có tính năng sao chép trong các thiết bị Raspberry Pi trong một bài viết tới).


Tôi sẽ không xem qua hướng dẫn cài đặt Ansible vì quá trình này khác nhau trên các hệ điều hành khác nhau. Kiểm tra tài liệu chính thức và cài đặt nó trên máy tính xách tay của bạn hoặc bất kỳ thiết bị nào mà bạn muốn gán làm nút điều khiển.


Trước khi bắt đầu, tôi khuyên bạn nên tạo một tệp cấu hình mẫu mà bạn có thể chỉnh sửa sau này theo ý muốn:


 sudo su ansible-config init --disabled -t all > /etc/ansible/ansible.cfg exit


Trong tệp này, hãy tắt kiểm tra khóa máy chủ để đơn giản hóa quy trình. Đừng làm điều đó trong môi trường sản xuất! Thay đổi dòng sau:


 ;host_key_checking=True


đến điều này:


 host_key_checking=False


Tiếp theo, bạn cần xác định khoảng không quảng cáo. Đây là danh sách các máy mà bạn muốn điều khiển bằng Ansible. Khoảng không quảng cáo được xác định trong tệp / etc / ansible / hosts . Ví dụ: bạn có thể thêm các máy sau vào khoảng không quảng cáo bằng cách sử dụng địa chỉ IP hoặc tên máy chủ của chúng:


 [mymachines] foo.example.com bar.example.com 192.0.2.50 192.0.2.51


Nếu các máy có kiểu mẫu nào đó trong địa chỉ IP hoặc tên máy chủ của chúng, bạn có thể sử dụng các dải ô khác. Đây là những gì bạn có thể làm với các thiết bị Raspberry Pi của mình. Chỉnh sửa tệp / etc / ansible / hosts bằng cách thêm phần sau vào cuối:


 [rpis] rpi[01-08].local


Thay đổi mẫu để khớp với tên máy chủ và số của bạn. Điều này tương đương với:


 [rpis] rpi01.local rpi02.local rpi03.local rpi04.local rpi05.local rpi06.local rpi07.local rpi08.local


Trong khoảng không quảng cáo này, rpis là một tên tùy ý mà bạn có thể sử dụng để chỉ tất cả các thiết bị Raspberry Pi khi chạy lệnh trên chúng bằng Ansible.


Bạn cần cấu hình tên người dùng SSH mà Ansible sẽ sử dụng khi kết nối với máy. Thêm phần sau vào tệp / etc / ansible / hosts :


 [rpis:vars] ansible_user=pi


Thời gian để kiểm soát máy móc. Một khởi đầu tốt là ping chúng:


 ansible rpis -m ping --ask-pass


Nhập mật khẩu SSH. Bạn sẽ thấy trong đầu ra cách "ping" được trả lời bằng "pong" cho mỗi máy (tôi chỉ hiển thị một ở đây):


 rpi01.local | SUCCESS => {  "ansible_facts": {    "discovered_interpreter_python": "/usr/bin/python3"  },  "changed": false,  "ping": "pong" }


Hãy quay lại với việc mở rộng hệ thống tệp (mặc dù, tôi nghĩ ngày nay điều này không còn cần thiết nữa, hãy cho tôi biết trong phần nhận xét nếu bạn có thể xác nhận điều này). Để thực hiện hành động này trên tất cả các máy, hãy chạy:


 ansible rpis -m shell -a "raspi-config --expand-rootfs" --become --ask-pass


Và đơn giản như vậy, tất cả các thiết bị Raspberry Pi của bạn đều có hệ thống tệp mở rộng. Đây là thời điểm tốt để cập nhật hệ thống trên tất cả các máy:


 ansible rpis -m shell -a "apt update -y" --become --ask-pass ansible rpis -m shell -a "apt upgrade -y" --become --ask-pass


Bạn có thể khởi động lại tất cả các thiết bị như sau:


 ansible rpis -m shell -a "reboot" --become --ask-pass


Và khi bạn đã hoàn tất và muốn tắt tất cả các máy một cách an toàn, chỉ cần chạy:


 ansible rpis -m shell -a "poweroff" --become --ask-pass

Cái gì tiếp theo?

Đây mới chỉ là sự bắt đầu. Bây giờ bạn có một cụm máy tính nhỏ sẵn sàng được điều khiển bởi Ansible. Bạn có thể thử thiết lập bất kỳ loại phần mềm máy chủ nào, bao gồm máy chủ web hoặc cơ sở dữ liệu ( xem ví dụ này ). Ngoài ra còn có nhiều hơn nữa về Ansible.


Tôi chỉ sơ bộ bề mặt ở đây bằng cách sử dụng các lệnh đặc biệt , nhưng bạn có thể tạo ví dụ: tạo playbook chứa trạng thái mà bạn muốn cụm của mình. Khám phá tài liệu và vui chơi!


Cũng được xuất bản tại đây