Установка и базовая настройка Redis Server на Ubuntu 22.04

- Пошагово: обновите систему, установите пакет redis-server, отредактируйте /etc/redis/redis.conf для привязки к нужному интерфейсу и supervised=systemd, включите аутентификацию и переименуйте опасные команды. Перезапустите сервис и проверьте через redis-cli.
- В продакшне дополнительно включите шифрование на транспортном уровне (TLS), настройте резервное копирование, мониторинг и ACL/пароли.
О чём эта статья
В этой инструкции описано, как установить Redis Server на Ubuntu 22.04 LTS, выполнить базовую конфигурацию и применить простые меры безопасности, подготовив инстанс для тестирования и дальнейшей продакшен-подготовки. Подходит для администраторов и инженеров DevOps.
Ключевые варианты использования: база данных в памяти, кэш, брокер сообщений. Поддерживаемые структуры: строки, хэши, списки, множества, отсортированные множества, битмапы, HyperLogLog, потоки и геоданные с radius-запросами.
Предварительные требования
- Ubuntu 22.04 LTS.
- Для тестовой установки достаточно 1 ГБ ОЗУ и 2 CPU, но для продакшена нужно больше ресурсов в зависимости от нагрузки и объёма данных.
- Доступ по sudo.
Важно: всегда тестируйте конфигурацию на выделённом стенде перед переносом в продакшен.
Что мы сделаем
- Установим redis-server из репозитория Ubuntu
- Настроим базовую конфигурацию (bind, supervised)
- Включим базовую защиту: сеть, пароль, переименование и отключение опасных команд
- Проверим работу и покажем приемочные тесты
Шаг 1 — Установка Redis Server
Сначала обновите индекс пакетов и обновите установленные пакеты:
sudo apt update
sudo apt upgrade -y
Установите пакет redis-server из официального репозитория Ubuntu:
sudo apt install redis-server -y
Если после установки появится сообщение о нестарте службы — не паникуйте: обычно требуется настроить supervised и bind, и затем перезапустить сервис.
Шаг 2 — Базовая конфигурация Redis Server
Конфигурационный файл Redis находится в каталоге /etc/redis. Откройте основной файл конфигурации redis.conf в текстовом редакторе:
sudo nano /etc/redis/redis.conf- Привязка сетевого интерфейса
По умолчанию Redis слушает все интерфейсы, что опасно. Для тестовой установки и когда клиент и сервер на одной машине — ограничьте доступ локальным интерфейсом:
bind 127.0.0.1 ::1
На продакшене используйте внутренние IP сети (например 10. или 192.168.) и никогда не оставляйте Redis доступным напрямую из публичного интернета.
- Supervised для systemd
Если вы используете systemd (стандарт для Ubuntu), задайте supervised:
supervised systemd
Сохраните файл и закройте редактор.
Перезапустите и включите сервис в автозагрузку:
sudo systemctl restart redis-server
sudo systemctl enable redis-server
Проверьте статус:
sudo systemctl status redis-server
Убедитесь, что служба активна. Далее проверьте, на каком порту слушает Redis (по умолчанию 6379):
ss -plnt4
Проверка через клиент:
redis-cli ping
redis-cli ping "Hello Howtoforge redis Server"
Ожидаемый ответ: PONG или строка, которую вы передали.
Шаг 3 — Защита установки Redis
Здесь собраны базовые шаги по повышению безопасности. Это не исчерпывающий набор мер, но достаточный для начального hardening.
1. Сетевая безопасность
- Всегда ограничивайте bind к localhost или к закрытой внутренней сети.
- Используйте межсетевой экран (ufw/iptables) для запрета доступа к 6379 извне.
Пример правила ufw, которое разрешает только локальную сеть 192.168.1.0/24:
sudo ufw allow from 192.168.1.0/24 to any port 6379 proto tcp
sudo ufw deny 6379/tcpПримечание: настройки ufw применяются после включения ufw.
2. Аутентификация по паролю
Разкомментируйте и установите сильный пароль в redis.conf:
requirepass MySecretSecurePasswordПосле этого все клиенты должны выполнять AUTH перед выполнением команд.
Важно: храните пароли в безопасном хранилище (vault) и не коммитите их в репозитории.
3. Отключение опасных команд
Переименование или отключение команд снижает риск случайной или злонамеренной очистки данных и изменения конфигурации через CLI:
# rename-command COMMAND "CUSTOM"
rename-command FLUSHALL "DELITALL"
rename-command CONFIG "MYSERVERCONF"Перезапустите сервис:
sudo systemctl restart redis-serverПосле этого попытки вызвать старые команды вернут ошибку.
4. Рекомендации по шифрованию и каналам связи
Redis по умолчанию не шифрует трафик. Для защищённого продакшена рассмотрите:
- Включение TLS в Redis (доступно в официальных релизах, требует генерации сертификатов)
- Или настройка TLS через proxy (stunnel, HAProxy, nginx)
- Использование VPN или private VPC для коммуникации между приложениями и Redis
5. ACL и пользователи (если поддерживается)
Начиная с Redis 6, доступны ACL: создавайте отдельные пользователей с минимально необходимыми правами вместо общего requirepass, когда это возможно.
6. Права на файлы и системные ограничения
- Запустите Redis от непользовательского системного аккаунта
- Убедитесь, что /var/lib/redis и /etc/redis имеют корректные права
- Настройте ulimit и systemd ресурсов для предотвращения потребления всех системных ресурсов
Шаг 4 — Тестирование
Ниже — приёмочные тесты и примеры команд.
1. Тест хоста и аутентификации
Подключитесь к серверу:
redis-cli -h 127.0.0.1 -p 6379Если включён пароль, потребуется авторизация:
AUTH MySecretSecurePasswordПосле успешной авторизации попробуйте:
PING "Hello Redis"Ожидаемый ответ: “Hello Redis” или PONG в зависимости от запроса.

2. Тест переименованных команд
Попробуйте вызвать запрещённые команды:
FLUSHALL
CONFIGОни должны вернуть ошибку. Вместо них используйте переименованные команды:
DELITALL
MYSERVERCONF get bind
MYSERVERCONF get requirepass
3. Примеры CRUD через redis-cli
SET Name "Hakase Labs"
SET Blog "Howtoforge.com"
KEYS *
DELITALLКоманда DELITALL (переименованный FLUSHALL) удалит все ключи.
Дополнительные рекомендации для продакшена
Ниже — подборка практик и методологии, которые помогут подготовить Redis к реальной нагрузке.
- Репликация: используйте master-replica для высокой доступности и чтения с реплик.
- Персистентность: выберите RDB или AOF в зависимости от требований к потерям данных (RPO). AOF обеспечивает более мелкие интервалы потерь при правильной конфигурации.
- Бекапы: регулярные копии RDB/AOF и проверка восстановления на стенде.
- Мониторинг: метрики памяти, number of keys, eviction, hit/miss rate, connected clients. Интегрируйте в Prometheus/Grafana.
- Ограничения по памяти: устанавливайте maxmemory и политику вытеснения (eviction policy).
- Планирование ресурсов: Redis чувствителен к задержкам ввода-вывода и недостатку памяти — используйте быстрые диски и достаточный объём ОЗУ.
- High Availability: рассмотрите Sentinel или внешние решения с автоматическим failover.
SOP: Быстрый план развертывания нового Redis-инстанса
- Подготовка сервера: обновить ОС, установить базовые утилиты.
- Установить redis-server и выполнить systemctl enable.
- В /etc/redis/redis.conf:
- Установить bind на внутренний IP
- supervised systemd
- requirepass или ACL
- настроить persistence (RDB/AOF)
- переименовать опасные команды
- Настроить ufw/iptables для запрета доступа из внешней сети.
- Перезапустить и проверить статус.
- Настроить мониторинг и резервное копирование.
- Выполнить нагрузочное тестирование и примеры функциональных сценариев.
План восстановления и инцидентный рукопис
Классические сценарии и быстрые действия:
- Redis не запускается после конфигурации: проверить journalctl -u redis-server, вернуть изменения в redis.conf, перезапустить.
- Падение по OOM: проанализировать maxmemory, eviction policy, уменьшить рабочую нагрузку, перезапустить с ограничениями памяти.
- Коррупция RDB/AOF: остановить сервер, попытаться загрузить старую копию из бэкапа, промониторить время восстановления.
- Случайное удаление данных: восстановить из последнего бэкапа и применить журналы изменений, если есть.
Шаги отката при неудачной конфигурации:
- Остановить redis-server.
- Вернуть резервную копию /etc/redis/redis.conf и /var/lib/redis.
- Перезапустить сервис и проверить целостность.
Критерии приёмки
- Сервис redis-server запущен и активен (systemctl status)
- Порт 6379 слушает только на ожидаемом интерфейсе
- AUTH защищает доступ (если включён requirepass)
- Переименованные команды запрещены для старых имён
- Резервное копирование настроено и проверено на восстановление
- Мониторинг собирает ключевые метрики
Стратегия выбора режима персистентности
flowchart TD
A[Начало: нужна ли персистентность?] -->|Нет| B[Отключить персистентность, использовать как чистый кэш]
A -->|Да| C[Требуется быстрое восстановление после сбоя?]
C -->|Нет: допускаются потери данных| D[Выбрать RDB: периодические снапшоты]
C -->|Да: минимизировать потери| E[Выбрать AOF либо RDB+AOF]
E --> F[Настроить rewrite и fsync policy]
D --> G[Настроить частые снапшоты и бекапы]Роли и чек-листы
Оператор:
- Проверить systemctl status
- Настроить логирование и мониторинг
- Регулярно тестировать бэкапы
Разработчик:
- Использовать таймауты и обработки ошибок при подключении к Redis
- Не полагаться на несохранённые данные при критичных операциях
Безопасность:
- Проверить доступы по сети
- Внедрить TLS/ACL и управление секретами
Тест-кейсы и критерии приёмки
- Установка: redis-server устанавливается без ошибок.
- Конфигурация: bind ограничен локальным/внутренним интерфейсом.
- Аутентификация: без AUTH соединение не выполняет опасные операции.
- Переименование команд: старые имена возвращают ошибку.
- Рестарт: перезапуск сервиса не теряет формат конфигурации.
Краткий глоссарий
- RDB: снапшоты базы в файл (быстрый, но может потерять данные).
- AOF: журнал команд, более подробное восстановление.
- Sentinel: встроенный механизм для HA и failover.
- ACL: управление доступом по пользователям и командам.
Когда этот подход не годится
- Если у вас распределённый кластер с высокой нагрузкой и требованиями к отказоустойчивости, рассмотрите кластерный режим Redis Cluster и отдельные инструменты для оркестрации.
- Если требуется встроённое шифрование и сложные политики доступа, может понадобиться дополнительный прокси/SSL-терминирование или коммерческие сборки.
Шаблон для проверки перед вводом в продакшен
- Резервное копирование конфигурации и данных — выполнено
- Мониторинг и алерты — настроены
- Бенчмарки на нагрузку — пройдены
- Проверка отказоустойчивости и failover — пройдена
- Документация: пароли и секреты в хранилище — оформлено
Ссылки
- Официальная документация Redis: https://redis.io/documentation
Краткое итоговое резюме
Установка Redis на Ubuntu 22.04 занимает несколько минут. Главное — ограничить сетевой доступ, настроить supervised для systemd, включить аутентификацию и отключить опасные команды. Для продакшена добавьте TLS, мониторинг, резервные копии и план восстановления.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента