4

我正在尝试将 redis 哨兵设置为 Azure VM (IaaS) 上的 Windows 服务。

我正在使用适用于 Windows 的 Redis 的 MS OpenTech 端口并运行以下命令...

redis-server --service-install --service-name rdsent redis.sentinel.conf --sentinel

此命令将服务安装在我的系统上,但是当我尝试通过服务控制面板或通过以下命令启动此服务时...

redis-server --service-run --service-name rdsent redis.sentinel.conf --sentinel

然后服务无法启动并出现以下错误...

HandleServiceCommands:捕捉到系统错误。错误代码 = 1063,消息 = StartServiceCtrlDispatcherA 失败:未知错误

我在这里错过了什么吗?请有人帮我启动此服务,使其正常工作。

4

4 回答 4

3

我有同样的问题,我的与我的哨兵配置有关。我发现的许多文章都有一些不正确的示例,因此在配置正确之前,我的服务安装将无法正常工作。无论如何,这是您的哨兵配置至少需要的(对于 Windows Redis 2.8.17):

    sentinel monitor <name of redis cache>  <server IP> <port> 2
    sentinel down-after-milliseconds <name of redis cache> 4000
    sentinel failover-timeout <name of redis cache> 180000
    sentinel parallel-syncs <name of redis cache> 1

完成该设置后,上面的原始 Redis 服务命令将起作用。

于 2015-03-04T23:05:50.170 回答
2

根据 MSOpenTech,以下命令应将 Redis Sentinel 安装为服务:

redis-server --service-install --service-name Sentinel1 sentinel.1.conf --sentinel

但是当我使用该命令时,已安装的服务无法启动:它会立即失败并出现错误 1067,“进程意外终止。” 查看服务条目,我猜问题是 --service-name 参数没有被过滤并最终成为服务可执行路径的一部分。

我确实发现工作是使用 SC 命令手动安装服务:

SC CREATE Sentinel1 binpath= "\"C:\Program Files\Redis\redis-server.exe\" --service-run sentinel.1.conf --sentinel"

不要忘记在“binpath=”之后需要的空格,显然该路径必须反映您安装 redis-server.exe 的位置。同样在安装服务后,我编辑了服务条目,以便 Redis Sentinel 将在网络服务帐户下运行。

于 2015-01-05T17:39:30.617 回答
1

我正在使用 v3.0.501 并遇到以下两个问题。虽然存在,但它会导致服务在启​​动时失败,而不会将错误写入文件日志或事件日志。

  1. 配置文件必须是命令行的最后一个参数。如果另一个参数是最后一个,例如 --service-name,它会在调用命令行时运行良好,但作为服务启动时会始终失败。
  2. 由于该服务Network Service默认安装一个,因此请确保它有权访问将写入日志文件的目录。

一旦这两个项目被占了,redis as a service 就运行得如丝般顺滑。

于 2016-02-23T19:45:21.873 回答
0

最近,我找到了一种为 Redis 和 Sentinel 设置 windows 服务的方法。在我的设置过程中,我遇到了类似的问题。终于弄明白了:是配置文件路径引起的。

我已将所有配置放入我的 github 项目中:https ://github.com/dingyuliang/Windows-Redis-Sentinel-Config

于 2018-01-27T07:57:29.460 回答