В следующем выпуске должно быть исправление от команды Memurai. Изменить: это было исправлено в выпуске Memurai 2.0.1.
Между тем, вот обходной путь, который использует сценарий PowerShell для добавления службы дозорной на Windows другими способами:
- Установите Memurai.
- Скопируйте sentinel.conf в желаемый рабочий каталог дозорного. Текущие значения в файлах предполагают C: \ sentinelconf \ sentinel.conf
- Измените sentinel.conf на желаемую конфигурацию. Текущие значения предполагают, что экземпляр Redis будет запущен на том же компьютере с портом по умолчанию.
- Запустите «Windows PowerShell ISE» от имени администратора:
- Откройте sentinel_script.ps1
- Измените переменные в начале файла на нужные значения.
- Запустите сценарий (F5)
- Если это приведет к появлению сообщения «запущенные сценарии отключены в этой системе». ошибка:
- В интерактивном запуске оболочки (без кавычек): 'Set-ExecutionPolicy RemoteSigned'
- Попробуйте снова запустить скрипт (F5)
- В интерактивной оболочке запустить (без кавычек): 'Set-ExecutionPolicy Restricted'
- Подключите дозорного с помощью memurai-cli в командной строке (без кавычек): 'memurai- cli -p 5000 '
- Выполнить команду для проверки часового (без кавычек):' sentinel master mymaster '
Пример sentinel.conf
:
# Copy this file to C:\sentinelconf\sentinel.conf
logfile "C:\sentinelconf\sentinel.log"
port 5000
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
Файл sentinel_script.ps1
:
# Full path of installed memurai.exe
$MemuraiBinPath="C:\Program Files\Memurai\memurai.exe"
# Full path of sentinel.conf
$SentinelConfPath="C:\sentinelconf\sentinel.conf"
# Full path of sentinel.log
$SentinelLogPath="C:\sentinelconf\sentinel.log"
# Desired name of the service
$SentinelServiceName="Memurai Sentinel"
# Get Network Service credentials
$NetworkServiceCredentials = New-Object -TypeName System.Management.Automation.PSCredential ("NT AUTHORITY\NETWORK SERVICE", (New-Object System.Security.SecureString))
# Create a service to start Memurai in Sentinel mode
New-Service -Name $SentinelServiceName -Credential $NetworkServiceCredentials -BinaryPathName "`"$MemuraiBinPath`" --service-run `"$SentinelConfPath`" --sentinel"
# Create a rule to give the Network Service account access to the paths.
$SentinelAccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("NT AUTHORITY\NETWORK SERVICE", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
# Get the path where the sentinel.conf file is located and add permissions.
$SentinelConfFolderPath = Split-Path $SentinelConfPath
$ConfPathAccessPermissions = Get-Acl $SentinelConfFolderPath
$ConfPathAccessPermissions.SetAccessRule($SentinelAccessRule)
Set-Acl $SentinelConfFolderPath $ConfPathAccessPermissions
# Get the path where the sentinel.log file is located and add permissions.
$SentinelLogFolderPath = Split-Path $SentinelLogPath
$LogPathAccessPermissions = Get-Acl $SentinelLogFolderPath
$LogPathAccessPermissions.SetAccessRule($SentinelAccessRule)
Set-Acl $SentinelLogFolderPath $LogPathAccessPermissions
# Start the Memurai Sentinel service.
Start-Service $SentinelServiceName
Write-Host "Started the $SentinelServiceName service."