bostjanbozic.redis

Redis

Redisの役割は、さまざまなRedisのセットアップを作成するために使用できます:

  • シングルノード
  • マスターノード1つと複数のレプリカ
  • Redisクラスタ

作業は、既存の役割である DavidWittman.redis に基づいています。

やることリスト

  • センチネル設定の追加
  • 追加のOSのサポートの追加

インストール

ansible-galaxy install BostjanBozic.redis

始めに

この役割は、さまざまなRedisのセットアップを作成するために使われます。役割は、リモートマシンでsudo権限で実行する必要があります。

シングルRedisノード

シングルRedisノードをデプロイするには、この役割を使用し、変数の変更は不要です。以下は、Redisが実行されるポートを指定したプレイブックの例です:

---

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

プレイブックとインベントリファイル(例:playbook.ymlinventory)を指定した後、以下のコマンドでRedisをデプロイします:

ansible-playbook -i inventory playbook.yml

レプリケーションを伴うシングルマスターノード

Redisは、1つのマスターノードが1つまたは複数のレプリカノードでバックアップされるレプリケーションセットアップをサポートしています。以下の例は、2つのレプリカを持つシングルRedisマスターノードをデプロイします:

インベントリファイル:

[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

プレイブックファイル:

---

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

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

注意: レプリケーションとクラスターノードは互いに排他的です。replicaof変数を使用するときは、redis_cluster_enabled変数を設定しないでください。

クラスターモード

Redisはクラスターモードもサポートしており、データが複数のマスターノードに分散され、1つ以上のレプリケーションノードでバックアップされます。以下の例は、各マスターノードに1つのレプリカノードを持つ3つのRedisマスターノードをデプロイします:

インベントリファイル:

[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

プレイブックファイル:

---

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

注意: レプリケーションとクラスターノードは互いに排他的です。redis_cluster_enabled変数を使用するときは、replicaof変数を設定しないでください。

役割の変数

以下はデフォルトの変数のリストです。説明については公式ドキュメントを確認してください。

## インストール
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 ] ) }}"

## Redisサービス
redis_as_service: true
redis_service_name: "redis_{{ redis_port }}"

## Redis設定
# ネットワークオプション
redis_bind: 0.0.0.0
redis_protected_mode: "no"
redis_port: 6379
redis_tcp_backlog: 511
redis_timeout: 0
redis_tcp_keepalive: 300

# 一般的な設定
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

# スナップショット設定
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 }}

# レプリケーション設定
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

# セキュリティ設定
redis_password: false

# クライアント設定
redis_maxclients: 10000

# メモリ管理設定
redis_maxmemory: false
redis_maxmemory_policy: noeviction

# レイジーフリーング設定
redis_lazyfree_lazy_eviction: "no"
redis_lazyfree_lazy_expire: "no"
redis_lazyfree_lazy_server_del: "no"
redis_replica_lazy_flush: "no"

# アペンドオプションモード設定
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"

# Luaスクリプト設定
redis_lua_time_limit: 5000

# Redisクラスタ設定
redis_cluster_enabled: "no"
redis_cluster_config_file: nodes-{{ redis_port }}.conf
redis_cluster_node_timeout: 15000

# スローログ設定
redis_slowlog_log_slower_than: 10000
redis_slowlog_max_len: 128

# レイテンシモニター設定
redis_latency_monitor_threshold: 0

# イベント通知設定
redis_notify_keyspace_events: '""'

# 高度な設定
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

ライセンス

このプロジェクトはMITライセンスのもとでライセンスされています。

プロジェクトについて

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

インストール
ansible-galaxy install bostjanbozic.redis
ライセンス
mit
ダウンロード
181
所有者