我通过puppet master在代理计算机中启动服务器。这是我使用的exec
命令(注意:这是使用收集器调用的)
Change_config::Fill_template<| |> -> Exec<| title == "strating" |>
exec { "strating":
user => 'root',
environment => "JAVA_HOME=/home/ubuntu/tools/jdk1.6.0_45",
path => $command_path,
command => "sh ${agentLocation}/${product_pack}/bin/wso2server.sh ${serverOptions}",
logoutput => true,
timeout => 3600,
}
然后我登录代理机器并打开我启动的服务器日志。服务器日志表示服务器已启动并正在运行
[2014-08-22 13:05:47,717] INFO {org.wso2.carbon.core.transports.http.HttpsTransportListener} - HTTPS port : 9443
[2014-08-22 13:05:47,718] INFO {org.wso2.carbon.core.transports.http.HttpTransportListener} - HTTP port : 9763
[2014-08-22 13:05:49,468] INFO {org.wso2.carbon.core.init.JMXServerManager} - JMX Service URL : service:jmx:rmi://localhost:11111/jndi/rmi://localhost:9999/jmxrmi
[2014-08-22 13:05:49,469] INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} - Server : WSO2 Message Broker-2.2.0
[2014-08-22 13:05:49,469] INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} - WSO2 Carbon started in 23 sec
[2014-08-22 13:05:49,714] INFO {org.wso2.carbon.ui.internal.CarbonUIServiceComponent} - Mgt Console URL : https://10.0.2.82:9443/carbon/
但是当我使用netstat -ntlp
检查端口时,它没有显示端口。 (正常用户和root用户)。除日志外没有服务器的迹象。
最后,我在我的代理中再次手动启动服务器然后我可以观察到端口(通常这应该给出一个例外,因为我试图使用现有的端口,如果puppet已成功启动服务器。但它没有给出任何例外)
这是奇怪的情况。我无法理解为什么我看不到通过木偶启动的服务器证据。你能告诉我这种行为的线索吗?
注意:当我在代理节点内手动运行'puppet agent --test'时,它启动服务器,我可以看到端口绑定。我怀疑问题是当代理在启动守护程序中获取目录时。
答案 0 :(得分:0)
在Exec
的超时到期时,代理很可能会终止服务器。它可能足够强大,以至于服务器不会记录关闭。之后您可以再次手动启动服务器,因为此时它已不再运行。
您应该通过Service
资源管理服务。为此,最好为您的环境创建适当的服务控制脚本,但Service
资源类型足够灵活,可以处理 ad hoc 服务的工作,例如您当前的服务。这样的事情可能会这样做:
service { 'wso2service':
ensure => 'running',
hasstatus => false,
hasrestart => false,
start => "/bin/sh ${agentLocation}/${product_pack}/bin/wso2server.sh ${serverOptions}",
stop => "/usr/bin/killall wso2server.sh",
pattern => 'wso2server\.sh'
}
但实际上,创建一个适当的initscript,或者系统使用的任何initscript模拟。然后你可以将其简化为
service { 'wso2service':
ensure => 'running',
}