Add KeyDB (Redis clone) to configuration

Replaces Redis for PVC >= 0.9.81
This commit is contained in:
Joshua Boniface 2023-11-05 19:22:19 -05:00
parent 2f9603c82f
commit 523f7da71e
4 changed files with 128 additions and 0 deletions

View File

@ -21,6 +21,12 @@
state: restarted state: restarted
ignore_errors: yes ignore_errors: yes
- name: restart keydb
service:
name: keydb-server
state: restarted
ignore_errors: yes
# Restart services one-at-a-time # Restart services one-at-a-time
# Ideally, this would be accomplished by a serial=1, but Ansible doesn't support that and # Ideally, this would be accomplished by a serial=1, but Ansible doesn't support that and
# likely never will. Instead, we just run the service restart manually, waiting X seconds # likely never will. Instead, we just run the service restart manually, waiting X seconds

View File

@ -0,0 +1,39 @@
---
- name: remove redis packages via apt
apt:
name:
- redis
- redis-server
- redis-tools
state: absent
purge: yes
- name: install keydb packages via apt
apt:
name:
- keydb
state: latest
update-cache: yes
register: apt_res
retries: 5
until: apt_res is success
- name: install keydb configuration file
template:
src: keydb/keydb.conf.j2
dest: /etc/keydb/keydb.conf
owner: keydb
group: keydb
mode: 0640
notify: restart keydb
- name: start but disable services (managed by PVC)
service:
name: "{{ item }}"
state: started
enabled: no
ignore_errors: yes
with_items:
- keydb-server
- meta: flush_handlers

View File

@ -45,6 +45,10 @@
tags: pvc-patroni tags: pvc-patroni
when: is_coordinator when: is_coordinator
- include: keydb/main.yml
tags: pvc-keydb
when: is_coordinator
# Install core services # Install core services
- include: libvirt/main.yml - include: libvirt/main.yml
tags: pvc-libvirt tags: pvc-libvirt

View File

@ -0,0 +1,79 @@
bind 0.0.0.0
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
pidfile /var/run/keydb/keydb-server.pid
loglevel notice
logfile /var/log/keydb/keydb-server.log
databases 16
always-show-logo yes
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
save 5 1
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir /var/lib/keydb
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
server-threads 2
replica-weighting-factor 2
# Enable multi-master replication
multi-master yes
active-replica yes
{% for node in pvc_nodes if node.is_coordinator and node.hostname != ansible_hostname %}
replicaof {{ node.cluster_ip }} 6379
{% endfor %}