Redis 主从集群+哨兵模式 的启动脚本、配置
parent
9d9c2e72b6
commit
42f2b4ea8a
|
@ -0,0 +1,8 @@
|
||||||
|
port 26381
|
||||||
|
daemonize yes
|
||||||
|
sentinel monitor redis-master 172.22.6.3 6381 2
|
||||||
|
sentinel down-after-milliseconds redis-master 5000
|
||||||
|
sentinel failover-timeout redis-master 900000
|
||||||
|
sentinel parallel-syncs redis-master 1
|
||||||
|
#sentinel auth-pass redis-master 123456
|
||||||
|
logfile /usr/local/redis/conf/26381/26381.log
|
|
@ -0,0 +1,8 @@
|
||||||
|
port 26382
|
||||||
|
daemonize yes
|
||||||
|
sentinel monitor redis-master 172.22.6.3 6382 2
|
||||||
|
sentinel down-after-milliseconds redis-master 5000
|
||||||
|
sentinel failover-timeout redis-master 900000
|
||||||
|
sentinel parallel-syncs redis-master 1
|
||||||
|
#sentinel auth-pass redis-master 123456
|
||||||
|
logfile /usr/local/redis/conf/26382/26382.log
|
|
@ -0,0 +1,8 @@
|
||||||
|
port 26383
|
||||||
|
daemonize yes
|
||||||
|
sentinel monitor redis-master 172.22.6.3 6383 2
|
||||||
|
sentinel down-after-milliseconds redis-master 5000
|
||||||
|
sentinel failover-timeout redis-master 900000
|
||||||
|
sentinel parallel-syncs redis-master 1
|
||||||
|
#sentinel auth-pass redis-master 123456
|
||||||
|
logfile /usr/local/redis/conf/26383/26383.log
|
|
@ -3,10 +3,10 @@ bind 0.0.0.0
|
||||||
daemonize yes
|
daemonize yes
|
||||||
|
|
||||||
cluster-enabled yes
|
cluster-enabled yes
|
||||||
cluster-config-file /usr/local/redis/cluster/6381/6381.conf
|
cluster-config-file /usr/local/redis/conf/6381/6381.conf
|
||||||
cluster-node-timeout 10000
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
appendonly yes
|
appendonly yes
|
||||||
dir /usr/local/redis/cluster/6381
|
dir /usr/local/redis/conf/6381
|
||||||
pidfile /var/run/redis/redis-6381.pid
|
pidfile /usr/local/redis/conf/6381/6381.pid
|
||||||
logfile /usr/local/redis/cluster/6381/6381.log
|
logfile /usr/local/redis/conf/6381/6381.log
|
||||||
|
|
|
@ -3,10 +3,10 @@ bind 0.0.0.0
|
||||||
daemonize yes
|
daemonize yes
|
||||||
|
|
||||||
cluster-enabled yes
|
cluster-enabled yes
|
||||||
cluster-config-file /usr/local/redis/cluster/6382/6382.conf
|
cluster-config-file /usr/local/redis/conf/6382/6382.conf
|
||||||
cluster-node-timeout 10000
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
appendonly yes
|
appendonly yes
|
||||||
dir /usr/local/redis/cluster/6382
|
dir /usr/local/redis/conf/6382
|
||||||
pidfile /var/run/redis/redis-6382.pid
|
pidfile /usr/local/redis/conf/6382/6382.pid
|
||||||
logfile /usr/local/redis/cluster/6382/6382.log
|
logfile /usr/local/redis/conf/6382/6382.log
|
||||||
|
|
|
@ -3,10 +3,10 @@ bind 0.0.0.0
|
||||||
daemonize yes
|
daemonize yes
|
||||||
|
|
||||||
cluster-enabled yes
|
cluster-enabled yes
|
||||||
cluster-config-file /usr/local/redis/cluster/6383/6383.conf
|
cluster-config-file /usr/local/redis/conf/6383/6383.conf
|
||||||
cluster-node-timeout 10000
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
appendonly yes
|
appendonly yes
|
||||||
dir /usr/local/redis/cluster/6383
|
dir /usr/local/redis/conf/6383
|
||||||
pidfile /var/run/redis/redis-6383.pid
|
pidfile /usr/local/redis/conf/6383/6383.pid
|
||||||
logfile /usr/local/redis/cluster/6383/6383.log
|
logfile /usr/local/redis/conf/6383/6383.log
|
||||||
|
|
|
@ -3,10 +3,10 @@ bind 0.0.0.0
|
||||||
daemonize yes
|
daemonize yes
|
||||||
|
|
||||||
cluster-enabled yes
|
cluster-enabled yes
|
||||||
cluster-config-file /usr/local/redis/cluster/6384/6384.conf
|
cluster-config-file /usr/local/redis/conf/6384/6384.conf
|
||||||
cluster-node-timeout 10000
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
appendonly yes
|
appendonly yes
|
||||||
dir /usr/local/redis/cluster/6384
|
dir /usr/local/redis/conf/6384
|
||||||
pidfile /var/run/redis/redis-6384.pid
|
pidfile /usr/local/redis/conf/6384/6384.pid
|
||||||
logfile /usr/local/redis/cluster/6384/6384.log
|
logfile /usr/local/redis/conf/6384/6384.log
|
||||||
|
|
|
@ -3,10 +3,10 @@ bind 0.0.0.0
|
||||||
daemonize yes
|
daemonize yes
|
||||||
|
|
||||||
cluster-enabled yes
|
cluster-enabled yes
|
||||||
cluster-config-file /usr/local/redis/cluster/6385/6385.conf
|
cluster-config-file /usr/local/redis/conf/6385/6385.conf
|
||||||
cluster-node-timeout 10000
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
appendonly yes
|
appendonly yes
|
||||||
dir /usr/local/redis/cluster/6385
|
dir /usr/local/redis/conf/6385
|
||||||
pidfile /var/run/redis/redis-6385.pid
|
pidfile /usr/local/redis/conf/6385/6385.pid
|
||||||
logfile /usr/local/redis/cluster/6385/6385.log
|
logfile /usr/local/redis/conf/6385/6385.log
|
||||||
|
|
|
@ -3,10 +3,10 @@ bind 0.0.0.0
|
||||||
daemonize yes
|
daemonize yes
|
||||||
|
|
||||||
cluster-enabled yes
|
cluster-enabled yes
|
||||||
cluster-config-file /usr/local/redis/cluster/6386/6386.conf
|
cluster-config-file /usr/local/redis/conf/6386/6386.conf
|
||||||
cluster-node-timeout 10000
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
appendonly yes
|
appendonly yes
|
||||||
dir /usr/local/redis/cluster/6386
|
dir /usr/local/redis/conf/6386
|
||||||
pidfile /var/run/redis/redis-6386.pid
|
pidfile /usr/local/redis/conf/6386/6386.pid
|
||||||
logfile /usr/local/redis/cluster/6386/6386.log
|
logfile /usr/local/redis/conf/6386/6386.log
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
port 6387
|
||||||
|
bind 0.0.0.0
|
||||||
|
daemonize yes
|
||||||
|
|
||||||
|
cluster-enabled yes
|
||||||
|
cluster-config-file /usr/local/redis/conf/6387/6387.conf
|
||||||
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
|
appendonly yes
|
||||||
|
dir /usr/local/redis/conf/6387
|
||||||
|
pidfile /usr/local/redis/conf/6387/6387.pid
|
||||||
|
logfile /usr/local/redis/conf/6387/6387.log
|
|
@ -0,0 +1,12 @@
|
||||||
|
port 6388
|
||||||
|
bind 0.0.0.0
|
||||||
|
daemonize yes
|
||||||
|
|
||||||
|
cluster-enabled yes
|
||||||
|
cluster-config-file /usr/local/redis/conf/6388/6388.conf
|
||||||
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
|
appendonly yes
|
||||||
|
dir /usr/local/redis/conf/6388
|
||||||
|
pidfile /usr/local/redis/conf/6388/6388.pid
|
||||||
|
logfile /usr/local/redis/conf/6388/6388.log
|
|
@ -0,0 +1,12 @@
|
||||||
|
port 6389
|
||||||
|
bind 0.0.0.0
|
||||||
|
daemonize yes
|
||||||
|
|
||||||
|
cluster-enabled yes
|
||||||
|
cluster-config-file /usr/local/redis/conf/6389/6389.conf
|
||||||
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
|
appendonly yes
|
||||||
|
dir /usr/local/redis/conf/6389
|
||||||
|
pidfile /usr/local/redis/conf/6389/6389.pid
|
||||||
|
logfile /usr/local/redis/conf/6389/6389.log
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Redis 集群配置
|
||||||
|
|
||||||
|
## 使用方式
|
||||||
|
|
||||||
|
集群拓扑:
|
||||||
|
|
||||||
|
- 三主六从,每个主节点有两个从节点。
|
||||||
|
- 三哨兵,分别监听其中一个主节点。
|
||||||
|
|
||||||
|
启动方式:
|
||||||
|
|
||||||
|
- 先执行 start-cluster.sh,会自动根据 6381 ~ 6389 目录启动服务器,并将其配置为集群。
|
||||||
|
- 再执行 start-sentinel.sh,会根据 26381 ~ 26383 目录启动哨兵,监听集群中的三个主节点。
|
||||||
|
|
||||||
|
## 配置
|
||||||
|
|
||||||
|
(1)集群服务器配置 redis.conf
|
||||||
|
|
||||||
|
```
|
||||||
|
port 6381
|
||||||
|
bind 0.0.0.0
|
||||||
|
daemonize yes
|
||||||
|
|
||||||
|
cluster-enabled yes
|
||||||
|
cluster-config-file /usr/local/redis/conf/6381/6381.conf
|
||||||
|
cluster-node-timeout 10000
|
||||||
|
|
||||||
|
appendonly yes
|
||||||
|
dir /usr/local/redis/conf/6381
|
||||||
|
pidfile /usr/local/redis/conf/6381/6381.pid
|
||||||
|
logfile /usr/local/redis/conf/6381/6381.log
|
||||||
|
```
|
||||||
|
|
||||||
|
端口号、配置目录(`/usr/local/redis/conf`)根据实际情况修改。
|
||||||
|
|
||||||
|
(2)哨兵服务器配置 sentinel.conf
|
||||||
|
|
||||||
|
```
|
||||||
|
port 26383
|
||||||
|
daemonize yes
|
||||||
|
sentinel monitor redis-master 172.22.6.3 6383 2
|
||||||
|
sentinel down-after-milliseconds redis-master 5000
|
||||||
|
sentinel failover-timeout redis-master 900000
|
||||||
|
sentinel parallel-syncs redis-master 1
|
||||||
|
#sentinel auth-pass redis-master 123456
|
||||||
|
logfile /usr/local/redis/conf/26383/26383.log
|
||||||
|
```
|
||||||
|
|
||||||
|
端口号、配置目录(`/usr/local/redis/conf`)根据实际情况修改。
|
||||||
|
|
||||||
|
最重要的配置在于:sentinel monitor redis-master 172.22.6.3 6383 2
|
||||||
|
|
||||||
|
表示监听的服务器集群名叫 redis-master,当前哨兵监听的服务器节点是:172.22.6.3:6383,这个节点如果是主节点,一旦宕机,选举新的主节点,需要至少 2 个哨兵同意。
|
|
@ -0,0 +1,102 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Settings
|
||||||
|
PORT=6380
|
||||||
|
TIMEOUT=2000
|
||||||
|
NODES=6
|
||||||
|
REPLICAS=1
|
||||||
|
|
||||||
|
# You may want to put the above config parameters into config.sh in order to
|
||||||
|
# override the defaults without modifying this script.
|
||||||
|
|
||||||
|
if [ -a config.sh ]
|
||||||
|
then
|
||||||
|
source "config.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Computed vars
|
||||||
|
ENDPORT=$((PORT+NODES))
|
||||||
|
|
||||||
|
if [ "$1" == "start" ]
|
||||||
|
then
|
||||||
|
while [ $((PORT < ENDPORT)) != "0" ]; do
|
||||||
|
PORT=$((PORT+1))
|
||||||
|
echo "Starting $PORT"
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/${PORT}/redis.conf
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "create" ]
|
||||||
|
then
|
||||||
|
HOSTS=""
|
||||||
|
while [ $((PORT < ENDPORT)) != "0" ]; do
|
||||||
|
PORT=$((PORT+1))
|
||||||
|
HOSTS="$HOSTS 127.0.0.1:$PORT"
|
||||||
|
done
|
||||||
|
/opt/redis/src/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "stop" ]
|
||||||
|
then
|
||||||
|
while [ $((PORT < ENDPORT)) != "0" ]; do
|
||||||
|
PORT=$((PORT+1))
|
||||||
|
echo "Stopping $PORT"
|
||||||
|
/opt/redis/src/redis-cli -p $PORT shutdown nosave
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "watch" ]
|
||||||
|
then
|
||||||
|
PORT=$((PORT+1))
|
||||||
|
while [ 1 ]; do
|
||||||
|
clear
|
||||||
|
date
|
||||||
|
/opt/redis/src/redis-cli -p $PORT cluster nodes | head -30
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "tail" ]
|
||||||
|
then
|
||||||
|
INSTANCE=$2
|
||||||
|
PORT=$((PORT+INSTANCE))
|
||||||
|
tail -f ${PORT}.log
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "call" ]
|
||||||
|
then
|
||||||
|
while [ $((PORT < ENDPORT)) != "0" ]; do
|
||||||
|
PORT=$((PORT+1))
|
||||||
|
/opt/redis/src/redis-cli -p $PORT $2 $3 $4 $5 $6 $7 $8 $9
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "clean" ]
|
||||||
|
then
|
||||||
|
rm -rf *.log
|
||||||
|
rm -rf appendonly*.aof
|
||||||
|
rm -rf dump*.rdb
|
||||||
|
rm -rf nodes*.conf
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "clean-logs" ]
|
||||||
|
then
|
||||||
|
rm -rf *.log
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Usage: $0 [start|create|stop|watch|tail|clean]"
|
||||||
|
echo "start -- Launch Redis Cluster instances."
|
||||||
|
echo "create -- Create a cluster using redis-cli --cluster create."
|
||||||
|
echo "stop -- Stop Redis Cluster instances."
|
||||||
|
echo "watch -- Show CLUSTER NODES output (first 30 lines) of first node."
|
||||||
|
echo "tail <id> -- Run tail -f of instance at base port + ID."
|
||||||
|
echo "clean -- Remove all instances data, logs, configs."
|
||||||
|
echo "clean-logs -- Remove just instances logs."
|
|
@ -1,104 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------------
|
|
||||||
# 控制台颜色
|
|
||||||
BLACK="\033[1;30m"
|
|
||||||
RED="\033[1;31m"
|
|
||||||
GREEN="\033[1;32m"
|
|
||||||
YELLOW="\033[1;33m"
|
|
||||||
BLUE="\033[1;34m"
|
|
||||||
PURPLE="\033[1;35m"
|
|
||||||
CYAN="\033[1;36m"
|
|
||||||
RESET="$(tput sgr0)"
|
|
||||||
# ---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
printf "${BLUE}\n"
|
|
||||||
cat << EOF
|
|
||||||
###################################################################################
|
|
||||||
# Redis 集群控制脚本
|
|
||||||
# @system: 适用于 CentOS7+
|
|
||||||
# @author: Zhang Peng
|
|
||||||
###################################################################################
|
|
||||||
EOF
|
|
||||||
printf "${RESET}\n"
|
|
||||||
|
|
||||||
# Settings
|
|
||||||
PORT=6380
|
|
||||||
NODES=6
|
|
||||||
ENDPORT=$((PORT + NODES))
|
|
||||||
TIMEOUT=2000
|
|
||||||
REPLICAS=0
|
|
||||||
PATH="/usr/local/redis"
|
|
||||||
|
|
||||||
######################################## MAIN ########################################
|
|
||||||
printf "${PURPLE}\n"
|
|
||||||
printf "Usage: $0 [start|create|stop|watch|tail|clean]\n"
|
|
||||||
printf "start -- Launch Redis Cluster instances.\n"
|
|
||||||
printf "create -- Create a cluster using redis-cli --cluster create.\n"
|
|
||||||
printf "stop -- Stop Redis Cluster instances.\n"
|
|
||||||
printf "watch -- Show CLUSTER NODES output (first 30 lines) of first node.\n"
|
|
||||||
printf "tail <id> -- Run tail -f of instance at base port + ID.\n"
|
|
||||||
printf "clean -- Remove all instances data, logs, configs.\n"
|
|
||||||
printf "clean-logs -- Remove just instances logs.\n"
|
|
||||||
printf "${RESET}\n"
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
"start")
|
|
||||||
while [[ $((PORT < ENDPORT)) != "0" ]]; do
|
|
||||||
PORT=$((PORT + 1))
|
|
||||||
echo "Starting $PORT"
|
|
||||||
if [[ -e "${PATH}/cluster/${PORT}/redis.conf" ]]; then
|
|
||||||
${PATH}/src/redis-server "${PATH}/cluster/${PORT}/redis.conf"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
"create")
|
|
||||||
HOSTS=""
|
|
||||||
while [[ $((PORT < ENDPORT)) != "0" ]]; do
|
|
||||||
PORT=$((PORT + 1))
|
|
||||||
HOSTS="$HOSTS 127.0.0.1:$PORT"
|
|
||||||
done
|
|
||||||
${PATH}/src/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS
|
|
||||||
;;
|
|
||||||
"stop")
|
|
||||||
while [[ $((PORT < ENDPORT)) != "0" ]]; do
|
|
||||||
PORT=$((PORT + 1))
|
|
||||||
echo "Stopping $PORT"
|
|
||||||
${PATH}/src/redis-cli -p $PORT shutdown nosave
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
"watch")
|
|
||||||
PORT=$((PORT + 1))
|
|
||||||
while [[ 1 ]]; do
|
|
||||||
clear
|
|
||||||
date
|
|
||||||
${PATH}/src/redis-cli -p $PORT cluster nodes | head -30
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
"tail")
|
|
||||||
INSTANCE=$2
|
|
||||||
PORT=$((PORT + INSTANCE))
|
|
||||||
tail -f ${PORT}.log
|
|
||||||
;;
|
|
||||||
"call")
|
|
||||||
while [[ $((PORT < ENDPORT)) != "0" ]]; do
|
|
||||||
PORT=$((PORT + 1))
|
|
||||||
${PATH}/src/redis-cli -p $PORT $2 $3 $4 $5 $6 $7 $8 $9
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
"clean")
|
|
||||||
rm -rf **/*.log
|
|
||||||
rm -rf **/appendonly*.aof
|
|
||||||
rm -rf **/dump*.rdb
|
|
||||||
rm -rf **/nodes*.conf
|
|
||||||
;;
|
|
||||||
"clean-logs")
|
|
||||||
rm -rf **/*.log
|
|
||||||
;;
|
|
||||||
"exit")
|
|
||||||
printf "${RED}Invalid option!${RESET}\n"
|
|
||||||
main
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/6381/redis.conf
|
||||||
|
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/6382/redis.conf
|
||||||
|
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/6383/redis.conf
|
||||||
|
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/6384/redis.conf
|
||||||
|
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/6385/redis.conf
|
||||||
|
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/6386/redis.conf
|
||||||
|
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/6387/redis.conf
|
||||||
|
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/6388/redis.conf
|
||||||
|
|
||||||
|
/opt/redis/src/redis-server /usr/local/redis/conf/6389/redis.conf
|
||||||
|
|
||||||
|
/opt/redis/src/redis-cli --cluster create 172.22.6.3:6381 172.22.6.3:6382 172.22.6.3:6383 172.22.6.3:6384 172.22.6.3:6385 172.22.6.3:6386 172.22.6.3:6387 172.22.6.3:6388 172.22.6.3:6389 --cluster-replicas 2
|
|
@ -0,0 +1,3 @@
|
||||||
|
/opt/redis/src/redis-sentinel /usr/local/redis/conf/26381/sentinel.conf
|
||||||
|
/opt/redis/src/redis-sentinel /usr/local/redis/conf/26382/sentinel.conf
|
||||||
|
/opt/redis/src/redis-sentinel /usr/local/redis/conf/26383/sentinel.conf
|
Loading…
Reference in New Issue