天天看点

【下一代核心技术DevOps】:(六)Rancher集中存储及相关应用

1. 前言

为什么要使用集中存储? 使用集中存储有个很大的优势是数据安全和统一管理,和集群完美配合。 产品集成存储经历过几个阶段:

  1.单机本机存储。 系统使用本地硬盘存储

  2.单网络集中存储。 局域网主机使用同一网络内的磁盘阵列存储单元

  3.分布式集群本地存储。 集群节点使用自己本地硬盘存储。

  4.分布式集群集中存储。集群节点使用集中存储(其背后可以是单一存储也可以是分布式存储,集中存储相当于一个代理入口)

其中云计算用的最多的是 3,4 这几个。主要适应于网络架构的分布式设计和基本云计算存储,如多机房,多地存储。使用集中存储给运维带来的最大

优势就是核心数据保存,不怕应用崩溃,各种docker容器都可以随时抛弃,重建。不用担心数据问题。

2. Rancher中使用集中存储NFS

Rancher对Docker集群的管理已经是非常方便,默认是没有加载共享存储的,我们这里使用RancherNFS插件来实现一个统一的存储,

当然也可以选择其他的插件,目前官方只有这一个,其他非官方的如CephFS,FastDfs等请自行添加插件或自写插件来实现。在此不做过多解读

点击Rancher应用商店,搜索nfs,找到官方插件并添加

【下一代核心技术DevOps】:(六)Rancher集中存储及相关应用

 填写主机地址:IP

目录: 建议不要填 / 而是指向NFS服务器存储的一个目录

 ON_Remove: Purge: 删除映射目录时会删除NFS远程对应的数据  Retain:不删除远程数据

 点“启动”即可 ,Rancher会在各个宿主机上面添加NFS驱动

【下一代核心技术DevOps】:(六)Rancher集中存储及相关应用

   查看NFS驱动,每个宿主机都已启动完毕

【下一代核心技术DevOps】:(六)Rancher集中存储及相关应用

 使用NFS:

 我们在添加服务的时候, 可以配置下卷  name:/容器对应目录 

  填  logs:/opt/logs  会对应远程NFS里面 新建的 logs目录

  如果填  /logs:/opt/logs  则是常用的卷映射,会写入宿主机本地的/logs目录

 驱动填写默认的  rancher-nfs

 这样 容器里面读写的文件就直接操作远程Nfs服务器了

【下一代核心技术DevOps】:(六)Rancher集中存储及相关应用

 查看效果: 

 启动应用后,容器的日志已经输出到NFS里面了。

【下一代核心技术DevOps】:(六)Rancher集中存储及相关应用

 用途及注意事项:

 主要是针对日志类的,可以统一做日志搜集。

 针对于数据持久化的,如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的安全性。