IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

Шаблон jinja2 для конфига Redis

Этот шаблон Jinja2 предназначен для создания конфигурационного файла Redis, который автоматически настраивает Redis как мастер или реплику (slave) в зависимости от текущего узла. Шаблон разделяет конфигурацию на два блока: один для мастер-узла Redis, другой — для реплик. Рассмотрим содержимое и его назначение подробнее.

Основные параметры конфигурации

1. bind 0.0.0.0

  • Описание: Redis будет привязан ко всем сетевым интерфейсам, доступным на машине. Это позволяет принимать запросы от любых клиентов, подключающихся по IP.
  • Назначение: Открытие Redis для внешних соединений, а не только для локальных (если вы хотите ограничить доступ, можно заменить на конкретный IP).

2. Условное разделение на мастер и реплику

  • С помощью условного оператора Jinja2 if, шаблон определяет, является ли текущий узел мастером (inventory_hostname == "redis_master") или репликой.
  • inventory_hostname — это переменная Ansible, которая указывает на имя текущего узла, с которым Ansible работает.
  • В зависимости от того, является ли узел мастером или репликой, настраиваются соответствующие параметры.

Конфигурация для мастер-узла Redis

  1. port 6379
    • Redis будет слушать стандартный порт 6379 для подключения клиентов.
  2. requirepass {{ redis_password }}
    • Описание: Пароль для подключения к Redis, который необходимо указать для аутентификации пользователей.
    • Значение переменной: redis_password передается из Ansible и задает пароль для подключения к Redis.
  3. masterauth {{ redis_password }}
    • Используется для репликации, чтобы реплики могли аутентифицироваться на мастере.
  4. protected-mode yes
    • Включает защищенный режим, который предотвращает небезопасное использование Redis без надлежащей конфигурации (например, не разрешает подключение без пароля).
  5. tcp-keepalive 0
    • Управляет частотой отправки keepalive пакетов. Значение 0 означает, что этот параметр отключен.
  6. maxmemory 2gb
    • Ограничивает объем используемой памяти Redis на уровне 2 гигабайт.
  7. maxmemory-policy volatile-lru
    • Политика управления памятью. При переполнении памяти Redis будет удалять наименее часто используемые (LRU) ключи с ограниченным временем жизни (TTL).
  8. dir {{ redis_dir }}
    • Указывает директорию для хранения данных Redis. Значение переменной redis_dir передается из Ansible.

Конфигурация для реплики Redis

  1. port 6379, requirepass, masterauth, protected-mode, tcp-keepalive, maxmemory, maxmemory-policy, dir
    • Эти параметры остаются такими же, как и для мастера. Они контролируют порты, аутентификацию и управление памятью для реплик.
  2. slaveof {{ hostvars[‘redis_master’].ansible_host }} 6379
    • slaveof указывает узлу Redis быть репликой мастера.
    • hostvars['redis_master'].ansible_host — Ansible-выражение, которое получает IP-адрес или имя хоста мастер-узла Redis из инвентаря. Реплика подключается к мастеру по этому адресу на порту 6379.

Заключение

Этот шаблон конфигурации Redis управляет настройкой кластеров Redis, отличая мастера и реплики с помощью переменной inventory_hostname. Мастер отвечает за запись данных, а реплики синхронизируют свои данные с мастером, сохраняя высокую доступность кластера. Основные параметры, такие как пароль, максимальный объем памяти и режим LRU, одинаковы для обеих ролей, что обеспечивает консистентность поведения Redis независимо от роли узла.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *