1. 前言mysql
为何要使用集中存储? 使用集中存储有个很大的优点是数据安全和统一管理,和集群完美配合。 产品集成存储经历过几个阶段:nginx
1.单机本机存储。 系统使用本地硬盘存储sql
2.单网络集中存储。 局域网主机使用同一网络内的磁盘阵列存储单元docker
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的安全性。