Goi*_*oin 5 rest mutex chef-infra
例如,如果进程在厨师客户端运行时更新节点,那么厨师客户端将覆盖节点数据:
如果我们有两个进程同时保存节点数据,也会出现同样的问题
编辑
我们需要进行外部修改,因为我们有一个漂亮的 Chef 服务器 UI 来远程管理大量计算机,显示为树状(类似于 LDAP)。管理员可以从此处更新配方的值。该项目是开源的: https: //github.com/gecos-team/
尽管我们有一个信号量系统,但我们发现如果我们有两个或多个同时请求,我们可能会遇到并发问题:
编辑2
Chef 没有实现事务功能,并且默认情况下它不会在更新时自动重新聚合节点。它对竞争条件开放,您可以尝试通过厨师客户端运行中更新的节点属性来减少竞争条件(就在您执行关键操作之前),但您永远不会得到可靠的工作设置。
\n\n收敛运行的时间越长,腐败的差距和风险就越大。
\n\nChef 的节点属性仅对在节点本身上运行的 Chef 客户端进行调试或修改有用,在高度并发/动态环境中几乎没有用处。
\n\n我将使用Consul.io实时协调信号量和键/值配置数据。使用厨师食谱或 LWRP 使用 consul 提供的各种接口之一(http、DNS、\xc2\xa0\xe2\x80\xa6)访问它。
\n\n您可以实现一个非常简单的推送作业任务来运行厨师客户端(恕我直言,比厨师“推送作业”功能更容易、更强大,但未集成到厨师的 ACL/用户管理中),该任务也由分布式信号量保护或使用“领导者选举”功能。当然,您也必须将此逻辑添加到节点更新脚本中。
\n\n然后,Chef-client 将检索启动时的锁,并阻止您在数据收敛时操作数据,反之亦然。
\n| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |