服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

configurationpipe理:推和基于拉的拓扑

像Puppet和Chef这样的更为成熟的configurationpipe理(CM)系统使用基于拉式的方法:客户端定期轮询中央主站以获取更新。 他们中的一些人也提供了一种无主的方法(所以基于推送),但是声明它不是“生产”(Saltstack)或“不可扩展”(Puppet)。 我知道的唯一一个系统就是从一开始就是基于推动力的是Ansible。 拉式系统的具体可扩展性优势是什么? 为什么添加更多的推拉大师比push-agent更容易? 例如, agiletesting.blogspot.nl写道: 在“拉”系统中,客户彼此独立地联系服务器,所以整个系统比“推”系统更具可扩展性 另一方面,Rackspace展示了他们可以使用基于推送的模型处理15K系统 。 infastructures.org写道: 我们发誓维护基础设施,使用像SUP,CVSup,rsync服务器,或cfengine的工具拉方法。 每台客户端机器不需要将更改推送给客户端,而是需要负责在启动时对黄金服务器进行轮询,然后定期维护自己的rev级别。 在采用这个观点之前,我们开发了基于ssh,rsh,rcp和rdist的广泛的基于推送的脚本。 我们在r命令(或者ssh)中发现的问题是:当你运行一个基于r命令的脚本把一个变化推送到你的目标机器上时,可能性是,如果你有超过30个目标主机,在任何时候都会下降。 维护委托机器的列表成为一场噩梦。 在编写代码来纠正这个问题的过程中,你将最终得到精心devise的包装代码来处理:来自死亡主机的超时; logging和重试死的主机; 分叉并行,尝试在合理的时间内击中多个主机; 最后检测并阻止源机器上所有可用的TCP套接字与所有出站rsh会话的使用情况。 然后,你仍然有问题,就是为将来要安装的所有新主机安装映像,以及为明天将要重build的任何主机重复安装映像。 在经历了基于r-command复制的麻烦之后,我们发现它不值得。 我们不打算再次使用r-命令来pipe理基础架构,或者使用任何其他推送机制来pipe理基础架构。 它们不像基于拉的方法那样成比例。 这不是一个实现问题,而不是一个build筑问题? 为什么编写一个线程化的推式客户端比一个线程化的拉式服务器更难呢?