【问题标题】:Consul Windows Service no longer starts with error "Incorrect function"Consul Windows 服务不再以错误“不正确的功能”启动
【发布时间】:2018-04-19 02:39:49
【问题描述】:

所以有一次我在 Windows 7 上运行了 consul。这是几个月前的事了。最近我开始回顾 consul,所以我使用 here on the Chocolatey website 找到的 Chocolatey 包安装它。

首先,包在尝试启动服务时总是会抛出错误。错误:

c o n s u l :   U n e x p e c t e d   s t a t u s   S E R V I C E _ S T O P P E D   i n   r e s p o n s e   t o   S T A R T   c o n t r o l .

这并没有让 Chocolatey 认为软件包安装失败。之后,我尝试使用 nssm 转储该服务,结果如下:

C:\ProgramData\chocolatey PS>nssm dump consul
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe install consul C:\ProgramData\chocolatey\lib\consul\tools\consul.exe
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul AppParameters "agent -ui -config-dir=C:\ProgramData\consul\config -data-dir=C:\ProgramData\consul\data -bind '127.0.0.1' -bootstrap -server"
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul AppDirectory C:\ProgramData\chocolatey\lib\consul\tools
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul AppExit Default Exit
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul AppEnvironmentExtra :GOMAXPROCS=2
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul AppStdout C:\ProgramData\consul\logs\consul-output.log
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul AppStderr C:\ProgramData\consul\logs\consul-error.log
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul AppRotateFiles 1
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul AppRotateOnline 1
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul AppRotateBytes 10485760
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul DisplayName consul
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul ObjectName "NT Authority\NetworkService"
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul Start SERVICE_AUTO_START
C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe set consul Type SERVICE_WIN32_OWN_PROCESS

如果我把上面的 AppParameters 粘贴到 consul 之后,它就可以完美地工作了。所以,我不知道为什么我无法启动该服务。

C:\ProgramData\chocolatey PS>start-service consul
start-service : Service 'consul (consul)' cannot be started due to the following error: Cannot start service consul on computer '.'.
At line:1 char:1
+ start-service consul
+ ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service], ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand

当我查看事件查看器时,它会告诉我以下错误消息:

The consul service terminated with the following service-specific error: 
Incorrect function.

最近有没有人让 consul Chocolatey 包在 Windows 上工作?有没有可能这是一个 Windows 错误,或者一个 NSSM 错误,甚至是一个领事错误? 我尝试了不同版本的 NSSM 和不同版本的 consul,结果相同。我将不胜感激任何帮助我在 Windows 上运行 consul 的帮助。

【问题讨论】:

    标签: windows service windows-services consul nssm


    【解决方案1】:

    以防万一其他人遇到此问题,我需要解决几个问题才能启动服务。

    首先,我有多个私有 IP 地址,当我使用 Chocolatey 安装软件包时,我需要使用 --params 选项和 choco install 命令或通过 consul 配置文件指定 IP 地址.我在上面做了这个,但一开始我浪费了很多时间。另外,在指定要绑定的 IP 地址时,还需要指明需要 consul 以服务器模式运行。因此,在某些情况下,仅下载软件包并尝试运行 consul 是行不通的。此外,= 符号在使用 consul 指定参数时非常重要。有时您可以只添加一个空格而不使用引号,但我建议您始终使用= 指定参数。我用来让它在本地 Windows 7 机器上运行的最后一个命令是:

    cinst consul --yes --force --params='"-server -bootstrap -bind=""127.0.0.1"" "'

    在故障排除过程中我遗漏了几件事。

    1. 如果您已经安装了 consul,请确保服务已停止并确保在尝试使用 Chocolatey 重新安装 consul 之前没有运行任何 consul 进程。为了确保这一点,请在 PowerShell 中运行:

    Stop-Service consul; Get-Process consul -ErrorAction SilentlyIgnore | Stop-Process -Force

    1. 如果服务无法启动,请查看 Chocolatey 包放置日志文件的位置。对我来说,它位于 C:\ProgramData\consul\logs\consul-error.log 下。

    2. 我没有先了解NSSM。它确实是一个很棒的工具,可以让您轻松调试服务无法启动的原因。如果您想调整 consul 的启动参数,只需在控制台中运行:

    nssm edit consul

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 2013-08-18
      • 1970-01-01
      相关资源
      最近更新 更多