1
piku 2023-03-02 10:12:49 +08:00 via Android
有没有一种可能,他们可以共用同一个 iSCSI 之类的存储
|
2
huigeer 2023-03-02 10:12:55 +08:00 via Android
mysql 这种不能随便举例子,它属于有状态实例,不合适。
容器化的存储方案有多种,本地,分布式,按自己的实际需求来 |
3
star7th 2023-03-02 10:24:03 +08:00
如果只是短期的日志,我会保存到节点所在硬盘。
对于长期储存,我会用服务器直接起一个 NFS 服务给各大容器公用。 对于数据库存储,我用服务器搭建,不用容器 |
4
SKYNE 2023-03-02 10:30:57 +08:00
可以看一下 rancher ,rancher 本身是一个 k8s 管理平台
|
5
realrojeralone 2023-03-02 10:34:37 +08:00
1 楼正解,解决方案是块存储,比如 Ceph
|
6
SKYNE 2023-03-02 10:37:32 +08:00
不好意思,误操作回复了,
rancher 可以配合使用分布式储存 longhorn , 你可以划定某些节点作为存储节点, 将 longhorn 作为储存类,动态分配给你的应用使用, 目前使用下来挺稳定的,kafka 、MQ 、MySQL 有状态应用也跑在上面 遇到的问题,节点间磁盘使用率有点不均衡,这取决于分配到磁盘上的 pvc 的大小 |
7
mengpp 2023-03-02 10:40:08 +08:00
分布式存储带来的性能损失会比想象中影响更大,尝试过团队开发环境使用 k8s+gluster 部署 mysql 使用,后面因为使用一段时间后,随着数据的增长,性能比较差,又回归到本地存储了
|
8
craftx OP |
9
craftx OP |
13
julyclyde 2023-03-02 11:06:36 +08:00
mysql 也可以吧。挂 volume 进去就行了
|
14
mengpp 2023-03-02 11:08:42 +08:00
@craftx 还是看场景吧,分布式文档数据库对于明显的冷热数据场景挺擅长的,比如 ES;
然后分布式关系型数据库发力的应该是数据分类算法和数据存储算法吧(猜测,没详细了解过),所以能降低性能损耗带来的影响,尝试过 TIDB 和 OB,小表性能体验一般,大表还蛮好的; 另外我尝试的场景中,性能损失大部分也是因为分布式存储多副本的原因,不止网络和 IO |
15
ysjiang4869 2023-03-02 11:11:40 +08:00
日志的方案,应该日志转发到统一的存储中,这个统一的存储可以是数据库、另外的一台日志机器、消息队列等
MySQL 这种数据库,通常会选择绑定节点,docker 和 k8s 都有 label 这样的绑定,通过主从保证高可用吧。 分布式文件系统 100%影响性能,ceph 不是一般小公司能搞定的,里面的坑坑重度用起来问题挺多的,读写速度也不快。 |
16
billlee 2023-03-02 12:15:12 +08:00 via Android
存日志的场景,应该是直接把日志通过网络打到日志服务上。
|
17
onehao28 2023-03-02 14:58:43 +08:00
这不就是计算+存储分离的方案吗? 现在很多数据库都在做类似的,华为的 redis 还有腾讯的 CynosDB 也就是 tdsql-c 就是基于这个架构,用了底层块存储共享能力。
|
18
salmon5 2023-03-02 15:52:13 +08:00
就是计算和存储分离,云厂商搞了 2-3 年了
|
19
salmon5 2023-03-02 15:54:46 +08:00
好几年了
|
21
ElmerZhang 2023-03-02 17:01:10 +08:00
@SKYNE 去年用了一段时间 longhorn ,遇到最麻烦的问题:万一服务异常服务器 CPU 跑满,该节点上所有 longhorn 盘都会 io error ,虽然 redeploy 可恢复,但是要一个个手动操作,很麻烦。
现在已经把 longhorn 都下掉了 |
22
Mirana 2023-03-02 20:16:15 +08:00
存算分离是存储和计算是独立的两个集群 这样部署应该叫超融合
|
23
SKYNE 2023-03-02 21:09:16 +08:00
@ElmerZhang 我们的应用通过 helm 部署,默认都有 limit 限制,存储节点也尽量只作为存储,目前还没遇到过问题
|
24
dcoder 2023-03-03 06:26:22 +08:00
@craftx
要把一个网盘当本地(persistent)硬盘用, 需要: 1. 找到 cloud vendor 提供的相应水平的网盘. 2. mount 上之后, 自己做 performance 测试, 保证你 db 跑在上面真的行. 另外, docker/k8s 其实一直是个残废, 比如搞 stateful 的东西就巨难... 真的要用 docker/k8s, 得接受这个事实, 劲量只当做 stateless computing cluster 来用. |
25
litguy 2023-03-03 08:34:59 +08:00
mysql 只需要一个分布式块存储就行了,不需要分布式文件系统
也可以用 ZFS 作一个 HA 方案,block 通过 iscsi 给 mysql 用 性能还是 OK 的 你可以想象每个 ZFS 节点一对 NVME 作 RAID1 ,两个 ZFS 通过 ZIL 层作强一致 |
26
julyclyde 2023-03-03 11:01:13 +08:00
|
27
litguy 2023-03-03 14:34:43 +08:00
@julyclyde 之所以说块存储,是因为分布式块的性能比分布式文件系统高,你的场景中,只需要一个卷挂载点,mysql 迁移到新的 docker 后,只要这个 docker 挂载这个卷,mysql 起来就可以继续读写,你并不是几个 docker 中的应用要同时读写一个文件
|
28
trzzzz 2023-06-26 18:28:16 +08:00 via iPhone
@ysjiang4869 可以试一下 JuiceFS
|