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

51 天前
 zxsdadasdq
现在有三台机器 其中一台在吃灰
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? [具体玩法不太懂]

[探讨]在机器宕机或者说机器硬盘损坏 即想保留数据 又想快速恢复
2841 次点击
所在节点    NAS
21 条回复
NessajCN
51 天前
要开机自动挂载 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
51 天前
reply#1 @NessajCN
大概知道这种方式, 但是假如是存储和计算一起断电 然后又断电重启 这个时候这个 mount 会失效 计算的机器会因为没有数据目录 一直在 restart
mouyase
51 天前
OP 的 j4125 是在 pve 里运行的 ikuai 吗
zxsdadasdq
51 天前
reply#3 @mouyase
没有 j4125 独立运行 ikuai, ikuai 里跑虚拟机运行 nginx 这些跟网络相关的服务
mouyase
51 天前
@zxsdadasdq 印象里 iKuai 的虚拟机性能好像很差,docker 也很难用,文件修改只能下载修改再上传
zxsdadasdq
51 天前
reply#5 @mouyase
虚拟机能用就行 虚拟机内装个 docker 对性能要求不高, 像你说的 可以在虚拟机内用 docker 或其他方式部署 webdav 等
retanoj
51 天前
我有两台虚机,一台做 BT ,一台装 OpenMediaVault(OMV)

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

这算不算存算分离 ;)
NessajCN
51 天前
@zxsdadasdq 不会
zxsdadasdq
51 天前
reply#7 @retanoj
你这个方案不错 只是我的不是用虚拟机部署的存储 没办法控制先启动存再启动算
zxsdadasdq
51 天前
reply#8 @NessajCN
刚刚了解了一下 感觉可以写一个脚本 在算成功启动时,存没启动前 算轮训判断 smb 是否挂载成功 如果挂载成功再启动 docker
fkdog
51 天前
有点看不太懂你们了。
下一步是不是就要给家用 nas 上 cdn 接入了?
coagent
51 天前
个人想法:

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
51 天前
其实我建议弄一台高性能的小主机做计算,目前 j1900 truenas 做存储,一台小主机 5600h 做 windows ,基本上主流下载软件都得到很好的支持,也可以运行 wsl 使用 docker desktop ,远程桌面控制小主机,非常稳定且易用。windows 解决 smb 挂载很好用。
zmcity
50 天前
三台不一样的机器搞存算分离,以及单点没有太强稳定的环境,最好限制在 nas 存电影,另一个机器转码这种只读/数据损坏也无所谓的事情。主要是机器少无法互相形成热备,没有太好的方法实现快速恢复。

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

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

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

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

比较难搞的是位于依赖链中间的一台机器意外下线,又没有热备的情况下怎么自动恢复依赖链底层的设备(可能可以尝试配置不断重启?
lisxour
50 天前
@fkdog cdn 太 low 了,直接给 nas 拉专线
xiaofan2
50 天前
我靠 存算分离我第一想法是 MQ 的存算分离和大数据的存算分离
zxsdadasdq
50 天前
reply#17 @zmcity
不错, 之后会考虑加 UPS

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1037920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX