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一樣,為了保證效率,數據都是緩存在內存中。區(qū)別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。
官方地址: https://redis.io/
官方文檔地址:https://redis.io/documentation
要求
此角色僅在RHEL及其衍生產品上運行。
測試環(huán)境
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節(jié)點分配一個slave節(jié)點, 上面有6個節(jié)點,程序會按照一定規(guī)則生成 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('') }}"
依賴
java ruby
github地址
https://github.com/kuailemy123/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'}