Опубликован: 12.03.2016 | Доступ: свободный | Студентов: 465 / 3 | Длительность: 01:23:00
Лекция 6:

Администрирование

< Лекция 5 || Лекция 6

Наша последняя глава посвящена некоторым аспектам администрирования Redis. Она ни в коем случае не является полным руководством. В лучшем случае мы осветим некоторые базовые вопросы, с которыми сталкиваются новые пользователи Redis.

Конфигурирование

Когда вы впервые запустили сервер Redis, он предупредил вас, что файл redis.conf не может быть найден. Этот файл может быть использован для настройки различных параметров Redis. Хорошо документированный файл redis.conf доступен для каждой release-версии Redis. Образец файла содержит стандартные варианты конфигурации, что очень полезно для понимания того, для чего предназначены конкретные опции и каковы их значения по умолчанию. Вы можете найти его на https://github.com/antirez/redis/raw/2.4.6/redis.conf.

Это конфигурационный файл для Redis 2.4.6. Вы должны заменить "2.4.6" в приведенном выше URL на номер вашей версии. Вы можете узнать вашу версию, выполнив команду info.

Конфигурационный файл содержит множество комментариев, поэтому мы не будем \linebreak рассматривать настройки.

Кроме конфигурирования Redis через файл redis.conf, команда config set может быть использована для задания конкретных опций. Мы уже использовали ее, когда \linebreak устанавливали параметр slowlog-log-slower-than в 0.

Существует также специальная команда config get, которая выводит значения параметров конфигурации. Эта команда поддерживает поиск по образцу. Мы можем посмотреть все опции, касающиеся журналирования следующим способом:

config get *log*

Авторизация

Redis можно настроить так, чтобы он требовал пароль. За это отвечает специальная опция конфигурации requirepass (устанавливается через redis.conf или командой config set). Когда опция requirepass устанавливается в какое-либо значение (которое является паролем), клиенты должны выполнять команду auth password при обращении к серверу.

Как только клиент проходит авторизацию, он может выполнять команды в любой базе данных. В том числе команду flushall, которая удаляет все ключи из всех баз. У вас есть возможность переименовать команды для обеспечения определенного уровня защиты:

rename-command CONFIG 5ec4db169f9d4dddacbfb0c26ea7e5ef
rename-command FLUSHALL 1041285018a942a4922cbf76623b741e

Вы также можете полностью отключить команду, используя в качестве ее нового названия пустую строку.

Ограничения Размеров

Когда вы начнете использовать Redis, у вас может возникнуть вопрос: "Как много ключей я могу использовать?". Кроме этого, вас могут интересовать ограничения на количество полей в хешах (особенно, когда вы используете их для организации ваших данных) и количество элементов в списках и множествах. Для одного узла, лимиты представляют собой числа порядка сотен миллионов.

Репликация

Redis поддерживает репликацию, которая означает, что все данные, которые попадают на один узел Redis (который называется master) будут попадать также и на другие узлы (называются slave). Для конфигурирования slave-узлов можно изменить опцию slaveof или выполнить аналогичную по написанию команду (узлы, запущенные без подобных опций являются master-узлами).

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

К сожалению, система репликации Redis еще не поддерживает автоматическую \linebreak отказоустойчивость. Если master-узел выходит из строя, необходимо вручную выбрать новый из slave-узлов. Необходимо использовать традиционные утилиты, использующие мониторинг и специальные скрипты для переключения master-узлов, если вам необходима устойчивая к сбоям система.

Резервное Копирование Данных

Резервное копирование Redis это просто копирование снимка базы данных Redis в любое место (Amazon S3, FTP, ...). По умолчанию, Redis сохраняет данные в файл dump.rdb. В любой момент времени вы можете скопировать этот файл куда угодно.

Допускается одновременное отключение сохранения данных на диск и режима дозаписи в файл у master-узлов и возложение функции резервирования на slave-узлы. Данный шаг уменьшает нагрузку на master-узел и позволяет slave-узлам использовать более \linebreak агрессивные настройки сохранения данных, не снижая общую доступность системы.

Масштабирование и Redis Cluster

Репликация является первым инструментом, который используют при росте нагрузки на систему. Некоторые команды являются более медленными, чем другие (например sort), и перенапрвление таких запросов на slave-узлы позволяет сохранять высокую доступность системы.

Помимо этого, по-настоящему масштабируемый Redis использует распределение ключей между несколькими узлами Redis (которые могут быть запущены в той же системе - как мы помним, Redis однопоточный). В настоящее время, это то, о чем приходится заботится нам - разработчикам (хотя ряд драйверов предоставляют алгоритмы консистентного \linebreak хеширования). (Консистентное хеширование - способ создания распределенных хеш-таблиц, при котором вывод из строя одного или более серверов-хранилищ не приводит к необходимости полного переразмещения всех хранимых ключей и значений - прим. перев.) Мы не можем рассмотреть в этой книге вопросы, касающиеся работы с данными при использовании горизонтального масштабирования. Тем более, вам скорее всего не придется беспокоится о подобных вещах, однако стоит быть в курсе независимо от того, какое решение вы используете.

Хорошей новостью является то, что ведется работа над Redis Cluster. Это решение \linebreak предоставит не только возможность горизонтального масштабирования, включая \linebreak автоматическую балансировку нагрузки, но также решения в плане отказоустойчивости и высокой доступности.

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

В Этой Главе

Учитывая количество проектов, уже использующих Redis, не может быть никаких \linebreak сомнений, что эта система является пригодной для практического использования в \linebreak настоящий момент. Однако, некоторые инструменты, особенно касающиеся поддержания безопасности и доступности, все еще требуют доработки. Redis Cluster, который мы надеемся увидеть в ближайшее время, должен помочь решить некоторые из существующих проблем администрирования.

\clearpage

Заключение

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

В конечном итоге мы вернулись к тому, о чем я говорил в самом начале: Redis прост в освоении. Когда вокруг так много новых технологий, не просто понять, на изучение какой стоит потратить время. Когда вы увидите реальные преимущества, которые Redis может предложить, я уверен, что у вас не останется вопросов о том, уделять ли время на изучение Redis.

< Лекция 5 || Лекция 6
Александр Прокофьев
Александр Прокофьев

Что за бред? зачем его выложили если его нельзя закончить???

Тогда уберите бесплатность курса! Или надо жаловаться администрации сайта на вас?

Ups Shelest
Ups Shelest

Раз "Задания которые требуют ручной проверки проверяются только при записи на платное обучение или при обучение с тьютором" то те, кто записался на безплатный курс, попросту не смогут завершить этот курс.

Уровень курса - обзорная статья на хабре. Платить за такое - просто нельзя.

Так как же, все таки, завершить обучение в этом курсе?

Евгений Гавриш
Евгений Гавриш
Россия, Москва
Леонид Рисков
Леонид Рисков
Россия, Екатеринбург, Уральский федеральный университет, 2006