Запуск RethinkDB при запуске системы
Этот документ объясняет, как настроить RethinkDB для работы в качестве системной службы на поддерживаемых операционных системах, обеспечивая автоматический запуск при загрузке. Общие инструкции по запуску RethinkDB см. в статье о запуске сервера RethinkDB.
В общем случае, вам нужно выполнить следующие шаги:
- Установите RethinkDB как службу для вашей операционной системы. (В этом документе описывается, как сделать это как для
init.d-, так и дляsystemd-базированных дистрибутивов Linux, а также для OS X с использованиемlaunchdи служб Windows. В зависимости от способа установки RethinkDB, это может быть уже выполнено за вас.) - Создайте файл конфигурации RethinkDB для каждого экземпляра RethinkDB, работающего на этом физическом сервере.
Запуск с init.d
Пакеты RethinkDB автоматически устанавливают скрипт init по адресу /etc/init.d/rethinkdb и добавляют записи для уровня запуска по умолчанию. Для автоматического запуска RethinkDB при запуске системы вам необходимо добавить файл конфигурации в /etc/rethinkdb/instances.d/.
Быстрая настройка
Скопируйте файл образца конфигурации и используйте документацию по файлу конфигурации в качестве руководства для его настройки. (Если у вас нет файла образца .conf, вы можете загрузить его здесь.)
sudo cp /etc/rethinkdb/default.conf.sample /etc/rethinkdb/instances.d/instance1.conf
sudo vim /etc/rethinkdb/instances.d/instance1.conf
Затем перезапустите службу:
sudo /etc/init.d/rethinkdb restart
Базовая настройка завершена — теперь у вас есть работающий сервер!
Несколько экземпляров
Скрипт init.d поддерживает запуск нескольких экземпляров на одном сервере с помощью нескольких файлов .conf в /etc/rethinkdb/instances.d. Это может быть полезно для изоляции баз данных для отдельных приложений, работающих на одном сервере, или для целей тестирования. (Нет прироста производительности при запуске нескольких узлов одного кластера на одном физическом компьютере.)
В каждом файле конфигурации укажите отдельный каталог данных и включите опцию конфигурации join для каждого узла с IP-адресом и портом другого узла в кластере. Если экземпляры работают не на одной машине, укажите bind=all в файле конфигурации (или --bind all в командной строке). Убедитесь, что каждый экземпляр на одном компьютере указывает разные значения для driver-port, cluster-port и http-port.
Опция
bind=allпредставляет собой риск безопасности, если ваш компьютер открыт для интернета, и вы должны принять меры для предотвращения несанкционированного доступа. Подробнее см. на странице безопасности.
Установка из исходного кода
Если вы скомпилировали из исходного кода, получите скрипт init.d от сюда. Скачайте файл образца .conf здесь.
Запуск с systemd
Вы используете Ubuntu? Используйте инструкции по запуску с init.d, а не инструкции
systemd.
Полная поддержка systemd запланирована — вы можете отслеживать прогресс на задаче 2014. Пока вам нужно будет вручную создать несколько файлов конфигурации.
Базовая настройка
Создайте файл /usr/lib/tmpfiles.d/rethinkdb.conf со следующим содержимым:
d /run/rethinkdb 0755 rethinkdb rethinkdb -
И создайте файл службы /usr/lib/systemd/system/rethinkdb@.service:
[Unit]
Description=RethinkDB database server for instance '%i'
[Service]
User=rethinkdb
Group=rethinkdb
ExecStart=/usr/bin/rethinkdb serve --config-file /etc/rethinkdb/instances.d/%i.conf
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Права доступа chmod для обоих файлов должны быть 644 (chmod 644 <file>).
Запуск экземпляров RethinkDB
Сначала создайте каталог данных RethinkDB с помощью следующей команды и установите права владения пользователю rethinkdb:
rethinkdb create -d /path/to/your/rethinkdb/directory
sudo chown -R rethinkdb.rethinkdb /path/to/your/rethinkdb/directory
Затем скопируйте файл образца конфигурации и используйте документацию по файлу конфигурации в качестве руководства для его настройки. (Если у вас нет файла образца .conf, вы можете загрузить его здесь.)
sudo cp /etc/rethinkdb/default.conf.sample /etc/rethinkdb/instances.d/instance1.conf
sudo vim /etc/rethinkdb/instances.d/instance1.conf
Хотя вы можете оставить многие параметры по умолчанию, вам определенно нужно изменить строку directory= в файле конфигурации, чтобы указать путь к каталогу данных RethinkDB.
directory=/path/to/your/rethinkdb/directory
Затем включите службу:
sudo systemctl enable rethinkdb@<name_instance>
sudo systemctl start rethinkdb@<name_instance>
Теперь у вас есть работающий сервер!
Несколько экземпляров
Так как systemd поддерживает несколько экземпляров на одном сервере, вам просто нужно создать несколько файлов .conf в /etc/rethinkdb/instances.d. Это может быть полезно для изоляции баз данных для отдельных приложений, работающих на одном сервере, или для целей тестирования. (Нет прироста производительности при запуске нескольких узлов одного кластера на одном физическом компьютере.)
В каждом файле конфигурации укажите отдельный каталог данных и включите опцию конфигурации join для каждого узла с IP-адресом и портом другого узла в кластере. Если экземпляры работают не на одной машине, укажите bind=all в файле конфигурации (или --bind all в командной строке). Убедитесь, что каждый экземпляр на одном компьютере указывает разные значения для driver-port, cluster-port и http-port.
Опция
bind=allпредставляет собой риск безопасности, если ваш компьютер открыт для интернета, и вы должны принять меры для предотвращения несанкционированного доступа. Подробнее см. на странице безопасности.
Запуск с launchd (OS X)
Если вы установили RethinkDB с помощью Homebrew, файл конфигурации launchd будет установлен за вас в ~/Library/LaunchAgents/, хотя его может потребоваться изменить.
Базовая настройка
Если вы не устанавливали с помощью Homebrew, вам нужно будет создать файл конфигурации launchd и решить, где хранить ваши файлы данных. Эти инструкции предполагают следующие расположения:
- Бинарник RethinkDB, установленный официальным пакетом, в
/usr/local/bin/rethinkdb - Каталог данных RethinkDB будет
/Library/RethinkDB/data - Лог RethinkDB будет
/var/log/rethinkdb.log
Если вы хотите использовать другие расположения, измените текст в файле соответственно.
Создайте /Library/LaunchDaemons/com.rethinkdb.server.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.rethinkdb.server</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/rethinkdb</string>
<string>-d</string>
<string>/Library/RethinkDB/data</string>
</array>
<key>StandardOutPath</key>
<string>/var/log/rethinkdb.log</string>
<key>StandardErrorPath</key>
<string>/var/log/rethinkdb.log</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>LowPriorityIO</key>
<false/>
</dict>
</plist>
Установите права владения этим файлом для пользователя root:
sudo chown root:wheel /Library/LaunchDaemons/com.rethinkdb.server.plist
sudo chmod 644 /Library/LaunchDaemons/com.rethinkdb.server.plist
Затем вам нужно будет создать каталог данных RethinkDB.
sudo mkdir -p /Library/RethinkDB
sudo rethinkdb create -d /Library/RethinkDB/data
Использование файла конфигурации RethinkDB
По умолчанию ни Homebrew, ни пример файла конфигурации выше не будут читать параметры из файла конфигурации. Если вы хотите использовать его, вам нужно выполнить следующие действия:
- Загрузите файл образца конфигурации и скопируйте его в новое расположение.
cp default.conf.sample /etc/rethinkdb.conf
- Отредактируйте файл конфигурации в вашем любимом редакторе. Хотя вы можете оставить многие параметры по умолчанию, вам определенно нужно изменить строку
directory=в файле, чтобы указать путь к вашему каталогу данных.
sudo pico /etc/rethinkdb.conf
- Отредактируйте
/Library/LaunchDaemons/com.rethinkdb.server.plistдля изменения ключаProgramArguments, чтобы RethinkDB использовал ваш файл конфигурации.
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/rethinkdb</string>
<string>--config-file</string>
<string>/etc/rethinkdb.conf</string>
</array>
Запуск экземпляров RethinkDB
Для запуска RethinkDB используйте launchctl:
sudo launchctl load /Library/LaunchDaemons/com.rethinkdb.server.plist
RethinkDB будет автоматически загружаться при запуске. Чтобы отключить это поведение, измените ключ RunAtLoad на <false/> в файле plist.
Несколько экземпляров
Запуск нескольких экземпляров RethinkDB на одном сервере может быть полезен для изоляции баз данных для отдельных приложений, работающих на одном сервере, или для целей тестирования. (Нет прироста производительности при запуске нескольких узлов одного кластера на одном физическом компьютере.)
Вам нужно будет создать новые копии файла com.rethinkdb.server.plist с разными именами (например, com.rethinkdb.server2.plist), внеся следующие изменения:
- Установите значение ключа
Labelв имя файла (например,com.rethinkdb.server2.plist). - Установите ключ
ProgramArgumentsв новый файл конфигурации (например,/etc/rethinkdb2.conf). - Установите ключи
StandardOutPathиStandardErrorPathв новый файл журнала.
В каждом файле конфигурации укажите отдельный каталог данных и включите опцию конфигурации join для каждого узла с IP-адресом и портом другого узла в кластере. Если экземпляры работают не на одной машине, укажите bind=all в файле конфигурации (или --bind all в командной строке). Убедитесь, что каждый экземпляр на одном компьютере указывает разные значения для driver-port, cluster-port и http-port.
Опция
bind=allпредставляет собой риск безопасности, если ваш компьютер подключен к интернету, и вам следует принять меры для предотвращения несанкционированного доступа. Подробнее см. на странице безопасности.Под ОС OS X системные версии Python и Ruby ссылаются на старые версии OpenSSL, которые не поддерживают значения по умолчанию RethinkDB для TLS. Для использования этих драйверов под OS X сервер должен указать:
tls-min-protocol TLSv1tls-ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:AES256-SHAЭти параметры могут быть заданы как параметры запуска
rethinkdbили в файле конфигурации.
Запуск в качестве службы Windows
Сначала вам нужно создать файл конфигурации. Вы можете загрузить образец файла и настроить его, используя в качестве руководства документацию по файлу конфигурации. Наиболее важная строка для изменения — directory: она указывает на каталог данных RethinkDB. По умолчанию RethinkDB будет использовать c:\Windows\System32\rethinkdb_data.
Чтобы протестировать файл конфигурации перед его использованием, запустите RethinkDB вручную, указав конфигурацию с флагом --config-file:
rethinkdb.exe --config-file <config-file>
Чтобы фактически установить службу RethinkDB, выполните следующую команду:
rethinkdb.exe install-service --config-file <config-file>
Служба будет установлена под именем rethinkdb_default, и после установки будет автоматически запущена. Вы можете использовать вкладку «Службы» в диспетчере задач для мониторинга, остановки и перезапуска службы. По умолчанию REthinkDB настроен на автоматический запуск при запуске системы.
По умолчанию служба будет выполняться с правами пользователя «Система». Если вы хотите установить службу с помощью другого учетной записи пользователя, вы можете использовать параметры --runuser и --runuser-password:
rethinkdb.exe install-service --config-file <config-file> --runuser <domain>\<username> --runuser-password <password>
Если пользователь локальный, то <domain> — это имя сервера; в противном случае — это имя домена Windows или Active Directory, в котором находится запись пользователя.
Если вы хотите удалить службу RethinkDB:
rethinkdb.exe remove-service
И install-service и remove-service также принимают опцию --instance-name <name>, чтобы присвоить экземпляру RethinkDB определенное имя, которое будет отображаться в диспетчере служб. Это позволит вам запускать несколько экземпляров RethinkDB на одном сервере.
Особенности
- Служба устанавливает расположения файла конфигурации и исполняемого файла
rethinkdb.exeпри установке. Если вы перемещаете любой из них, вам необходимо удалить службу и переустановить её. - Если вы измените параметры в файле конфигурации, для применения изменений необходимо перезапустить службу.
Устранение неполадок
Вы видите сообщение «получен неверный заголовок кластеризации»? RethinkDB использует три порта для работы — порт HTTP веб-интерфейса, порт драйверов клиентов и порт межкластерного трафика. Вы можете подключить браузер к порту веб-интерфейса для администрирования кластера прямо из браузера и подключить драйверы клиентов к порту драйверов клиентов для выполнения запросов из вашего приложения. Если вы работаете с кластером, разные узлы RethinkDB общаются друг с другом через порт межкластерного трафика.
Сообщение
received invalid clustering headerозначает несоответствие портов и что что-то подключается к неправильному порту. Например, это сообщение часто появляется, если вы случайно направили браузер или подключили драйверы клиентов к порту межкластерного трафика.
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/docs/start-on-startup/