bostjanbozic.redis

Redis

Le rôle Redis, qui peut être utilisé pour créer une variété de configurations Redis :

  • nœud unique
  • nœud maître unique avec plusieurs réplicas
  • cluster Redis

La majorité du travail est basé sur un rôle déjà existant : DavidWittman.redis

Liste des tâches

  • ajouter la configuration Sentinel
  • ajouter le support pour d'autres systèmes d'exploitation

Installation

ansible-galaxy install BostjanBozic.redis

Démarrer

Le rôle est utilisé pour créer une variété de configurations Redis. Il doit être exécuté avec des droits sudo sur les machines distantes.

Nœud Redis Unique

Déployer un nœud Redis unique nécessite d'utiliser ce rôle, sans modifications des variables. Voici un exemple de playbook avec le port spécifié sur lequel Redis fonctionnera :

---

- hosts: all
  become: yes
  roles:
    - BostjanBozic.redis
  vars:
    - redis_port: 6380

Après avoir spécifié les fichiers de playbook et d'inventaire (par exemple, playbook.yml et inventory), vous déployez Redis avec la commande suivante :

ansible-playbook -i inventory playbook.yml

Nœud Maître Unique avec Réplication

Redis prend en charge la configuration de réplication, où un nœud maître unique est soutenu par un ou plusieurs nœuds de réplication. L'exemple ci-dessous déploie une instance maître Redis unique avec 2 réplicas :

Fichier d'inventaire :

[master]
redis-master-0.example.io

[replica]
redis-replica-0.example.io master_host=redis-master-0.example.io
redis-replica-1.example.io master_host=redis-master-0.example.io

Fichier de playbook :

---

- hosts: master
  become: yes
  roles:
    - BostjanBozic.redis

- hosts: replica
  become: yes
  roles:
    - BostjanBozic.redis
  vars:
    - redis_replicaof: "{{ master_host }} {{ redis_port }}"

Remarque : la réplication et les nœuds de cluster sont mutuellement exclusifs. Lors de l'utilisation de la variable replicaof, ne pas configurer la variable redis_cluster_enabled.

Mode Cluster

Redis prend également en charge le mode cluster, où les données sont réparties sur plusieurs nœuds maîtres, qui peuvent être soutenus par un ou plusieurs nœuds de réplication. L'exemple ci-dessous déploie 3 instances maîtres Redis avec 1 nœud de réplication chacune :

Fichier d'inventaire :

[master]
redis-master-[0:2].example.io

[replica]
redis-replica-0.example.io master_host=redis-master-0.example.io
redis-replica-1.example.io master_host=redis-master-1.example.io
redis-replica-2.example.io master_host=redis-master-2.example.io

Fichier de playbook :

---

- hosts: all
  become: yes
  roles:
    - BostjanBozic.redis
  vars:
    - redis_cluster_enabled: "yes"

Remarque : la réplication et les nœuds de cluster sont mutuellement exclusifs. Lors de l'utilisation de la variable redis_cluster_enabled, ne pas configurer la variable replicaof.

Variables de rôle

Voici la liste des variables par défaut. Pour plus de détails, veuillez consulter la documentation officielle.

## Installation
redis_version: 5.0.4
redis_install_dir: /opt/redis
redis_download_url: "http://download.redis.io/releases/redis-{{ redis_version }}.tar.gz"

redis_user: redis
redis_group: redis

redis_nofile_limit: 16384
redis_oom_score_adjust: 0

redis_master_list: "{{ groups['master'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | arraypermute( [':'] ) | arraypermute( [ redis_port ] ) }}"

## Service Redis
redis_as_service: true
redis_service_name: "redis_{{ redis_port }}"

## Configuration Redis
# Options réseau
redis_bind: 0.0.0.0
redis_protected_mode: "no"
redis_port: 6379
redis_tcp_backlog: 511
redis_timeout: 0
redis_tcp_keepalive: 300

# Configuration générale
redis_daemonize: "yes"
redis_supervised: "no"
redis_pidfile: /var/run/redis/{{ redis_port }}.pid
redis_loglevel: notice
redis_logfile: /var/log/redis_{{ redis_port }}.log
redis_databases: 16

# Configuration de snapshot
redis_save:
  - 900 1
  - 300 10
  - 60 10000
redis_stop_writes_on_bgsave_error: "yes"
redis_rdbcompression: "yes"
redis_rdbchecksum: "yes"
redis_dbfilename: dump.rdb
redis_dir: /var/lib/redis/{{ redis_port }}

# Configuration de réplication
redis_replicaof: false
redis_replica_serve_stale_data: "yes"
redis_replica_read_only: "yes"
redis_repl_diskless_sync: "no"
redis_repl_diskless_sync_delay: 5
redis_repl_disable_tcp_nodelay: "no"
redis_repl_backlog_size: false
redis_replica_priority: 100
redis_min_replicas_to_write: 0
redis_min_replicas_max_lag: 10

# Configuration de sécurité
redis_password: false

# Configuration des clients
redis_maxclients: 10000

# Configuration de gestion de la mémoire
redis_maxmemory: false
redis_maxmemory_policy: noeviction

# Configuration de Lazy Freeing
redis_lazyfree_lazy_eviction: "no"
redis_lazyfree_lazy_expire: "no"
redis_lazyfree_lazy_server_del: "no"
redis_replica_lazy_flush: "no"

# Configuration du mode Append Only
redis_appendonly: "no"
redis_appendfilename: "appendonly.aof"
redis_appendfsync: everysec
redis_no_appendfsync_on_rewrite: "no"
redis_auto_aof_rewrite_percentage: 100
redis_auto_aof_rewrite_min_size: 64mb
redis_aof_load_truncated: "yes"

# Configuration de scripting Lua
redis_lua_time_limit: 5000

# Configuration du cluster Redis
redis_cluster_enabled: "no"
redis_cluster_config_file: nodes-{{ redis_port }}.conf
redis_cluster_node_timeout: 15000

# Configuration du Slow Log
redis_slowlog_log_slower_than: 10000
redis_slowlog_max_len: 128

# Configuration du moniteur de latence
redis_latency_monitor_threshold: 0

# Configuration des notifications d'événements
redis_notify_keyspace_events: '""'

# Configuration avancée
redis_client_output_buffer_limit_normal: 0 0 0
redis_client_output_buffer_limit_replica: 256mb 64mb 60
redis_client_output_buffer_limit_pubsub: 32mb 8mb 60

Licence

Ce projet est sous licence MIT.

À propos du projet

Ansible role to install Redis (standalone or cluster mode) and Redis Sentinel

Installer
ansible-galaxy install bostjanbozic.redis
Licence
mit
Téléchargements
181
Propriétaire