Redis перезагрузить изменения конфигурации без перезапуска службы

Когда я изменяю конфигурацию redis через puppet, есть ли лучший способ загрузить конфигурацию, кроме перезапуска службы redis?

3 ответа

Решение

Да, вы могли бы сделать это, но это будет связано с написанием вашего собственного поставщика клиентов в Puppet. Это не тривиально, но если вы захотите уменьшить настройки, которые вам небезразличны, это будет проще.

Простым случаем может быть только динамическая настройка главного или подчиненного. Мы сделаем эти параметры для вашего класса Redis. Разумеется, мы бы создали шаблон redis.conf и поместили в него эти настройки так же, как вы это делаете сейчас. Тогда вам понадобится какой-то синтаксис, например, следующая семантика должна быть более выразительной.

redisconf { 'master': enable => 'true', } 

redisconf будет вашим пользовательским провайдером, который будет написан на Ruby. Он должен будет подключиться к порту сервера Redis (это другой вход и значение по умолчанию, которое вам нужно установить). После подключения вам нужно будет выдать информацию и получить полученный результат как хеш.

Первый шаг - определить, какая у вас версия Redis. Если это 2.4/2.6, вы можете использовать config set и config get, иначе вы будете использовать хэш, который у нас уже есть, и запускать команды вручную. В нашем примере вы бы проверили значение роли. Если он хозяин, ничего не делай. Если это раб, тогда выполните "slaveof no one" и сгенерируйте событие Puppet. Предполагая, что есть различия, поставщик Redisconf Puppet должен будет внести изменения и в идеале проверить или выдать ошибку. Оберните все это в Puppet-isms, и вы будете готовы.

Это был бы хороший маленький проект, если вы решили взять его на себя.

Пока у вас есть постоянство, настроенное с помощью директивы save, перезапуски (в основном) не разрушительны.

Если у процесса redis нет постоянства, вы можете включить его с помощью CONFIG SET.

telnet 127.0.0.1 1234
CONFIG SET SAVE "900 1 300 10 60 10000"

Убедитесь, что резервная копия данных создана, перейдя в каталог, указанный в значении конфигурации dir, и найдите файл, равный значению конфигурации dbfilename. Как только это будет создано, вы можете отредактировать конфигурацию и перезапустить Redis, и вы увидите что-то вроде этого в журнале:

[17296] 18 Nov 00:38:32.253 * DB loaded from disk: 0.158 seconds

Виола, ты перезапустил Redis и сохранил большую часть своих данных, исключая то, что произошло между созданием файла резервной копии и перезапуском.

Нет, перезагрузка конфигурации (в настоящее время) невозможна.

Если вы управляете настройками, которые можно настроить с помощью CONFIG SET, вы можете установить их в работающем экземпляре и просто пропустить перезапуск.
Я бы не советовал делать это в обычных ситуациях, так как вы можете сломать файл конфигурации и заметить это только при следующем перезапуске этого экземпляра.

Другие вопросы по тегам