1. 前言
为什么要使用集中存储? 使用集中存储有个很大的优势是数据安全和统一管理,和集群完美配合。 产品集成存储经历过几个阶段:
1.单机本机存储。 系统使用本地硬盘存储
2.单网络集中存储。 局域网主机使用同一网络内的磁盘阵列存储单元
3.分布式集群本地存储。 集群节点使用自己本地硬盘存储。
4.分布式集群集中存储。集群节点使用集中存储(其背后可以是单一存储也可以是分布式存储,集中存储相当于一个代理入口)
其中云计算用的最多的是 3,4 这几个。主要适应于网络架构的分布式设计和基本云计算存储,如多机房,多地存储。使用集中存储给运维带来的最大
优势就是核心数据保存,不怕应用崩溃,各种docker容器都可以随时抛弃,重建。不用担心数据问题。
2. Rancher中使用集中存储NFS
Rancher对Docker集群的管理已经是非常方便,默认是没有加载共享存储的,我们这里使用RancherNFS插件来实现一个统一的存储,
当然也可以选择其他的插件,目前官方只有这一个,其他非官方的如CephFS,FastDfs等请自行添加插件或自写插件来实现。在此不做过多解读
点击Rancher应用商店,搜索nfs,找到官方插件并添加
填写主机地址:IP
目录: 建议不要填 / 而是指向NFS服务器存储的一个目录
ON_Remove: Purge: 删除映射目录时会删除NFS远程对应的数据 Retain:不删除远程数据
点“启动”即可 ,Rancher会在各个宿主机上面添加NFS驱动
查看NFS驱动,每个宿主机都已启动完毕
使用NFS:
我们在添加服务的时候, 可以配置下卷 name:/容器对应目录
填 logs:/opt/logs 会对应远程NFS里面 新建的 logs目录
如果填 /logs:/opt/logs 则是常用的卷映射,会写入宿主机本地的/logs目录
驱动填写默认的 rancher-nfs
这样 容器里面读写的文件就直接操作远程Nfs服务器了
查看效果:
启动应用后,容器的日志已经输出到NFS里面了。
用途及注意事项:
主要是针对日志类的,可以统一做日志搜集。
针对于数据持久化的,如MySQL数据 可以 通过映射 mysql/data:/var/lib/mysql 把数据集中存储到NFS上
注意:1. 集中存储要考虑到同时读写的问题,即Lock。 有的程序无法同用一套数据,这时候要考虑到单独读写或放到多个变量子目录
如MySQL无法同时起2个实例读写一套数据。
2. NFS插件还有不完善的地方, 如只能映射目录,无法映射文件 ,我们常用的 -v /nginx.conf:/nginx.conf 就无法使用了。
3. 多NFS服务器配置,无法从UI界面添加, 只能从YML文件来处理。
4. 集中存储一定要考虑速度问题,毕竟网络传输没有本地传输速度快,尽量选择公有云/私有云网络是走光纤通道的。尽量不要跨地域传输,如深圳的使用上海的NFS服务器
5. 尽可能使用可靠性有保障的存储,毕竟服务器,容器神码的都可以丢弃,数据是要绝对安全的。推荐阿里云的NFS服务,可以保障9个9的安全性。