elasticsearch,chef-infra,init.d,test-kitchen,Service,elasticsearch,Chef Infra,Init.d,Test Kitchen" /> elasticsearch,chef-infra,init.d,test-kitchen,Service,elasticsearch,Chef Infra,Init.d,Test Kitchen" />

Service 运行服务elasticsearch start失败,但手动运行命令成功

Service 运行服务elasticsearch start失败,但手动运行命令成功,service,elasticsearch,chef-infra,init.d,test-kitchen,Service,elasticsearch,Chef Infra,Init.d,Test Kitchen,上下文: 我正在测试由chef设置的elasticsearch 1.7.1配置,并在厨房进行测试 chef脚本和配置工作正常,因为它在生产环境中运行 当elasticsearch用户失败时运行服务elasticsearch start,但它所委托的实际调用没有失败 据我所知,chef脚本是作为root运行的。因此,当测试失败时(通过运行service elasticsearch status,检查elasticsearch是否正在运行),我登录到vagrant机器。作为root用户,如果我运

上下文:

  • 我正在测试由chef设置的elasticsearch 1.7.1配置,并在厨房进行测试
  • chef脚本和配置工作正常,因为它在生产环境中运行
  • 当elasticsearch用户失败时运行
    服务elasticsearch start
    ,但它所委托的实际调用没有失败
据我所知,chef脚本是作为root运行的。因此,当测试失败时(通过运行
service elasticsearch status
,检查elasticsearch是否正在运行),我登录到vagrant机器。作为root用户,如果我运行
service elasticsearch start
,我会得到一个OK(这是不正确的,但又是另一个),然后运行后续的
service elasticsearch status
,我会遇到错误:
elasticsearch死了,但pid文件存在

进一步挖掘,我在由
服务运行的init.d脚本上设置了调试语句,发现实际的命令基本上是对
init.d/functions
函数
守护进程的调用,它只调用:

runuser-s/bin/bash-elasticsearch-c'ulimit-s-c0>/dev/null 2>&1/usr/share/elasticsearch/bin/elasticsearch-p/var/run/elasticsearch/elasticsearch.pid-d-Des.default.path.home=/usr/share/elasticsearch-Des.default.path.log=/var/log/elasticsearch/-Des.default.path.work=/tmp/elasticsearch-Des.default.path.conf=/etc/elasticsearch/'

因此,我尝试了一个
sudo su-elasticsearch
,然后在引号中运行该部分:

[elasticsearch@default-centos ~]$ ulimit -S -c 0 >/dev/null 2>&1 ; 
/usr/share/elasticsearch/bin/elasticsearch 
-p /var/run/elasticsearch/elasticsearch.pid -d 
-Des.default.path.home=/usr/share/elasticsearch 
-Des.default.path.logs=/var/log/elasticsearch/ 
-Des.default.path.data=/data/elasticsearch/data/ 
-Des.default.path.work=/tmp/elasticsearch 
-Des.default.path.conf=/etc/elasticsearch/

随后的
服务elasticsearch状态显示elasticsearch运行正常!我甚至将日志设置为跟踪,没有迹象表明elasticsearch已崩溃。

有来自Chef的日志吗?你确定它实际上是以root用户身份运行的吗?这个问题听起来更像是一个系统管理问题,而不是最终与厨师相关的问题……你在使用社区食谱吗?我问这个问题是因为它有一个非常古老的init脚本,它是在不久前组合起来的,我们正在将烹饪书切换到elasticsearch.org提供的deb/rpm包使用的相同init脚本。如果您愿意尝试的话,有一个
2.0.0u wip
分支已经完成了这项工作。@Tensibai我看到chef退出的方式有所不同,但似乎并不相关。Chef在其Chef-client.log中有一些关于validation.pem文件丢失和出错的信息。但这似乎不会导致类似我上面的问题?@Martin AFAIK这是Elasticsearch 1.7.1附带的init脚本如果您不使用社区食谱,那么打包的init脚本似乎有问题。在最近测试1.7.2和1.7.3时,我注意到类似的情况。可能值得向项目上游汇报。