0 0
Read Time:2 Minute, 22 Second

機器之心編譯

機器之心編輯部

擼代碼、寫博客、動手做點好玩的東西是一個碼農常見的進階方式。很多大牛都有寫博客的習慣,動手能力更是不在話下。今天介紹的這位機器學習愛好者 WILL HO 也喜歡寫博客,他不僅自己註冊瞭一個博客網站,還搭瞭一個 28 核的樹莓派集群來實現自托管。在此過程中,他學到瞭 Linux、Docker、Docker Swarm、Kubernetes、DNS、TLS 和網絡拓撲等很多方面的技能。

在最新的一篇博客中,WILL HO 介紹瞭自己搭建的 28 核樹莓派集群。這個集群名叫 Kraken,用到瞭 7 個樹莓派 3B。

前面已經說過,WILL HO 搭建樹莓派集群是為瞭實現自托管,也就是托管自己用 WordPress 搭建起來的博客網站。WordPress 是使用 PHP 語言開發的博客平臺,用戶可以在支持 PHP 和 MySQL 數據庫的服務器上架設屬於自己的網站,也可以把 WordPress 當作一個內容管理系統來使用。

在此之前,他也曾搭建過一個名為 Octopi 的樹莓派集群(一個樹莓派 1B + 和 4 個樹莓派 1B),但很快他就發現,在這個集群上運行 WordPress 有很大的性能瓶頸,打開一個新的 WordPress 博客的單頁加載大約需要 10 秒!

為瞭解決這一瓶頸,WILL HO 下決心對 Octopi 進行升級,於是就有瞭我們今天文章的主角——Kraken。在以下的篇幅中,WILL HO 介紹瞭自己搭建 Kraken 的過程。如果你也有建樹莓派集群的需求或者想學學 Docker 等工具,可以參考作者的方式搭一個自己的集群。

Kraken 概況

Kraken 由 7 個樹莓派 3B 組成,由一個 USB 充電器供電。WILL HO 本打算構建一個由 8 個節點組成的樹莓派集群,但消費級的網絡交換機上的最大端口數為 8 個,能容納 7 個節點和一條到路由器的電纜。

另一種選擇是使用具有 16 個端口的商業級網絡交換機,但這顯然是不可能的,看看價格,勸退。

用樹莓派 3B 搭建的 Kraken 集群規格如下表:

所需的零件清單如下表:

值得註意的是,作者選擇瞭 32GB MicroSD 卡作為第一個節點的存儲,並希望它成為 Docker swarm 設置的主節點。作者預計,還需要額外的存儲空間來構建和部署 Docker 映像。

Kraken (上) 和 Octopi (下)

Kraken 千兆升級

作者發現自己經常在 Raspberry Pi 3B 的內置以太網端口上達到 100Mbps 的帶寬限制。在大型文件的傳輸過程中,傳輸速度甚至徘徊在令人沮喪的 8MB / 秒。

受到 Jeff Geerling 的博客的啟發,作者發現,使用 USB 千兆以太網適配器可以將帶寬提高到 200Mbps 以上。於是,他買瞭一堆便宜的 USB 千兆以太網適配器和一個千兆交換機,開始升級。

便宜的 USB 千兆以太網適配器。

附加零件清單:

升級後,Kraken 看起來是這樣的:

Gigabit Kraken, Octopi and my cable management nightmare

如果所有成本都算下來,打造這個 Kraken 集群總共花瞭 508.84 美元。

基準判別

在升級之前運行 iperf,可以看到最大帶寬是 93.1 Mbps。

~ ❯ iperf -c 192.168.3.11————————————————————Client connecting to 192.168.3.11, TCP port 5001TCP window size: 129 KByte
(default)————————————————————[ 4] local 192.168.3.71 port 57041 connected with 192.168.3.11 port 5001[ ID] Interval Transfer Bandwidth[ 4] 0.0-10.0 sec 111
MBytes 93.1 Mbits/sec

在安裝千兆適配器之後運行 iperf,可以看到最大帶寬為 224 Mbps!

~ ❯ iperf -c 192.168.3.11————————————————————Client connecting to 192.168.3.11, TCP port 5001TCP window size: 145 KByte
(default)————————————————————[ 4] local 192.168.3.71 port 57298 connected with 192.168.3.11 port 5001[ ID] Interval Transfer Bandwidth[ 4] 0.0-10.0 sec 268
MBytes 224 Mbits/sec

有瞭這個簡單的模塊,每個節點就獲得瞭 131Mbps 的帶寬。然而,這些仍然隻是理論上的速度,因為典型的使用場景包括將從網絡接收到的數據寫入磁盤,但是 iperf 隻從網絡接收數據,而不將數據寫入磁盤。

一些註意事項

即使在 Web 服務中,也不大可能持續地充分利用此新帶寬。它主要有助於在首次加載時更快地傳輸大型資源(如圖像數據),之後,用戶的瀏覽器會緩存圖像。

此外,Raspberry Pi 1 至 3 型號中臭名昭著的共享 USB 2.0 總線也限制瞭實際帶寬。

對於未初始化的用戶,單個 USB2.0 總線的 480Mbps 理論單向寬帶在以太網端口、SD 卡插槽和所有 USB 端口之間共享。

帶寬分佈如下所示:

盡管表格中的數字給人的印象是:這次升級沒有帶來性能上的提升。但它們代表的是最壞的情況。通常情況下,人們期望在 web 服務器上進行的主要是讀操作,而很少進行寫操作。

在現實世界中,帶寬分配通常應如下所示:

以上是作者對第二個樹莓派集群的升級操作,但是如果你已經熟悉 Docker 系統,或者正在尋找高性能的傢庭設置,在此不建議使用此教程。

為何選擇此集群?

如果你對 Docker 和 Kubernetes 感興趣,作者強烈建議你上手搭個這樣的集群。對此,他給出瞭兩個理由:

首先,該集群與官方支持的最新版本 Docker 映像兼容。此外,Raspberry Pi 3B 在 armv7 CPU 架構上運行。最新的 Arm 處理器(arm64)向後兼容在 armv7 上編寫和編譯的所有代碼。相反,arm64 處理器不向後兼容 armv6 處理器(Raspberry Pi 1 和 2),因此它們正在被社區淘汰。

其次,對於大多數對帶寬要求較高的應用程序,該集群將是理想的選擇,例如托管你自己的博客,文件同步服務,媒體庫管理器,記筆記應用程序等。考慮到 Raspberry Pi 3 中的 USB 2.0 總線瓶頸,如果你的應用程序需要大量持續的寫入(例如對視頻進行編碼),這個集群的性能可能無法達到要求。

總而言之,構建 Raspberry Pi 3 集群是學習 Docker 和集群的最經濟有效的方式,並且在可預見的將來仍將如此。因此,如果你隻是想接觸 Docker,強烈建議你嘗試一下。

原文鏈接:https://ikarus.sg/how-i-built-kraken/

Amazon SageMaker 是一項完全托管的服務,可以幫助開發人員和數據科學傢快速構建、訓練和部署機器學習 模型。SageMaker完全消除瞭機器學習過程中每個步驟的繁重工作,讓開發高質量模型變得更加輕松。

現在,企業開發者可以免費領取1000元服務抵扣券,輕松上手Amazon SageMaker,快速體驗5個人工智能應用實例。

© THE END

轉載請聯系本公眾號獲得授權

投稿或尋求報道:[email protected]

原標題:《自建28核樹莓派集群,順便學學docker,這裡有一個500美元的搭建方案》

Happy
Happy
0 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleppy
Sleppy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %