Когда я изменяю конфигурацию redis через марионетку, есть ли лучший способ загрузить конфигурацию, кроме перезапуска службы redis?
Да, вы могли бы это сделать, но это потребует написания собственного поставщика услуг в Puppet. Это нетривиально, но если бы вы были готовы уменьшить заботу о настройках, было бы проще.
В простом случае может быть только динамическая установка главного или подчиненного устройства. Мы передадим эти параметры вашему классу Redis. Мы, конечно, создадим шаблон для redis.conf и поместим в него эти настройки так же, как вы, вероятно, делаете сейчас. Тогда вам понадобится какой-то синтаксис, например, следующая семантика, вероятно, должна быть более выразительной.
redisconf { 'master': enable => 'true', }
redisconf будет вашим настраиваемым провайдером, который будет написан на Ruby. Ему нужно будет подключиться к порту сервера Redis (это еще один вход, который вам необходимо установить по умолчанию). После подключения вам нужно будет выдать информацию и получить результат в виде хэша.
Первый шаг - определить, какая у вас версия Redis. Если это 2.4 / 2.6, вы можете использовать набор конфигураций и config получить, иначе вы будете использовать уже имеющийся у нас хэш и запускать команды вручную. В нашем примере вы должны проверить значение роли. Если это хозяин, ничего не делайте. Если это ведомое устройство, выполните «slaveof no one» и сгенерируйте событие Puppet. Предполагая, что есть различия, провайдеру redisconf Puppet потребуется внести изменения и, в идеале, проверить или выбросить и ошибку. Оберните все это марионетками, и все будет готово.
Было бы неплохо, если бы вы решили взяться за него.
Пока вы настроили постоянство с помощью директивы 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 и сохранили большую часть своих данных, за исключением того, что произошло между созданием файла резервной копии и перезапуском.
Нет, перезагрузка конфигурации (в настоящее время) невозможна.
Если вы изменяете настройки, регулируемые с помощью НАБОР КОНФИГУРАЦИИ вы можете установить их в работающем экземпляре и просто пропустить перезапуск.
Я бы не советовал делать это в обычных ситуациях, поскольку вы можете сломать файл конфигурации и заметить это только при следующем перезапуске этого экземпляра.