V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
测试工具
SmokePing
IPv6 访问测试
deetz
V2EX  ›  宽带症候群

Portable Homelab

  •  
  •   deetz · 177 天前 · 1510 次点击
    这是一个创建于 177 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求概述

    近期回国,要在国内呆一段时间。在国内期间虽然有一个常驻地,但一方面很多计算和网络设备在行李里,一方面也会在不同的地区到处跑跑,还有刚回国期间的超长隔离,需要搭建一个 homelab 环境来满足移动时最简单的网络需求和一些软件需求。

    网络需求包括:

    1. 能够在有有线网络的情况下提供无线网络接入,或者在没有网络接入的情况下,使用 4G modern 提供无线网络接入。
    2. 使用一些特定的邮件和搜索服务:虽然各家的 app 越来越封闭,但是搜索引擎还是获取信息特别是外文信息最重要的渠道。
    3. 连接学校的 VPN 网络获取文献:这个比较诡异,直联 VPN 可以建立连接,但是实际上因为速度太慢,处于不可用的状态。因此,需要在上级设备中进行网络加速。
    4. 提供基本的去广告和防火墙服务。
    5. 能够提供基本的冗余和稳定性,也能够提供给家人使用。

    在软件上的需求如下:

    1. 需要一个 python 环境,可以跑一些简单的自建服务。
    2. 需要提供一个 R 环境,可以跑一些简单的定时代码。
    3. 以上的两个环境最好都能够有一个 web editor, 这样可以通过 ipad 进行编辑,也可以在笔记本在做其他工作的时候进行一些简单的任务。
    4. 能够支持 docker ,快速搭建所需要的服务。

    解决方案

    All-in-one (放弃)

    可能最为方便的解决方案是一个 all-in-one 的小主机。如果采纳这个方案,则首要使用 ESXi 搭建多台 linux 虚拟机,在其中布置多个服务。预计需要虚拟 2-4 台机器:一台 openwrt 。一台 linux 作为 Rstudio server ,一台 linux 作为 code-server 和 python 环境,一台 Linux 跑其他 docker 环境。Rstudio 和 code server 也可以考虑以 docker 容器的方式运行。现在比较合适的机器是使用 N6005 处理器的 PN41 或者 NUC11ATKPE 。

    这个选择的优势在于:

    1. 性能同其他的方案比起来有相对的优势。
    2. 一体化程度非常高,插上电源线即可马上使用。
    3. 我手上有剩余的 16gb 笔记本内存和一个 128gb 的 ssd 硬盘,可以利用。

    但是也有不少劣势:

    1. 价格很贵,至少需要 1000+RMB 购买机器,还需要购买无线网卡。
    2. 虽然性能好,但是 N6005 是 11 代处理器。在 12 代处理器已经发布的时候,并且小核有着非常大的提升,这并不是一个特别好的选择。
    3. 比较折腾,特别是 ESXi 可能对特定硬件需要寻找并安装订制驱动。
    4. 这套系统家属也需要使用,冗余不够(属于伪需求啦)。

    利用手头设备的分离式方案 (现在的方案)

    最后选择了利用手头的设备做了一个分离式的方案,这个方案硬件上由以下部分组成:

    • GL-MT1300 (既有)
    • Raspberry Pi 4B ( 4gb 版本,既有)
    • 华为 4G modern (电信版本,既有)
    • R4S 套装( 4gb 版本,新购入)

    其中有三件是既有设备,R4S 则是新购入的。

    GL-MT1300 是原厂定制化 openwrt ,没有安装任何插件,仅仅作为主网关和 AP ,提供给所有设备使用。Raspberry Pi 4B 使用了新的 Raspberry Pi OS (64-bit) lite ,主要负责跑 docker 容器。R4S 则安装了 openwrt ,并安装了诸多插件,作为旁路网关使用,供有需要的设备使用。华为的 4G modern 则在有需要的时候作为网卡接入 GL-MT1300 。Raspberry Pi 和 R4S 用一个双头 24w 的 USB 电源供电,而 GL-MT1300 使用了自己的电源。

    在整个这套解决方案有些脱裤子放屁的感觉,特别是在网络需求方面。GL-MT1300 本身可以通过修改插件的方式的安装需要的配件。Raspberry Pi 4B 也可以以 docker 容器的方式来运行一个 openwrt 实例。但是最后还是选择了三个分开的方案,除了爱折腾外,原因有三:

    1. 因为 GL-MT1300 性能太差,在安装插件后遇到了很多的问题,网络不稳定。
    2. Raspberry Pi 4B 的 docker 容器运行 openwrt ,没有 openwrt 原生运行稳定和延迟小。
    3. Raspberry Pi 用 docker 容器的方式运行 openwrt 经常出现 CPU 占用达到 50%以上的情况,基本无法顺利地运行负荷较重的其他 docker 应用。

    相较之下,R4S 在原生运行 openwrt ,在相似的网络负载的情况下,CPU 尽管性能弱于 Raspberry Pi 4B ,占用只有 5%左右。从这个意义上来说,完全可以用更便宜的 R2S 来代替,体积还会更小一些。

    这套系统组装之后,肯定没有 all-in-one 的解决方案优雅,但有以下优势 /胜在折腾:

    1. 能够很快分离,给不同的情景使用。比如 Raspberry Pi 可以通过 usb-c 有线连接 iPad ; R4S 可以单独拆出接入家庭网络作为旁路网关使用。
    2. 虽然旁路网关会降低速度,当主要的网络更为稳定。
    3. 在应急情况下所有设备都可以通过 USB 移动电源供电。

    另外,买了一个 20 元左右的软质包,可以将所有的线材和设备进行收纳,方便移动。

    其他

    Raspberry Pi 4B 上没有选择自己编译 R 和 Rstudio server ,而是拉取了一个以 Jetson Nano 中的 R 开发为基础,移植到 Raspberry Pi 的镜像。地址在: https://github.com/pinei/edgyR-pi

    这个环境下的 R 的版本在 4.0.2 ,使用 https://mac.r-project.org/benchmarks/ 的代码进行 benchmark ,单核性能同 14 年前的酷睿处理器接近。所以跑一些简单的代码可以,就不用想着来做主要的 R instance 了。

    8 条回复    2022-06-17 18:00:06 +08:00
    jjxtrotter
        1
    jjxtrotter  
       177 天前
    标题看成 Por*ub 是不是没救了
    banmuyutian
        2
    banmuyutian  
       177 天前
    @jjxtrotter #1
    +1 我第一眼也是
    tutugreen
        3
    tutugreen  
       177 天前 via Android
    ESXi + 大小核,不知道调度如何(

    另一个方案(

    要不上云,性能无忧,推拉包快,用的都是最新硬件,免维护,可以打打快照,出问题概率小。

    不用的时候关机,付个存储费,1000+RMB 其实可以用挺久了。

    本地就做个组网,或者收个便宜的 5G 手机,还能开 WIFI6 热点,Root 后能走 VPN 。
    zer
        4
    zer  
       176 天前
    R4S 刷 OpenWRT ,用自带的 Docker 的话,是否能满足呢
    Reficul
        5
    Reficul  
       176 天前
    All In One 倒是一次配置之后就比较简单,搬家过几次只要最前面的 PPPoE 网络拨号密码改下。但是如果各种设备组网,搬来搬去设备间网线插来拔去的就很麻烦。

    BTW:上云最简单
    guanzhangzhang
        6
    guanzhangzhang  
       176 天前
    上云,你和云上 vpn 打通
    deetz
        7
    deetz  
    OP
       175 天前
    @zer 不如用树莓派了,性能还更好一些。
    deetz
        8
    deetz  
    OP
       175 天前
    @guanzhangzhang
    @tutugreen
    是的……但是在计费这块我还是不太放心,自己没有太好的追踪订阅的习惯。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1357 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 23:57 · PVG 07:57 · LAX 15:57 · JFK 18:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.