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

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


wKiom1jImCXRzkSFAADGflpb3KM457.png


今天,我将提供一个过程摘要来阐明如何使用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/products/docker-toolbox。


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


wKiom1jImHqThIUCAACe8aCeZjI603.png


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


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

1
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:

1
sudo cat /var/run/udhcpc.eth1.pid | xargs sudo killsudo ifconfig eth1 <ip address to assign> netmask <subnet mask> broadcast <broadcast address> up

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

1
docker-machine regenerate-certs rancher -f

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

1
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代理脚本日志到主机上之前,运行以下命令:

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

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

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

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


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


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


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


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



本文转自 RancherLabs 51CTO博客,原文链接:http://blog.51cto.com/12462495/1906612

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1、RN跨平台开发——环境搭建

了解React NativeReact Native使你能够在Javascript和React的基础上获得完全一致的开发体验&#xff0c;构建世界一流的原生APP。React Native着力于提高多平台开发的开发效率 —— 仅需学习一次&#xff0c;编写任何平台。(Learn once, write anywhere)。Facebook已经在多项产…

【ArcGIS遇上Python】ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换

由于论文的需要,将MODIS NDVI数据进行投影变换和格式转换,具体操作可以参照:《ArcGIS10.8完美实现MODIS NDVI数据格式转换和投影变换》,但是该文章中的做法只能一次性实现一景影像的转换,没法批量,虽然ArcGIS中提供了Batch的方法但是需要挨个添加数据,确定输出路径等等,…

引入 DTM 以支持 ABP 的多租户多数据库场景

这篇文章分享了使用 DTM 二阶段消息模式解决 issue #10036 的方法。今天我们要使用 EasyAbp 的 Abp.EventBus.Boxes.Dtm 模块。DTM 事件箱的介绍这个模块使用了 DTM 的 二阶段消息 使得 ABP 的事件箱得以支持 多租户多数据库场景。你需要先阅读 DTM 文档&#xff0c;它将帮助你…

【前端就业课 第一阶段】HTML5 零基础到实战(六)表格详解

注意&#xff1a;手机&#xff08;APP&#xff09;打开&#xff0c;内容显示更佳&#xff0c;不会的私聊博主即可 想要拿代码或加入学习计划&#xff08;** 博主会监督你并且教你写文章 **&#xff09;的拉到最下面&#xff08;PC端Web打开&#xff09;加博主即可&#xff0c;目…

Android实战:手把手实现“捧腹网”APP(一)-----捧腹网网页分析、数据获取

“捧腹网”页面结构分析捧腹网M站地址: http://m.pengfu.com/捧腹网M站部分截图&#xff1a; 从截图中&#xff08;可以直接去网站看下&#xff09;&#xff0c;我们可以看出&#xff0c;该网站相对简单&#xff0c;一共分为四个模块&#xff1a;最新笑话、捧腹段子、趣图、神…

专题2-通过按键玩中断\第1课-中断处理流程深度剖析-lesson1

中断概念 1、中断生命周期 串口先产生一个事件&#xff0c;该事件传送到中断控制器里面&#xff0c;中断控制器会进行相应过滤&#xff0c;能通过过滤&#xff0c;那么就交给CPU去处理。 2、中断源 2440芯片手册 6410芯片手册 3、中断过滤 4、中断处理 cpu处理方式有两种&#…

mysql语法学习(一)__Instances__表

2019独角兽企业重金招聘Python工程师标准>>> ---建表 CREATE TABLE temp( id INT ); ----查询表 SELECT * FROM temp_t; ---删表 DROP TABLE temp; ---修改表名 ALTER TABLE temp_tt RENAME temp; ALTER TABLE temp RENAME TO temp_t; ALTER TABLE temp RENAME AS t…

【ArcGIS遇上Python】python批量获取栅格数据四至(top,bottom,left,right)坐标代码

上图所示为ArcGIS自带的影像数据,存放路径为C:\Program Files (x86)\ArcGIS\Desktop10.6\ArcGlobeData\wsiearth.tif",在源中可以查看该数据的四至坐标,那么,怎样用python批量获取多个栅格数据的四至坐标呢? 参考阅读:【ArcGIS风暴】ArcGIS求一个矢量图层中多个图斑…

使用 C# 读取 zip 压缩包解压文件的方法及注意事项

从 .NET Framework 4.5 版本开始&#xff0c;微软为 .NET 类库增加了一个名为 ZipFile 的类型。该类型在 System.IO.Compression 命名空间下&#xff0c;提供创建、解压缩和打开 zip 存档的静态方法。若要在 .NET Framework 应用中使用 ZipFile 类&#xff0c;必须添加对程序集…

CenterOS x64安装serv-U

1、下载serv-Usu - root cd / cd /src wget http://www.rhinosoft.com.cn/download/14.0.1.0/SU-MFTS-Linux-64bit.zip # 64bit下载地址wget http://www.rhinosoft.com.cn/download/14.0.1.0/SU-MFTS-Linux-32bit.zip # 32bit下载地址2、解压serv-U安装包unzip SU-MF…

Android实战:手把手实现“捧腹网”APP(二)-----捧腹APP原型设计、实现框架选取

APP原型设计在APP的开发过程中&#xff0c;原型设计是必不可少的。用户界面原型必须在先启阶段的初期或在精化阶段一开始建立。整个系统&#xff08;包括它的“实际”用户界面&#xff09;的分析、设计和实施必须在原型建立后进行。 如何设计“捧腹网”APP呢&#xff1f;我们先…

【前端就业课 第一阶段】HTML5 零基础到实战(七)文字及图片详解

注意&#xff1a;手机&#xff08;APP&#xff09;打开&#xff0c;内容显示更佳&#xff0c;不会的私聊博主即可 想要拿代码或加入学习计划&#xff08;** 博主会监督你并且教你写文章 **&#xff09;的拉到最下面&#xff08;PC端Web打开&#xff09;加博主即可&#xff0c;目…

自定义桌面右键菜单

一 编写自定义右键菜单要执行的程序 只要是在 Windows 平台上的可执行应用程序即可。 二 修改注册表添加自定义右键菜单 添加位置如下&#xff1a; HKEY_CLASSES_ROOT\Directory\Background\shell 如下图&#xff1a;转载于:https://www.cnblogs.com/jRoger/articles/5799664.h…

【ArcGIS遇上Python】ArcGIS python计算长时间序列多个栅格数据的平均值

通常&#xff0c;我们需要将多个栅格求平均&#xff0c;例如&#xff0c;将一年中每个月的NDVI值加起来除以12&#xff0c;就会等到月均NDVI&#xff0c;该过程虽然在栅格计算器中可以实现&#xff0c;但是当时间序列较长时就比较费事&#xff0c;此时&#xff0c;python代码是…

统信 Deepin为什么要摆脱Ubuntu和Debian?

文 | 大东出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;Deepin 出走 Debian 。近日&#xff0c;统信软件宣布旗下 Linux 社区发行版 Deepin 将脱离上游 Debian&#xff0c;从 Linux Kernel 开始构建的新闻在社区引发了热议。其实早在 7 年前&#xff0…

解决笔记本重装问题(VISTA系统改为XP系统)

今天一位同事要我帮她的上网本重装一下系统&#xff0c;经查看发现只是开机后一个出错问题&#xff0c;是安装酷狗软件引起的&#xff0c;用360软件管家彻底删除就行了。这时&#xff0c;老大拿了一台笔记本过来让我帮忙装XP操作系统&#xff0c;嘿~这下我的桌子摆满了电脑&…

Android实战:手把手实现“捧腹网”APP(三)-----UI实现,逻辑实现

APP页面实现根据原型图&#xff0c;我们可以看出&#xff0c;UI分为两部分&#xff0c;底部Tab导航上方列表显示。 所以此处&#xff0c;我们通过 FragmentTabHostFragment&#xff0c;来实现底部的导航页面&#xff0c;通过RecyclerView来实现列表页面。 因为篇幅原因&#xf…

【前端就业课 第一阶段】HTML5 零基础到实战(八)表单详解

注意&#xff1a;手机&#xff08;APP&#xff09;打开&#xff0c;内容显示更佳&#xff0c;不会的私聊博主即可 想要拿代码或加入学习计划&#xff08;** 博主会监督你并且教你写文章 **&#xff09;的拉到最下面&#xff08;PC端Web打开&#xff09;加博主即可&#xff0c;目…

【ArcGIS遇上Python】ArcGIS10.6 python批量将栅格中的特定值替换Setnull为NoData

案例一: 如下图所示为兰州市dem,将图一中高程大于1600m的像元值设置为无效(Setnull)之后的效果如图二所示。 实现过程: 栅格计算器参考文章:《【ArcGIS风暴】ArcGIS 10.2栅格计算器实用公式大全(经典珍藏版)》,该文章中主要以ArcGIS102.为平台讲解栅格计算器的…

开源力量:微软竟开源 PowerShell

导读曾经有段时间&#xff0c;微软称 Linux 是“癌症”&#xff0c;但是随着时光流逝&#xff0c;现在微软已经认识到了开源世界的不断增长&#xff0c;除了在这个领域加大投入之外别无选择。微软已经启动了几个开源项目&#xff0c;希望能吸引一些 Linux 用户&#xff0c;其中…