V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zxsdadasdq
V2EX  ›  NAS

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

  •  
  •   zxsdadasdq · 13 天前 · 2552 次点击
    现在有三台机器 其中一台在吃灰
    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  
       13 天前
    要开机自动挂载 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
       13 天前
    reply#1 @NessajCN
    大概知道这种方式, 但是假如是存储和计算一起断电 然后又断电重启 这个时候这个 mount 会失效 计算的机器会因为没有数据目录 一直在 restart
    mouyase
        3
    mouyase  
       13 天前
    OP 的 j4125 是在 pve 里运行的 ikuai 吗
    zxsdadasdq
        4
    zxsdadasdq  
    OP
       13 天前
    reply#3 @mouyase
    没有 j4125 独立运行 ikuai, ikuai 里跑虚拟机运行 nginx 这些跟网络相关的服务
    mouyase
        5
    mouyase  
       13 天前
    @zxsdadasdq 印象里 iKuai 的虚拟机性能好像很差,docker 也很难用,文件修改只能下载修改再上传
    zxsdadasdq
        6
    zxsdadasdq  
    OP
       12 天前
    reply#5 @mouyase
    虚拟机能用就行 虚拟机内装个 docker 对性能要求不高, 像你说的 可以在虚拟机内用 docker 或其他方式部署 webdav 等
    retanoj
        7
    retanoj  
       12 天前
    我有两台虚机,一台做 BT ,一台装 OpenMediaVault(OMV)

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

    这算不算存算分离 ;)
    NessajCN
        8
    NessajCN  
       12 天前
    @zxsdadasdq 不会
    zxsdadasdq
        9
    zxsdadasdq  
    OP
       12 天前
    reply#7 @retanoj
    你这个方案不错 只是我的不是用虚拟机部署的存储 没办法控制先启动存再启动算
    zxsdadasdq
        10
    zxsdadasdq  
    OP
       12 天前
    reply#8 @NessajCN
    刚刚了解了一下 感觉可以写一个脚本 在算成功启动时,存没启动前 算轮训判断 smb 是否挂载成功 如果挂载成功再启动 docker
    fkdog
        11
    fkdog  
       12 天前
    有点看不太懂你们了。
    下一步是不是就要给家用 nas 上 cdn 接入了?
    coagent
        12
    coagent  
       12 天前   ❤️ 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  
       12 天前
    其实我建议弄一台高性能的小主机做计算,目前 j1900 truenas 做存储,一台小主机 5600h 做 windows ,基本上主流下载软件都得到很好的支持,也可以运行 wsl 使用 docker desktop ,远程桌面控制小主机,非常稳定且易用。windows 解决 smb 挂载很好用。
    zmcity
        14
    zmcity  
       12 天前
    三台不一样的机器搞存算分离,以及单点没有太强稳定的环境,最好限制在 nas 存电影,另一个机器转码这种只读/数据损坏也无所谓的事情。主要是机器少无法互相形成热备,没有太好的方法实现快速恢复。

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

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

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

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

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

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

    nuc 仅做计算,有点类似 k8s 中无状态服务的感觉,断电什么的无所谓,nas 启成功后重启 nuc 就行,而且这个世纪一年都见不到一次断电,至于真断电了,nas 的 raid 也能保证大概率不丢数据
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:49 · PVG 09:49 · LAX 18:49 · JFK 21:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.