[请教]如何优雅做到存算分离 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
zxsdadasdq
V2EX    NAS

[请教]如何优雅做到存算分离

  •  
  •   zxsdadasdq 2024-05-06 09:05:54 +08:00 4564 次点击
    这是一个创建于 600 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有三台机器 其中一台在吃灰
    A 一台 j4125 装的 ikuai 负责网络中枢 dns/dhcp/nginx
    B 一台绿联 dx6000 装的 truenas
    C 一台 n100 吃灰中

    目前考虑的是应用分别部署在 ikuai 和 truenas 目前据我所知可以用到的存算分离的方案有
    1. smb/nfs 挂载[只知道挂载 但是做不到稳定]
    2. 使用 pve 等[...具体不详没试过]
    3. 集群 k8s ceph[目前就一台可以用于计算的机器 暂时不考虑]

    smb 的挂载方式 目前对我来说不知道如何做到优雅分类 比如说系统是 ubuntu 使用 smb 设置开机自启 之后开机启动 docker? [具体玩法不太懂]

    [探讨]在机器宕机或者说机器硬盘损坏 即想保留数据 又想快速恢复
    21 条回复    2024-05-09 17:42:39 +08:00
    NessajCN
        1
    NessajCN  
       2024-05-06 09:15:36 +08:00
    要开机自动挂载 nfs 的话, 老系统手写一条 fstab
    譬如
    # mount nfs
    #192.168.2.xx:/path/to/remote/nfs /path/to/local/nfs nfs defaults 0 0

    稍微新一点的系统用 autofs
    https://wiki.archlinux.org/title/autofs
    一般在 /etc/auto.master 和 /etc/auto.nfs 里把远程路径加上就好
    zxsdadasdq
        2
    zxsdadasdq  
    OP
       2024-05-06 09:18:31 +08:00
    reply#1 @NessajCN
    大概知道这种方式, 但是假如是存储和计算一起断电 然后又断电重启 这个时候这个 mount 会失效 计算的机器会因为没有数据目录 一直在 restart
    mouyase
        3
    mouyase  
       2024-05-06 09:42:30 +08:00
    OP 的 j4125 是在 pve 里运行的 ikuai 吗
    zxsdadasdq
        4
    zxsdadasdq  
    OP
       2024-05-06 09:45:43 +08:00
    reply#3 @mouyase
    没有 j4125 独立运行 ikuai, ikuai 里跑虚拟机运行 nginx 这些跟网络相关的服务
    mouyase
        5
    mouyase  
       2024-05-06 09:47:15 +08:00
    @zxsdadasdq 印象里 iKuai 的虚拟机性能好像很差,docker 也很难用,文件修改只能下载修改再上传
    zxsdadasdq
        6
    zxsdadasdq  
    OP
       2024-05-06 09:51:18 +08:00
    reply#5 @mouyase
    虚拟机能用就行 虚拟机内装个 docker 对性能要求不高, 像你说的 可以在虚拟机内用 docker 或其他方式部署 webdav 等
    retanoj
        7
    retanoj  
       2024-05-06 10:00:44 +08:00
    我有两台虚机,一台做 BT ,一台装 OpenMediaVault(OMV)

    OMV 这台挂载虚拟机磁盘,并对外提供 NFS 共享磁盘
    BT 这台开机脚本挂载 NFS 共享磁盘,另外 NFS 还供给电视播放器使用
    在虚机启动设置里,配置先启动 OMV 再启动 BT

    这算不算存算分离 ;)
    NessajCN
        8
    NessajCN  
       2024-05-06 10:04:01 +08:00
    @zxsdadasdq 不会
    zxsdadasdq
        9
    zxsdadasdq  
    OP
       2024-05-06 10:13:27 +08:00
    reply#7 @retanoj
    你这个方案不错 只是我的不是用虚拟机部署的存储 没办法控制先启动存再启动算
    zxsdadasdq
        10
    zxsdadasdq  
    OP
       2024-05-06 10:28:25 +08:00
    reply#8 @NessajCN
    刚刚了解了一下 感觉可以写一个脚本 在算成功启动时,存没启动前 算轮训判断 smb 是否挂载成功 如果挂载成功再启动 docker
    fkdog
        11
    fkdog  
       2024-05-06 10:53:14 +08:00
    有点看不太懂你们了。
    下一步是不是就要给家用 nas 上 cdn 接入了?
    coagent
        12
    coagent  
       2024-05-06 12:44:45 +08:00   1
    个人想法:

    1. 硬盘损坏的担心,交给绿联 dx6000 上的 truenas 多硬盘 raid 去承接。raid 就是用来做硬盘损坏保护的。
    2. 断电的问题,你整个 ups ,3 台机器都对接到 ups ,可以考虑 nut 方案,可以做到优雅关机的,还可以控制关机顺序。
    3. j4125 和 n100 用独立的网口去连绿联 dx6000 ,这条链路只有数据存储的通讯,会干净、稳定一些。服务器间挂载用 nfs ,我们在公有云上的服务器挂载 nas 一直都是 nfs ,稳定用几年了。
    4. 你的 j4125 和 n100 ,可以弄 pve ,但不建议搞 ceph ,也不建议搞 k8s ,这两者配置好并稳定运行,需要有足够的运维经验。
    5. 计算节点的服务,在断电重启后,如果早于 nas 启动好,肯定会出现数据目录未就绪的情况。两个思路:
    1 )如果 j4125+n100 都是 pve 或者 esxi ,是可以控制各个 vm 自动开机的顺序、延时多久的,dx6000 要多久就绪是可以测试出来的,测试好后在 pve/esxi 上设置好就行。
    2 )绕行方案,可以通过配置服务启动前先检查数据目录就绪情况,然后再启动服务。比如 docker 设置为不开机自动启动,而是 linux 服务器启动好后运行你一个脚本,这个脚本做数据目录就绪检查,检查通过后再手动拉起 docker ,然后再起其他服务。
    llix110
        13
    llix110  
       2024-05-06 13:22:25 +08:00
    其实我建议弄一台高性能的小主机做计算,目前 j1900 truenas 做存储,一台小主机 5600h 做 windows ,基本上主流下载软件都得到很好的支持,也可以运行 wsl 使用 docker desktop ,远程桌面控制小主机,非常稳定且易用。windows 解决 smb 挂载很好用。
    zmcity
        14
    zmcity  
       2024-05-06 15:59:47 +08:00
    三台不一样的机器搞存算分离,以及单点没有太强稳定的环境,最好限制在 nas 存电影,另一个机器转码这种只读/数据损坏也无所谓的事情。主要是机器少无法互相形成热备,没有太好的方法实现快速恢复。

    我以前搞过 pve 挂载白裙 nfs/smb ,k3s 挂载白裙 nfs/cifs (群晖启动热备 SHR ),以及 openstack 集群部署,挂一些 git server ,ci/cd 之类的服务,稳定性和速度都符合预期,但是模拟故障测试的时候还是很容易搞挂数据(冷备很重要)。

    关机和启动这个比较考验运维能力,我自己的设备都配了 ups ,目前从未遇到过意外断电,设备正常是不关的,除非系统升级,这个时候虚拟机级别的服务都是手动启动,也正好验证下系统升级的状态。非要自动启动的话 #12 说的很好,可以按照这种方式搞。
    totoro625
        15
    totoro625  
       2024-05-06 16:06:59 +08:00
    @fkdog #11 我的 nas 真的套了 CDN ,供外网访问(国内和国外)
    zxsdadasdq
        16
    zxsdadasdq  
    OP
       2024-05-06 16:45:47 +08:00
    reply#12 @coagent
    目前来说 5.2 这个方案 我觉得符合我的需求,谢谢大佬 如果可以的话,希望能够继续探讨一下 脚本的逻辑细节

    reply#14 @zmcity
    感觉大佬回答, 假设有多台机器的情况 有 ups 下 如何设置断电关机.
    我的考量出发点是 折腾的过程当中或多或少会使机器关机或重启 所以需要保证能在这个过程之后 自动恢复
    zmcity
        17
    zmcity  
       2024-05-06 17:31:23 +08:00
    reply#16 @zxsdadasdq

    最后关机的设备上装 NUT 服务器,停电时按关机顺序配置设备的延迟关机时间,这种断电关机方案符合你要求不?

    比较难搞的是位于依赖链中间的一台机器意外下线,又没有热备的情况下怎么自动恢复依赖链底层的设备(可能可以尝试配置不断重启?
    lisxour
        18
    lisxour  
       2024-05-06 17:40:29 +08:00
    @fkdog cdn 太 low 了,直接给 nas 拉专线
    xiaofan2
        19
    xiaofan2  
       2024-05-06 22:01:24 +08:00
    我靠 存算分离我第一想法是 MQ 的存算分离和大数据的存算分离
    zxsdadasdq
        20
    zxsdadasdq  
    OP
      &nbs;2024-05-07 08:18:13 +08:00
    reply#17 @zmcity
    不错, 之后会考虑加 UPS
    ZXiangQAQ
        21
    ZXiangQAQ  
       2024-05-09 17:42:39 +08:00
    NFS 挺稳定的啊,我目前方案就是 4 盘位威联通做存储,nuc 装 ubuntu server 使用 nfs 协议挂载 nas 磁盘做视频解码等

    nuc 上所有服务使用 docker 启动映射配置目录和数据目录,开机自动挂载 nfs 自动启动 docker

    nuc 仅做计算,有点类似 k8s 中无状态服务的感觉,断电什么的无所谓,nas 启成功后重启 nuc 就行,而且这个世纪一年都见不到一次断电,至于真断电了,nas 的 raid 也能保证大概率不丢数据
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2772 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 06:32 PVG 14:32 LAX 22:32 JFK 01:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86