Redis: slave -> replica (#2867)

* Redis: slave -> replica

* Fallback for old Redis versions in CI.
This commit is contained in:
Felix Fontein 2021-06-24 22:33:29 +02:00 committed by GitHub
commit 2d1f5408d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 70 additions and 55 deletions

View file

@ -1,4 +1,4 @@
---
redis_password: PASS
master_port: 6379
slave_port: 6380
replica_port: 6380

View file

@ -33,9 +33,9 @@
- result.info.tcp_port == master_port
- result.info.role == 'master'
- name: redis_info - connect to slave
- name: redis_info - connect to replica
community.general.redis_info:
login_port: "{{ slave_port }}"
login_port: "{{ replica_port }}"
login_password: "{{ redis_password }}"
register: result
@ -43,5 +43,5 @@
that:
- result is not changed
- result.info is defined
- result.info.tcp_port == slave_port
- result.info.tcp_port == replica_port
- result.info.role == 'slave'

View file

@ -22,14 +22,21 @@ redis_module: "{{ (ansible_python_version is version('2.7', '>=')) | ternary('re
redis_password: PASS
old_redis: >-
{{
(ansible_distribution == 'CentOS' and ansible_distribution_major_version|int <= 7) or
(ansible_distribution == 'Ubuntu' and ansible_distribution_major_version|int <= 18) or
(ansible_os_family == 'FreeBSD' and ansible_distribution_major_version|int <= 12)
}}
# Master
master_port: 6379
master_conf: /etc/redis-master.conf
master_datadir: /var/lib/redis-master
master_logdir: /var/log/redis-master
# Slave
slave_port: 6380
slave_conf: /etc/redis-slave.conf
slave_datadir: /var/lib/redis-slave
slave_logdir: /var/log/redis-slave
# Replica
replica_port: 6380
replica_conf: /etc/redis-replica.conf
replica_datadir: /var/lib/redis-replica
replica_logdir: /var/log/redis-replica

View file

@ -1,7 +1,7 @@
- name: stop redis services
shell: |
kill -TERM $(cat /var/run/redis_{{ master_port }}.pid)
kill -TERM $(cat /var/run/redis_{{ slave_port }}.pid)
kill -TERM $(cat /var/run/redis_{{ replica_port }}.pid)
listen: cleanup redis
- name: remove redis packages
@ -27,8 +27,8 @@
- "{{ master_datadir }}"
- "{{ master_logdir }}"
- /var/run/redis_{{ master_port }}.pid
- "{{ slave_conf }}"
- "{{ slave_datadir }}"
- "{{ slave_logdir }}"
- /var/run/redis_{{ slave_port }}.pid
- "{{ replica_conf }}"
- "{{ replica_datadir }}"
- "{{ replica_logdir }}"
- /var/run/redis_{{ replica_port }}.pid
listen: cleanup redis

View file

@ -1,5 +1,5 @@
# We run two servers listening different ports
# to be able to check replication (one server for master, another for slave).
# to be able to check replication (one server for master, another for replica).
- name: Install redis server apt dependencies
apt:
@ -56,8 +56,8 @@
loop:
- "{{ master_datadir }}"
- "{{ master_logdir }}"
- "{{ slave_datadir }}"
- "{{ slave_logdir }}"
- "{{ replica_datadir }}"
- "{{ replica_logdir }}"
- name: Create redis configs
copy:
@ -75,16 +75,16 @@
port: "{{ master_port }}"
logdir: "{{ master_logdir }}"
datadir: "{{ master_datadir }}"
- file: "{{ slave_conf }}"
port: "{{ slave_port }}"
logdir: "{{ slave_logdir }}"
datadir: "{{ slave_datadir }}"
- file: "{{ replica_conf }}"
port: "{{ replica_port }}"
logdir: "{{ replica_logdir }}"
datadir: "{{ replica_datadir }}"
- name: Start redis master
shell: "{{ redis_bin[ansible_distribution] }} {{ master_conf }}"
- name: Start redis slave
shell: "{{ redis_bin[ansible_distribution] }} {{ slave_conf }} --slaveof 127.0.0.1 {{ master_port }}"
- name: Start redis replica
shell: "{{ redis_bin[ansible_distribution] }} {{ replica_conf }} --{% if old_redis %}slaveof{% else %}replicaof{% endif %} 127.0.0.1 {{ master_port }}"
- name: Wait for redis master to be started
ansible.builtin.wait_for:
@ -95,10 +95,10 @@
connect_timeout: 5
timeout: 30
- name: Wait for redis slave to be started
- name: Wait for redis replica to be started
ansible.builtin.wait_for:
host: 127.0.0.1
port: "{{ slave_port }}"
port: "{{ replica_port }}"
state: started
delay: 1
connect_timeout: 5