前言

基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s 等方案的测试验证。

考虑过使用二手服务器,比如 Dell R730, 还搞了一套配置清单,如下:

  • Dell R730
  • 3.5 尺寸规格硬盘
  • CPU: 2686v4*2
  • 内存:16g*8
  • 存储:480Gintel ssd 系统盘 + 6tsas 希捷* 2 个数据盘
  • RAID 卡:h730 卡
  • 电源:单电 750w
  • 盘架满
  • 价格大约是 3130 元

再来套服务器机柜。..

但是考虑到功率和噪音太大了,家里也没有适合放服务器的这么大的地,最终放弃了。

也考虑过用单片的 arm 开发板,但是需要搞好几片,然后编译系统、刷机、装合适的壳子、找电源线和网线,再接入家庭网络。.. 一台一台折腾,太耗时间了。

即使最后搞好了,可能家里也没那么多的网口,还得买个交换机接入。..

最后,功夫不负有心人,在闲鱼上找到了结合二者形态,看起来像服务器的 ARM 开发板矩阵- Firefly Cluster Server. 很适合我的需求️, 一起看看吧

Firefly Cluster Server - ARM 开发板矩阵

服务器全貌

我们先来看一下它的全貌:

就是一个小尺寸的服务器的样子,但是千万不要被它的外形迷惑了。它和 x86 的服务器内部完全不一样。

这个是基于 Firefly Cluster Server R1 - core-3399-jd4 * 11 那款的定制款,接口会少一些。但是内部构造是完全相同的。

这个是它的背面,2 个小风扇 + 电源接口。

打开顶盖,让我们一探其内部构造:

也就是说,其散热是:每片 CPU 上覆盖的散热片被动散热 + 整个机箱的主动风扇散热。

除了电源,就是一块主板(底板), 这个主板挺有意思的,它是由这些部分构成的:

  • 11 个金手指接口,用于插入 Firefly core-3399-jd4 的核心板,一个接口插一个。也就是说总共有 11 个核心板。对应的也就有 11 台 arm 服务器,每台服务器配置后面介绍。

    • 其中,1 个是 main core, 用作管理端,类似服务器的 BMC 去管理其余 10 台服务器
    • 另外 10 个是 worker node. 用于实际负载运行。
  • 交换机芯片,用于这 11 个核心板的内部以太网通信。
  • 4 个以太网接口,其中:
    • 1 个用于 main core
    • 另外 3 个和底板的交换机芯片打通

具体的网络拓扑图如下,通过这幅图就能很直观的了解这台服务器的内部构造了:

服务器核心 - Firefly core-3399-jd4

这是服务器的核心:Firefly core-3399-jd4 的上手图,单手可握,还是很小的:

每片 Firefly core-3399-jd4 核心板就是一台 arm 服务器,其配置为:

  • CPU: 瑞芯微 rk3399 六核心 arm64 CPU (这个芯片是 28nm 制程的,发热还不小)
  • 内存:LPDDR4, 2G/4G 可选
  • NPU: 选装,我购买的没有该芯片
  • 存储:eMMC, 8G - 128G 可选,我的是 32G.

也就是说,这一台服务器,启动后会有:11 台 6 核,2/4G 内存,32G 存储的配置可用。

以 4G/32G 的配置为例,总共有:

  • 66 核 CPU
  • 44G 内存
  • 352G 存储

可用。

刷机

这种服务器,本来的应用场景主要是用作:云手机矩阵。所以其默认带的是安卓系统。

根据我的需求全部刷机为 Ubuntu 系统。

具体刷机过程就不详细介绍了,感兴趣的可以参考这里:

子板固件升级 - 产品介绍 — Firefly Wiki (t-firefly.com)

Maincore - BMC 管理端

这个服务器的 BMC 管理端也很有意思,功能大致为:

  • 设备列表
  • 设备监控仪表板
  • Shell 终端窗口
  • 子版固件升级

如下图:

这个界面是不是看上去有点熟悉?

其实它这个管理端是基于:Grafana 魔改的。

  • UI 界面就是:Grafana + 一些定制化的 panel
  • 监控数据是基于:Prometheus + node exporter
  • Shell 终端窗口是基于 adb 实现的 (这个服务器的 11 个核心板,除了通过以太网交换机互联;其余 10 个子版也会作为 USB 设备连接到 maincore)
  • 子版固件升级是基于瑞芯微的 Linux 刷机工具实现的

实战

这台服务器首次启动效果如下:

再被我折腾了很多次之后,最终设备坏了 4 个, 只剩下 7 个可用了。

心在滴血。..

功率消耗

其功率稳定在 30 - 40 W(7 片,每片功率 5 W 左右), 如下图:

功率还是比较低的。这就是 arm 芯片的优势。

总结

基于个人的工作/兴趣需求,我想要:

  • 多台服务器
  • 一直运行
  • 噪音小
  • 功耗低

这台看起来像服务器,但实际上是由 11 个 arm 开发板组成的矩阵满足了我的需求。

  • 被我折腾坏 4 片开发板后,还有 7 片可供使用
  • 可以一直运行
  • 噪音还是有点大(主要是暴力风扇的原因,后续考虑找个静音风扇安装)
  • 功耗低

基本上满足了我的需求。后续我会先用它来搭建 HashiCorp nomad 集群。

敬请期待。

️参考文档

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server的更多相关文章

  1. iTOP-IMX6UL 实战项目:ssh 服务器移植到 arm 开发板

    实验环境:迅为提供的Ubuntu12.04.2 以及虚拟机 编译器:arm-2009q3 编译器 开发板系统:QT系统   开发板使用手册中给Windows 系统安装了 ssh 客户端,给 Ubunt ...

  2. iTOP-4412开发板-实战教程-ssh服务器移植到arm开发板

    本文转自迅为开发板:http://www.topeetboard.com 在前面实战教程中,移植了“串口文件传输工具”,整个移植过程是比较简单的,而且我 们没有做任何协议方面的了解,只是“配置”+“编 ...

  3. [Linux] PHP程序员玩转Linux系列-Ubuntu配置SVN服务器并搭配域名

    在线上部署网站的时候,大部分人是使用ftp,这样的方式很不方便,现在我要在线上安装上SVN的服务器,直接使用svn部署网站.因为搜盘子的服务器是ubuntu,因此下面的步骤是基于ubuntu的. 安装 ...

  4. arm开发板6410/2440上mjpg-streamer网络视频服务器移植

    摄像头移植 一.环境 主机环境 :ubuntu 10.10         目标板 :FS-S5PC100 主机工具链 :gcc-4.4.5         交叉工具链 :arm-unknown-li ...

  5. 建立开发板与PC机之间的nfs服务器

    ARM开发板与PC通过NFS 网络文件系统挂接,很方便文件的移动,也为我们的开发带来了方便.接下来,我就详细的介绍下如何建立ARM与PC机的挂接. 我是用的UBuntu系统. 首先,我们需要在主机上安 ...

  6. 移植BOA服务器到开发板

    移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5 ...

  7. 嵌入式Boa服务器上CGI开发-(转自Bryce.Xiao)

    嵌入式WEB服务器常见的有lighttpd shttpd thttpdboa mathopd minihttpdappwebgoahead=============================== ...

  8. [Linux] PHP程序员玩转Linux系列-lnmp环境的搭建

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 在平常的工作中,我作为PHP程序员经常要搭建一下环境,这个环境就是Linux系统下安装nginx,php,mysql这三个软件,对软件进行 ...

  9. [Linux] PHP程序员玩转Linux系列-搭建代码开发环境

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 有些同学可能觉得我写的都是啥yum安装的,随便配置一下而已,没啥技术含量,我的目的 ...

  10. [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

随机推荐

  1. vue全家桶进阶之路37:Vue3 路由守卫

    在 Vue.js 3.x 中,我们可以使用路由守卫来拦截路由的跳转,从而实现一些功能,例如:登录验证.页面权限控制等. Vue.js 3.x 中的路由守卫和 Vue.js 2.x 中的基本相同,都包含 ...

  2. linux中使用jenkins自动部署前端工程

    1.去年在自己的服务器上安装了jenkins,说用来自己研究一下jenkins自动化部署前端项目,jenkins安装好了,可是一直没管,最近终于研究了一下使用jenkins自动化部署,以此记录下来. ...

  3. AcWing900.整数划分(python)

    题目详情 知识点 计数类DP 分析题目,k个数是默认排好序的,也就是说,对于划分我们的考虑是无序的:例如 4 = 1+1+2 4 = 1+2+1 4 = 2+1+1 以上三种方式是没有区别的,所以在求 ...

  4. Uncaught TypeError: imageStyle.getImageState is not a function

    这个错误也是遇得到哟,柑橘自己好无辜呀,我哪里错了,找了半天原来还是自己找的错误 看 import Circle from 'ol/geom/Circle'; feature.setStyle(new ...

  5. drf——登录功能、认证、权限、频率组件(Django转换器、配置文件作用)

    Django转换器.配置文件作用 # django转换器 2.x以后 为了取代re_path int path('books/<int:pk>')--->/books/1---> ...

  6. K8S | 核心原理分析

    目录 一.背景 二.持续集成 三.K8S架构 1.核心组件 2.分层结构 3.核心能力 3.1 发现与负载 3.2 调度 3.3 自动伸缩 四.应用案例 1.服务部署 2.交互流程 五.参考源码 整体 ...

  7. 【技术积累】JavaSciprt中的函数【一】

    什么是函数?如何声明函数? JavaScript中的函数是一段可重复使用的代码块,它可以接受输入并返回输出. 在JavaScript中,函数是一种特殊的对象,因此可以将其存储在变量中,将其作为参数传递 ...

  8. 通用密钥,无需密码,在无密码元年实现Passkeys通用密钥登录(基于Django4.2/Python3.10)

    毋庸讳言,密码是极其伟大的发明,但拜病毒和黑客所赐,一旦密码泄露,我们就得绞尽脑汁再想另外一个密码,但记忆力并不是一个靠谱的东西,一旦遗忘密码,也会造成严重的后果,2023年业界巨头Google已经率 ...

  9. Typora 主题Mo Dark 样式

    Mo Dark 主题样式 html { font-size: 16px; } /*加粗字体样式*/ strong { -webkit-background-clip: text; -webkit-te ...

  10. Java杂记————object.getClass()和object.class以及Java中的toString()方法的的区别

    不说废话,直接上干货: (注意大小写:object为对象,Object为类) 1,object.getClass()它是Object类的实例方法,返回一个对象运行时的类的Class对象,换句话说,它返 ...