跳转至

Ansible Role: Redis

安装redis

介绍

redis(Remote Dictionary Server)是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

官方地址: https://redis.io/ 官方文档地址:https://redis.io/documentation

要求

此角色仅在RHEL及其衍生产品上运行。

测试环境

ansible 2.4.2.0

os Centos 7.2 X64

python 2.7.5

角色变量

software_files_path: "/opt/software"
software_install_path: "/usr/local"

redis_version: "3.2.11"

redis_file: "redis-{{ redis_version }}.tar.gz"
redis_file_path: "{{ software_files_path }}/{{ redis_file }}"
redis_file_url: "http://download.redis.io/releases/redis-{{ redis_version }}.tar.gz"

redis_data_path: "/redis_data"
# redis_port: 6379
redis_daemon: "redis{{ redis_port | default('') }}"
redis_dir_path: "{{ redis_data_path }}/{{redis_port | default('6379')}}"

redis_timeout: 0
redis_user: redis

redis_loglevel: "notice"
redis_logfile: "{{ redis_dir_path }}/redis-server.log"
redis_pidfile: "{{ redis_dir_path }}/redis.pid"

redis_databases: 16

redis_rdbcompression: "yes"
redis_dbfilename: dump.rdb
redis_dbdir: "{{ redis_dir_path }}/data"

redis_maxmemory: "1000mb"

redis_requirepass: ''
redis_slave: false
redis_cluster: false
redis_cluster_replicas: ''
# redis_cluster_replicas: '1 127.0.0.1:6481 127.0.0.1:6482 127.0.0.1:6483 127.0.0.1:6484 127.0.0.1:6485 127.0.0.1:6486'
# 1 表示 自动为每一个master节点分配一个slave节点, 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)
redis_masterauth: ''
redis_master_host: ''
redis_master_port: ''

redis_sentinel_port: ''
redis_sentinel_quorum: '2'
redis_sentinel_daemon: "redis-sentinel{{ redis_sentinel_port | default('') }}"

redis_rename_command: true

依赖

java ruby

github地址

https://github.com/lework/Ansible-roles/tree/master/redis

Example Playbook

单实例安装
- hosts: node1
  roles:
    - { role: redis }

主从配置
- hosts: node1
  vars:
   - redis_master_host: '127.0.0.1'
   - redis_master_port: '6380'
  roles:
    - { role: redis, redis_port: 6380}
    - { role: redis, redis_port: 6381, redis_slave: true}
    - { role: redis, redis_port: 6382, redis_slave: true}

哨兵模式
- hosts: node1
  vars:
   - redis_master_host: '127.0.0.1'
   - redis_master_port: '6383'
  roles:
   - { role: redis, redis_port: 6383, redis_sentinel_port: 26383}
   - { role: redis, redis_port: 6384, redis_sentinel_port: 26384, redis_slave: true}
   - { role: redis, redis_port: 6385, redis_sentinel_port: 26385, redis_slave: true}


 伪集群模式
 - hosts: node1
   vars:
    - redis_cluster: true
    - redis_requirepass: '123456'
   roles:
    - { role: redis, redis_port: 6481}
    - { role: redis, redis_port: 6482}
    - { role: redis, redis_port: 6483}
    - { role: redis, redis_port: 6484}
    - { role: redis, redis_port: 6485}
    - { role: redis, redis_port: 6486, redis_cluster_replicas: '1 127.0.0.1:6481 127.0.0.1:6482 127.0.0.1:6483 127.0.0.1:6484 127.0.0.1:6485 127.0.0.1:6486'}

集群分布式模式
 - hosts: node1
   vars:
    - redis_cluster: true
    - redis_requirepass: '123456'
   roles:
    - { role: redis, redis_port: 7000}
    - { role: redis, redis_port: 7003}

 - hosts: node2
   vars:
    - redis_cluster: true
    - redis_requirepass: '123456'
   roles:
    - { role: redis, redis_port: 7001}
    - { role: redis, redis_port: 7004}

 - hosts: node3
   vars:
    - redis_cluster: true
    - redis_requirepass: '123456'
   roles:
    - { role: redis, redis_port: 7002}
    - { role: redis, redis_port: 7005, redis_cluster_replicas: '1 172.19.204.246:7000 172.19.204.245:7001 172.19.204.244:7002 172.19.204.246:7003 172.19.204.245:7004 172.19.204.244:7005'}

最后更新: 2020-12-03 08:40:01

评论