Articles of 部署

组策略:分配和发布软件包

如果您将GPO链接到一个旨在推送Excel的OU,并且该OU中的一半计算机已经安装了该软件,那么GPO是否足够聪明,能够注意到,还是会强制安装OU中的电脑不pipe?

如何dynamic创build新实例时在EC2上部署网页?

我们有一个网站需要每隔一段时间更新页面。 该站点有大约8个EC2实例在任何时候运行,但偶尔会变得更大。 我们使用负载均衡器和自动调节来创build更多的实例。 这些页面只是磁盘上的普通文件; 没有内容pipe理系统。 Web服务器是Jetty。 如果我修改一个页面,我怎样才能将它部署到所有当前和未来的实例? 很明显,我不能使用像Fabric这样的pipe理工具,因为它不会更新未来实例的AMI。 创build一个新的AMI并部署它也是一个错误,因为首先,这是一个麻烦的过程,其次,它会closures现有的实例上的所有当前用户会话。 我在想,这些实例需要从某个地方抽取网站的页面,并且每隔一段时间检查一次更新。 我想把页面放在S3上,但是这是一个不起步的原因,因为1)当页面被改变时,S3没有办法通知实例,2)所以你必须连续轮询S3,3)这是昂贵的,4)你必须为每个页面单独做。 什么是最简单的方法来做到这一点? 最好的方法是什么,如果最好!=简单?

在硬件LB之后的零停机部署(Tomcat),Nginx或HAProxy – 如何“饿死”旧的服务器?

目前我们有以下设置。 硬件负载平衡器(LB) Box 8080(TA)上运行的Tomcat 运行Tomcat的Box 8080(TB) TA和TB在LB后面运行。 现在,使用Box A或Box B从LB中进行零宕机部署是相当复杂和手动的工作。 我正在想做这样的事情: 硬件负载平衡器(LB) Box A在8080(NA)上运行Nginx Box 8081上运行的Tomcat(TA1) Box 8082上运行的Tomcat(TA2) 在B80上运行Nginx的Box B(NB) 在8081上运行Tomcat的Box B(TB1) 在8082上运行Tomcat的Box B(TB2) 基本上LB现在将指挥NA和NB之间的stream量。 在每一个Nginx的我们将有TA1,TA2和TB1,TB2configuration为上游服务器。 一旦上游的健康检查页面中的一个没有响应(closures),stream量将转到另一个(Nginx上的HttpHealthcheckModule模块)。 所以部署过程很简单。 说,TA1是活跃的0.1版本的应用程序。 TA1上的健康检查是可以的。 我们开始TA2与Healthcheck作为错误。 所以Nginx不是在跟它说话。 我们将应用程序版本0.2部署到TA2。 确保它的工作。 现在,我们将TA2上的Healthcheck切换到OK,将Healthcheck切换到TA1以ERROR。 Nginx将开始为TA2服务,并且将移除TA1。 完成! 现在和另一个盒子一样。 虽然听起来很酷,但是我们怎么“饿死”Nginx呢? 假设我们有待处理的连接,TA1上的一些用户。 如果我们closures它,会话将会中断(我们有基于cookie的会话)。 不好。 任何使用Nginx来阻塞上游服务器的stream量? 谢谢!

使用Puppet来pipe理shell命令

例如,让我们试着让Puppet 安装opengeo套件 。 做类似的事情 wget -qO- http://apt.opengeo.org/gpg.key | apt-key add – echo "deb http://apt.opengeo.org/suite/v3/ubuntu lucid main" >> /etc/apt/sources.list 我们可以用 exec {'getKey': command => "wget -qO- http://apt.opengeo.org/gpg.key | apt-key add -", } exec {'addRepo': command => "echo "deb http://apt.opengeo.org/suite/v3/ubuntu lucid main" >> /etc/apt/sources.list", } 问题1:如果我们再次运行木偶脚本,wget和echo是否会运行两次? 我们将在/etc/apt/sources.d结尾重复回购。 运行package { "opengeo-suite": }两次不会试图安装这个包两次,它只是确保它的安装。 问题2:做apt-get install opengeo-suite有几个用户input的promopts。 木偶会不知何故知道使用的默认input,还是会崩溃?

如何为不同的PC创build桌面克隆

我想创build一个金色的Windows 7图像为个人电脑有不同的显卡,网卡等,最简单的办法做到这一点,使操作系统将检测和安装正确的。 最好是使用WDS,我从来没有使用任何东西,除了旧的成像工具,即从USB等克隆

为什么Linux软件包pipe理如此复杂?

在Windows上,通常可以通过将zip文件解压缩到任意目录来安装简单的程序。 恕我直言,这是保持简单的一个很好的例子。 例如,它允许安装简单的程序,而无需root权限。 为什么如此less的Linux二进制文件打包成独立的.zip文件,tarball等等? 为什么在Linux上做标准的方法来使用一个奇特的包pipe理器来pipe理简单的程序呢?

瘦客户端环境 – 从哪里开始

我是新来的瘦客户机/ VDI概念,但似乎我的环境可能是一个很好的候选人转换。 目前我们运行Windows 7,所以我想调查一个TS / VDI解决scheme,对我们典型的业务应用程序和基础设施进行最小的改动。 我不是在寻找特定的硬件或软件build议。 我只是新的想法,并试图了解更多。 我正在寻找开始的地方,指出基本技术和地方来了解更多关于它们的限制和从这些部署中受益。 作为参考,我的环境目前只有60多个桌面用户。

如何安全地更新一个服务器脚本,可以随时由cron启动

我有一个服务器脚本,每10分钟由cron启动,并执行一些数据库操作,因此可以运行几分钟。 所以,正如你所看到的,重叠更新过程和脚本工作的可能性是相当高的,而我承受不起,因为它可能导致数据库损坏等。 我的第一个想法是制作某种locking机制,但是我想象的任何东西都变得相当模糊:例如,我想要一个用于运行具有某种locking脚本的PID文件,但却导致了许多恶魔细节,比如正确locking,避免脚本退出时由于错误而离开.pid文件(防止下次运行)等等。 我的问题是:有一个简单的方法来做到这一点或一些图书馆/工具,解决这种问题? 谢谢!

数据库规模考虑

我已经完成了一个应用程序,并且一直在为它的部署研究托pipe环境。 应用程序在查询上相当沉重,我的应用程序的大多数页面都有几个连接的查询以及大多数表上的触发器。 只要数据库有足够的内存的缓冲池,我猜测性能应该没问题,所以如果我用像Linode的VPS主机,我可以不断升级我的服务器,以便数据库有足够的内存。 我担心的是当我无法获得更多的内存时会发生什么,当数据库没有足够的内存时,性能会受到多大的影响? 我应该看看可用的空闲内存是否像定时炸弹? 数据库pipe理系统是否改变caching技术,以尽可能避免磁盘访问? 本质上我想知道如何聪明的数据库pipe理系统是如何处理分片或复制使用前。

从SVN运行一个Web应用程序框架是否理智?

我正在查看Django,整个系统似乎都倾向于通过SVN进行部署。 当您不从SVN中继读取文档时,文档会提示您; #django中的人声称跟随SVN机制更容易。 我的直觉是只要让Django在apt-get可用,并通过这些Ubuntu LTS接收更新。 我得到了一些同行评议,自动部署和版本依赖。 这些人是疯了吗,还是我错过了什么?