35 lines
1.1 KiB
Bash
Executable File
35 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# Usage: start.sh valkey|sentinel. Ask peer sentinels for the current master;
|
|
# with no answer (fresh cluster) pod 0 is the master.
|
|
set -eu
|
|
name="$(hostname)"
|
|
sts="${name%-*}"
|
|
self="${name}${DOMAIN_SUFFIX}"
|
|
master=""
|
|
for i in 0 1 2; do
|
|
peer="${sts}-${i}${DOMAIN_SUFFIX}"
|
|
[ "$peer" = "$self" ] && continue
|
|
master="$(timeout 3 valkey-cli -h "$peer" -p 26379 --raw sentinel get-master-addr-by-name rspamd 2>/dev/null | head -n1 || true)"
|
|
[ -n "$master" ] && break
|
|
done
|
|
[ -n "$master" ] || master="${sts}-0${DOMAIN_SUFFIX}"
|
|
|
|
if [ "$1" = sentinel ]; then
|
|
cat > /sentinel/sentinel.conf <<CONF
|
|
port 26379
|
|
protected-mode no
|
|
sentinel resolve-hostnames yes
|
|
sentinel announce-hostnames yes
|
|
sentinel announce-ip $self
|
|
sentinel monitor rspamd $master 6379 2
|
|
sentinel down-after-milliseconds rspamd 5000
|
|
sentinel failover-timeout rspamd 60000
|
|
sentinel parallel-syncs rspamd 1
|
|
CONF
|
|
exec valkey-sentinel /sentinel/sentinel.conf
|
|
fi
|
|
|
|
set -- --dir /data --appendonly yes --protected-mode no --replica-announce-ip "$self"
|
|
[ "$master" = "$self" ] || set -- "$@" --replicaof "$master" 6379
|
|
exec valkey-server "$@"
|