简介
我在一家公司工作,我们运行多个批处理作业处理数据数百万条记录的每一天,我一直在思考所有的机器,围坐每一天做什么最近几个小时。 那岂不是一件好事,如果我们可以利用这些机器,以增强我们的系统处理能力? 在这组文章,我要看看用人办公室的潜在好处格使用虚拟化环境。
在第4部分 ,我们看着使用工具,以确保我们正在运行的代码和数据源的最新版本,这样得到的结果总是与最新的商业信息和逻辑最新的更新。
Pre-Deployment
Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. 所以,
- 有多少纪录可以在处理目前? 每一天? 每小时?
- How long does it typically take to turn around a job?
- 多少容量更大,你呢?
There's also additional questions:
- 如果您的服务器进行处理(或你的处理一台服务器)出现故障这将如何影响你的能力,你会被削弱?
- 你希望有什么优势/希望得到来自电网系统?
- 你们的办公室机器运行的工作能力吗?
- 是您的(或你的工作被转换)工作在这种运行方式?
最后一个主要的一点是要采取任何像这样重大的改变你的时间。 更新您的处理代码以使用新的方法,基准试。 可能设置了处理服务器运行虚拟机后,服务器将所有的处理只是另一名工人(只是一个非常强大的一个相对)。 允许新的进程来解决。
部署
我的建议是一个周末走进办公室弹出执行所有的安装和设置。 Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…
对于这样的系统部署的需求是缓慢的。 尽管它是相对简单的设置这个系统将影响整个办公室的基础设施(以及数字之一)。 首先,推出了一次夫妇的机器,监控网络流量,如何在主机上执行工人每天的日常基础。 您可能需要改变你的发现在回应你的工作配置。
一旦系统有(比方说10%的办公设备,即5)随时监控网络流量和主机performance.Â下再次基准几台机器解决,您现在应该处理比你的第一个基准33%以上的就业机会。 检查是这样的话,或者说,你至少是在这个球场。 如果不是,调查是怎么回事之前就移动。 Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.
在任何时候保持基准,即使在所有部署进行的。 如何检查新代码更新会影响你的系统速度,检查所有工人都在报告和处理工作。 慢慢(很慢)增加你的工作配置,以获得你的员工和网络是最好的。
住手!
如果你想阻止在运行一段时间后你的员工? 他们都在那里运行,再生,并尽力处理像饥饿的昆虫数据。 答案似乎是显而易见的,但它的价值增加,以防万一其忽视。 简单的编辑与出口(0)您的处理脚本或死亡()或其他一些语句来杀死你的处理工作。 An important reason why we always try to update to the latest processing script before any run!
演示系统
为了写这篇文章的短集我创建了一个很小的以展示的技术和方法。 I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. 并不意味着我有没有出去和饱和的交通整个办公室和我也没有接触到普通工作人员的电脑,看看主机性能受到影响。
我的演示系统确实很谦虚。 我用我的桌面设置为作业控制服务器上。 在此我已经安装MySQL的服务器上安装一套作为主在复制, PHP ,A和SVN连接通过阿帕奇 (通过工人的VM访问)。
然后我创建在VirtualBox上一个6岁的Windows XP的笔记本电脑一台CentOS工人的机器。 我设置为后复制到本机的虚拟机指定的计划任务,让它去。
虚拟机成立,PHP,颠覆和MySQL。 我检查了我的工作从命名控制服务器库“工人”的一个分支,并确保它可以更新使用“SVN更新”。 接下来,我安装MySQL作为一个奴隶,并检查这些数据被复制的作业控制服务器从MySQL下至工人VM。 毕竟这是我设置的bash脚本和cron作业。
我去处理脚本基本上沿着此线(很简单的东西):
- 阅读在名称字段
- 算表中的类似名称从虚拟机中的数据源数量
- 算作以上,但分裂名称空间(即用的名字,中,姓)的名称数量
- 重复这个过程1000次
每个作业大约需要20分钟运行。 有一次,我打开窗户上的笔记本电脑的工人VM若干份,并观看了工作检查由工人IP地址,每个关闭。 在这一点上我也证实了自动重新启动的复制。
离开笔记本电脑闲置在开始处理来自服务器作业工人作业控制的结果。 当恢复笔记本电脑的使用有一个约30-60秒的延迟,这是一个时间和相当数量的工作人员将需要作出意识到,他们的机器可能会很短,而暂停时,返回到本机。 较新的机器可能没有这个长时间的停顿。 而对这些设备进行处理空闲期间将更多的受益金额超过工作人员的成员不必等待一个上午就在他们的机器到达一个短时期(比如1分钟)(我经常等待更长的时间,这为Windows Defender的更新发生)提供的,他们意识到这一点了(有用的时间抢了一上午的咖啡!)
总的来说,我觉得有信心,我已经展示了可用于创建这样一个系统的技术。 我已经表明,这种制度不上一个(非常)小规模,多一些尝试可以扩大利用办公室的机器上的资源的工作。 如果我不拿地做这点我非常有兴趣知道/时看到别人做。
Conclusions / Evaluation
下一个明显的步骤将是真正得到一个真实的例子,并开始部署在办公室环境中像这样的系统,看看会发生什么。 要求企业实施无踪迹炽烈的公司,这证明了技术和效益可能会有点困难。 网格/分布式计算是非常流行的是一些圈子,并有一些(BIONC,SETI @ HOME,折叠@家等),大型应用程序。 I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.
我创建了一个基本上是免费的系统使用几乎任何职位大多是开放源码软件和工具。 这些技术基本上表现,并显示执行和正常工作。 希望我表明,没有太多的工作,一个非常简单的设置你可以部署一个办公室网格计算系统,该系统功能强大,价格便宜,A和所有在同一时间可扩展性。
Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. 例如统计/基准可以很容易地添加显示了这种制度值得每一天。 新机器可以快速,容易地加入,当他们与现有的硬件处理能力的升级作为支撑你的到来。
我希望您喜欢阅读这一系列文章和给你上运行的办公网系统深思。 这里提出的解决方案并不一定适用于所有情况,但应该适应,让您让您的数据处理通过使用自己的解决方案。
请随时给我任何意见,更正,或改进,我会尽我所能,保持更新以匹配这篇文章。