在使用厨师成功引导节点后,我收到了这些错误[http://pastebin.com/BEgNh2mm][chef-client/server errors]。
发生的初始错误如下
(来自服务器日志的片段):
merb:chef-server(api):worker(端口4000)〜开始请求处理:2008年8月8日星期三19:04:32 +0200 2012
merb:chef-server(api):worker(端口4000)~Params:{“name”=>“devhouse”,“controller”=>“clients”,“action”=>“create”,“admin” “=>假}
merb:chef-server(api):worker(端口4000)〜Connection reset by peer - (Errno::ECONNRESET)
(来自客户端STDOUT的片段)
[2012-08-08T19:47:57 + 02:00] INFO: * Chef 10.12.0 * [2012-08-08T19:47:57 + 02:00]信息:客户端密钥/etc/chef/client.pem不存在 - 注册 [2012-08-08T19:47:58 + 02:00] INFO:HTTP请求返回409冲突:客户端已存在 [2012-08-08T19:47:58 + 02:00] INFO:HTTP请求返回403禁止访问:您不能执行此操作。 [2012-08-08T19:47:58 + 02:00]致命:Stacktrace转储到/var/chef/cache/chef-stacktrace.out [2012-08-08T19:47:58 + 02:00]致命:Net :: HTTPServerException:403“Forbidden”
从上面的错误我唯一可以推断的是客户端无法与服务器通信,但是,令人难以置信的是,客户端能够以某种方式向服务器注册导致执行{{1} }显示客户端列表中的哪个字段,但客户端更新尝试失败并显示knife client list
Chef常见错误似乎没有任何此类行为的记录。
答案 0 :(得分:10)
问题分为两部分:
通过对等方重置连接 - (Errno :: ECONNRESET)
HTTP请求返回409冲突:客户端已存在且FATAL:Net :: HTTPServerException:403“Forbidden”
第一个问题我能够缩小到没有能够与rabbitmq沟通的厨师,看起来像是在某个地方,所有关于rabbitmq的设置都被删除了。
第二个问题,在我调查过程中(我相信这可能在某处记录)很明显,在客户端生成client.pem文件之前,厨师通过rabbitmq在couchdb中存储pem信息。由于问题1导致该流程未完成,因此创建了客户端,但缺少身份验证信息。
<强>解决方案强>
答案 1 :(得分:1)
我面临同样的问题。
厨师的客户端
[2013-11-05T14:21:32+05:30] INFO: *** Chef 0.10.4 ***
[2013-11-05T14:21:34+05:30] INFO: Client key /etc/chef/client.pem is not present - registering
[2013-11-05T14:21:36+05:30] INFO: HTTP Request Returned 500 Internal Server Error: Connection refused - connect(2)
[2013-11-05T14:21:36+05:30] ERROR: Server returned error for http://"chef-server":4000/clients, retrying 1/5 in 4s
[2013-11-05T14:21:40+05:30] INFO: HTTP Request Returned 409 Conflict: Client already exists
[2013-11-05T14:21:40+05:30] INFO: HTTP Request Returned 403 Forbidden: You are not allowed to take this action.
[2013-11-05T14:21:40+05:30] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2013-11-05T14:21:40+05:30] FATAL: Net::HTTPServerException: 403 "Forbidden"
我通过在运行厨师服务器的机器上重新启动rabbitmq服务器解决了这个问题。
答案 2 :(得分:0)
听起来像chef-client正在使用该主机名注册chef-server,然后更改client.pem,当证书未通过SSL检查时将导致403。基本上,chef-server具有该证书的公共端,因此它可以对节点进行身份验证。
如果您正在运行两次厨师 - 客户端设置过程,则会导致此问题。