资讯专栏INFORMATION COLUMN

构建微型数据中心——在laptop上运行Rancher

dmlllll / 1072人阅读

摘要:对于开发人员而言,他们的最终目标是拥有自己的数据中心,使他们能够在贴近真实情况的副本上测试他们的服务。这个想法在最近的六个月来变得非常受欢迎,因为许多大型机构已经开始为开发人员提供一个完整的以让数据中心能够在本地运行。

对于开发人员而言,他们的最终目标是拥有自己的数据中心(data center),使他们能够在贴近真实情况的副本上测试他们的服务。然而,开发人员的开发过程中却充满了妥协。因为,数据要么是个简化集,要么被匿名,这加大了开发人员的开发难度。并且公司也还没有准备好为每一位开发人员搭建一个数据中心。

今天,我将提供一个过程摘要来阐明如何使用Rancher和本地计算机减少开发人员在开发时的妥协。我们的目标是为开发人员提供尽可能具有代表性的环境,以至于其可被用于真实的生产环境中,我们将使用Docker和Rancher来做到这一点。

如果您遇到过下列任何一项烦恼:

共享的开发环境因多个问题而崩溃

测试数据不一致

网络问题拖延开发进度

我希望能够提供给您一些解决这些问题的想法。

Rancher and Docker can Help

一个所有服务都在裸机上运行的数据中心,无法将其复制到笔记本上。选择使用虚机方式迁移则有助于这个过程,部分原因在于虚拟化可以让用户运行多个(agent)服务。这样一来,硬件环境随即成为问题的关键所在。无论是磁盘的输入输出不足以支持服务还是没有足够的内存,都会使得搭建一个产品级的生产环境副本以失败告终。然而Docker和Rancher却可以帮您解决这些难题。Docker帮您快速启动容器,Rancher帮您解决编排、网络和负载均衡等一系列问题。

通过这种组合,在您的笔记本电脑上运行数据中心逐渐变为可能。这个想法在最近的六个月来变得非常受欢迎,因为许多大型机构已经开始为开发人员提供一个完整的docker management layer以让数据中心能够在本地运行。许多公司正在进行这项投资,因为他们能够获得各种各样的好处,其中包括:

开发人员在看到问题时更熟悉如何使用工具解决

开发人员在交付代码之前能够找出问题

开发人员能够独立工作,甚至离线工作

新的开发者可以在几分钟内进行工作,而不需要花费几天或是几周来适应开发环境

DevOps工作的主机永远不会宕机。

那么,我们该如何做呢?出于写这个博客的目的,我会假设正在Mac或Windows上使用Docker Toolbox。下载安装和说明文件可以在这里找到https://www.docker.com/produc...。

首先,让我们来看看它长什么样子:

我们将运行两个虚拟机,一个虚拟机只运行Rancher Server,另一个虚拟机作为主机运行并运行应用程序堆栈。用这样的配置有几个原因。首先,它对于真正的情形比较有代表性。其次,一旦出现问题,您的应用程序无法使Rancher因资源不足而发生饥饿现象。

所以,首先第一件事,让我们创建一个具有512 GB和8 GB磁盘的VirtualBox虚拟机。

docker-machine create rancher --driver virtualbox --virtualbox-cpu-count "-1" --virtualbox-disk-size "8000" --virtualbox-memory "512" --virtualbox-boot2docker-url=https://github.com/boot2docker/boot2docker/releases/download/v1.10.3/boot2docker.iso

我们指定的URL指向的是Rancher能够运行的Docker v1.10.3版本。

Docker Toolbox是在本地运行Docker的理想选择,但运行它确实有一些挑战性。原因之一是它使用了DHCP协议,如果你不想托管静态服务的话,这将是一个不错的选择。但是,要绕开这个ssh协议连接到Rancher虚拟机的话,加上下面的这一行代码到/var/lib/boot2docker/profile:

sudo cat /var/run/udhcpc.eth1.pid | xargs sudo killsudo ifconfig eth1  netmask  broadcast  up

此时,您将在docker-machine中出现一个关于IP地址不匹配的错误。您可以在主机操作系统上运行以下命令来解决这个问题:

docker-machine regenerate-certs rancher -f

这将给我们的Rancher服务器分配一个静态IP地址。 然后,您可以运行:

docker run -d --restart=always -p 8080:8080 rancher/server

几分钟后,将有一个Rancher服务器在您指定的IP地址的8080端口上运行。保持Rancher服务器的IP地址不变很重要,因为这是我们部署的任何主机代理都需要访问的地方。

登录到Rancher服务器之后,转到“添加主机(add host)”并生成自定义代理命令。复制这个命令并保留它,因为我们将使用这个命令来添加主机。

现在让我们创建第二个虚拟机。使用与上述相同的命令,您可以自行调整虚拟机的名称、内存和磁盘空间,以满足您的开发需求。

等待虚拟机再一次启动后,您可以进入并为其分配一个静态IP地址。

现在,我们遇到了boot2docker虚拟机的另一个限制:其数据持久性的限制。

如果我们向主机添加一个Rancher代理,它会创建一个/var/lib/rancher文件夹并在其中存储一些信息。如果重新启动虚拟机,这些信息将被销毁。因此,当代理再次出现时,主机会认为它是一个新的服务器,之前的服务器信息在那时就全部丢失了。

幸运的是,面对这样的窘境有一个解决方法。在运行Rancher代理脚本日志到主机上之前,运行以下命令:

sudo mkdir /mnt/sda1/var/lib/rancher

这将创建一个文件夹,这个文件夹在重新启动时能被保留下来。现在,在每次启动时,我需要将此文件夹映射到/var/lib/rancher。因此,我们需要再次编辑/var/lib/boot2docker/profile并添加以下内容:

sudo mkdir /var/lib/ranchersudo mount -r /mnt/sda1/var/lib/rancher /var/lib/rancher

这将确保我们的代理状态在重新启动之间能被保留。

通过ssh协议连接到机器,并运行您从Rancher服务器获得的自定义代理字符串。

现在您已经有了一个Rancher服务器,它的主机完全在本地运行,它的应用程序栈准备完毕等待您的部署。

在此,是否将它提高到一个新的水平取决于您自己。但现在,您有了一个可运转的Rancher / Docker环境。您能够从外部存储库拉取数据,编写脚本在本地构建应用程序或者运行目录中的条目。

虽然这种开发方式并不完美,但对于大多数情况来说是“足够好”的了,并且这样的开发方式值得分析参考,并以此作为继续改进开发的方法。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27973.html

相关文章

  • 如何利用Rancher构建Piel.io的微服务交付

    摘要:作者将通过三篇跟大家分享一下他们是如何通过来构建的微服务交付的。第一篇,我将介绍下如何搭建自己的。第二篇,我将介绍下如何构建配置以及整合自己的。同时启用了通过进行认证的访问控制。 本文来自网站Piel.io的建设者,几个月前,他们开始尝试在Piel.io上使用Rancher来构建第一个微服务。作者将通过三篇blog跟大家分享一下他们是如何通过Rancher来构建Piel.io的微服务交...

    zebrayoung 评论0 收藏0
  • 使用Rancher和DroneCI建立超高速Docker CI/CD流水线

    摘要:本文作者为的架构师,他分享了使用和建立超高速流水线的经验。月日,北京海航万豪酒店,容器技术大会即将举行。 Higher Education(highereducation.com)是一个连接学生与高校的入学申请平台,通过引入高意图和高质量的潜在学生,以及明确、有效的操作,为网站合作的大学吸引学生入学。每年Higher Education为其大学合作伙伴招收超过15000名在线学生入学申...

    dreamtecher 评论0 收藏0
  • 使用Convoy-NFS构建共享卷

    摘要:警告因为是的一个较新的服务,它只能在有限的几个位置上使用。现在你可以开始从视图中手动创建一个卷,或干脆创建一个使用和卷名的服务。我非常期待看到和中的共享卷会有什么下一步的发展。 如果你用过Docker你就会知道,共享卷和跨主机的数据访问是个非常棘手的问题。虽然Docker的生态系统在逐渐走向成熟,但对大多数人来说,在不同环境中实现持久化存储还是很麻烦的。幸运的是,Rancher一直在研...

    alin 评论0 收藏0
  • container-as-a-service-0x01 -- 基于Docker的私有云&混合

    摘要:基于的私有云混合云构建方案苏依蜀黍是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的可移植的自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括虚拟机集群和其他的基础应用平台。 container-as-a-service-0x01 -- 基于Docker的私有云&混合云构建方案 By 苏依蜀黍 . 2016.06.07 what Docker是一...

    import. 评论0 收藏0

发表评论

0条评论

dmlllll

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<