何时某些记录进入索引或者如何根据搜索并行化主厨部署?

时间:2014-04-02 21:13:39

标签: chef chef-recipe

我有一些烹饪书依赖于厨师的search(:node, "query")电话。我的问题专门处理事物被添加到索引的顺序以及这是否是可修改的行为。

这是我依赖的查询的通用版本。希望这能让您更深入地了解我的问题。

查询

some_global_property:cluster01 AND recipes:MyCookBook\:\:SpecificRecipe AND some_sub_property:uniqueString AND chef_environment:DEV

背景

我正在使用knife ec2在VPC中旋转多个(三个,用于测试目的)实例。 我发现上面的查询将返回 no 结果,直到一个节点成功完成其运行列表中的所有内容之后。一个节点完成后(加上几秒钟),搜索查询将返回该节点。一旦另一个节点完成,两个结果记录将返回......等等。

我的问题是我真的希望所有三个节点并行出现。在适当的时候,search()查询应返回所有三个记录,以便三个节点中的每个节点可以并行继续其设置。基本上,我正在使用search()调用来使所有属于选择组的节点在配置期间彼此了解。配置完成后,它们将立即相互通信。不幸的是,当节点并行旋转时,它们都会同时到达配置生成阶段。 search()查询不返回任何实例,并且所有三个都被配置为好像它们是单例;不作为集群的一部分。当沟通阶段发生时,他们都抱怨他们没有同伴!

我的问题

节点何时向索引器报告节点已运行的烹饪书/食谱?我(有限)测试表明,只有在chef-client成功完成后才会发生这种情况。如果这实际上是行为,可以修改吗?在chef-solr成功终止之前,如何让并行启动的n个节点将某些信息传递给chef-client?顺序部署是我唯一的选择吗?

1 个答案:

答案 0 :(得分:0)

埋在Chef Client内是我问题的答案。

  

当资源集合中的资源标识的所有操作都已完成,并且当chef-client运行成功完成时,chef-client使用节点对象更新Chef服务器上的节点对象在此厨师 - 客户端运行期间构建。(此节点对象将在下一次厨师 - 客户端运行期间由厨师 - 客户端下拉。)这使得节点对象(以及节点对象中的数据)可用于搜索范围。

我的问题的答案是服务器(以及solr索引)将仅在成功运行结束时在更新。