技术控

    今日:129| 主题:49225
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] 解决共享卷和跨主机数据访问的难题:使用Convoy-NFS构建共享卷 ...

[复制链接]
眼泪不要你 发表于 2016-10-11 21:56:43
161 4

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
前言

  如果你用过Docker你就会知道,共享卷和跨主机的数据访问是个非常棘手的问题。虽然Docker的生态系统在逐渐走向成熟,但对大多数人来说,在不同环境中实现持久化存储还是很麻烦的。幸运的是,Rancher一直在研究这件事,并且想出了一个能独特的、能解决大部分这个问题的方案。用共享存储运行数据库的方法仍没有被广泛推荐,但对于许多其他的情况,跨主机共享卷倒是一个很好的做法。
  这个指南中的大部分内容是受Rancher的一个线上Meetup的启发。另外,如果你想自己从头开始搭建Convoy-NFS,这个网页上有一些有关NFS配置的信息,你也许能作为参考。
  Rancher Convoy

   如果你以前没有听说过Rancher的 Convoy项目 ,这里可以先简单介绍一下。Rancher希望可以通过Convoy项目让持久化容量存储变得简单方便。Convoy是一个非常棒的磁盘插件,因为它为用户提供了多种不同的选择。例如EBS卷和S3的支持,与VFS/NFS一起,为用户提供了一些用于配置共享存储的厉害并且灵活的选择。
  Dockerized-NFS

   这里有一个小秘诀,教你怎样启动一个能和Convoy-NFS服务连接起来的Docker化的NFS服务器。Docker-NFS基本上是一个穷人的EFS。如果你想运行它,你必须有足够的信心,相信服务器不会被毁,或相信你的数据无足轻重,即使丢失了也无所谓。你可以在 这里 找到更多我过去使用的Docker NFS服务器的信息。
   给点进阶些的提议,我会建议你看看这个叫做弹性文件存储或简称EFS的东西,它是 NFS的AWS实现。这个解决方案更简单粗暴,它是一个随时可用于生产的NFS服务器,你可以把它视为Convoy-NFS的后端。构建EFS是很简单的,不过它超出了这篇文章的讨论范围。你可以在这个链接中看看 如何构建和配置EFS 。
  警告:因为EFS是AWS的一个较新的服务,它只能在几个位置上使用。(不过更多的可使用位置也很快会出现)。
  下图就是对于Docker-NFS服务器来说,你的docker-compose.yml 可能的样子:
  [code]docker-nfs:
image: cpuguy83/nfs-server
privileged: true
volumes:
- /exports
command:
- /exports[/code]  在采用这个容器化的NFS服务器的方法时你可能会碰到的一个疑难杂症是,你的主机要么没有安装NFS内核模块,要么没有打开伴随的服务。
  在Ubuntu上很容易安装内核模块,SSH到主机上, 运行NFS Server容器以及以下命令:
  [code]sudo apt-get install nfs-kernel-server[/code]  在CoreOS上,模块是安装了的,只是没有打开。要启用NFS,你需要SSH到对应主机上,运行NFS Server容器,并运行下面的命令:
  [code]sudo systemctl start rpc-mountd[/code]  配置EFS

   配置EFS是很容易的。用上面提到过的 链接 ,你可以了解到创建一个能与Convoy连接的EFS卷的全部步骤。创建EFS卷时,你可以注意一下EFS share的IP地址,或者如果你在创建卷之后展开到配置中,那就注意一下AWS为share提供的DNS名。
  在Rancher的社区应用服务目录里有一个新的目录入口,有了它,你可以直接通过Convoy使用EFS卷,这能简化某些配置。使用应用服务目录入口仍需要你先创建EFS share,但配置Convoy来与其连接的过程会简单很多。只需要从AWS里复制出EFS ID,选择其中你已创建共享的区域,然后指定要将EFS share安装到本地的位置。“/efs”就是一个很好的在最开始测试东西的例子:
   
解决共享卷和跨主机数据访问的难题:使用Convoy-NFS构建共享卷 ...-1 (服务器,数据库,主机,生态,网页)

  Convoy-NFS

  目前,Rancher还提供另外一种名叫“Convoy-NFS”的应用服务目录项,来将容器连接到NFS Server上:

解决共享卷和跨主机数据访问的难题:使用Convoy-NFS构建共享卷 ...-2 (服务器,数据库,主机,生态,网页)

   安装程序是非常简单的,但也有几件事情要注意。首先,堆栈 必须 命名为“Convoy-NFS”,这是插件的名称。其次,NFS Server应该和在其上设置NFS Server的主机名相匹配。如果你创建的是Docker-NFS容器,记得使用容器的IP(为了写这篇文章,我用了一个测试环境,因而只用了Rancher容器内部IP来部署NFS Server)。当你用EFS创建你的NFS share时,使用已配置的DNS的名称。
  最后一点要注意的是安装选项和安装点。这里的端口需要与将NFS Server 和(2049 for docker-nfs)配置在一起的端口相匹配,并且确保你打开了nfsver=4。另外,如果你要使用nfsvers=4选项,记得一定为MountDirectory用“/”。不使用nfsvers=4选项的话就用“/exports”。
  最终一步的配置和下图看上去差不多:
  [code]proto=tcp,port=2049,nfsvers=4[/code]  你可以添加其他选项来调整共享,但这些都是最低限度的构建所必需的组件。
  给Rancher几分钟时间提供Convoy-NFS容器。一切完成后你就可以创建和攻击NFS卷了。最快的检查是否一切正常的方法,是点击Infrastructure -> Storage Pools选项。如果你在视图中看见了主机,那你就可以开始准备创建和分享卷了。
1234下一页
友荐云推荐




上一篇:docrel — Slightly better document.createElement
下一篇:基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 ...
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

妙春 发表于 2016-10-12 05:35:13
试金可以用火,试女人可以用金,试男人可以用女人。
回复 支持 反对

使用道具 举报

kkiwjjyq 发表于 2016-11-7 21:49:43
是爷们的娘们的都帮顶!大力支持
回复 支持 反对

使用道具 举报

小黑哥1980 发表于 2016-11-10 13:44:47
楼主的帖子实在是写得太好了。文笔流畅,修辞得体!
回复 支持 反对

使用道具 举报

wetgreshy 发表于 2016-11-11 00:47:02
在你没上线的时候,我总会看着你的资料发呆.
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表