Redisクラスタインストール構成
6855 ワード
1.環境及びディレクトリの準備
echo never >/sys/kernel/mm/transparent_hugepage/enabled vi/etc/sysctl.conf # Redis
net.core.somaxconn= 1024
vm.overcommit_memory = 1
sysctl-pmkdir-p/usr/local/redis/bin mkdir-p/usr/usr/local/redis/confmkdir-p/usr/local/redis/redis/logs mkdir-p/usr/local/redis/data mkdir-p/usr/usr/local/redis/redis/data/7000 0/mkdir-p/usr/usr/local/local/redis/local/redis/redis/data/7001/mkdir-p/usr/usr/usr/local/redis/data/702/mkdir-p/mkdir-p/kdir-p/kkdi/usr/local/redis/data/7003/mkdir-p/usr/local/redis/data/7004/mkdir-p/usr/local/redis/data/7005/本クラスタのデフォルトは6ノード、3メイン3スレーブです.
2.コンパイルインストール
wget http://download.redis.io/releases/redis-5.0.4.tar.gz tar xzf redis-5.0.4.tar.gz cd redis-5.0.4 make make install mv/usr/local/bin/redis-*/usr/local/redis/bin/
3.クラスタ構成
3.1ノード1 vi/usr/local/redis/conf/redis_の構成7000.conf bind 127.0.0.1
protected-mode no
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
tcp-backlog 511
timeout 3000
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_7000.pid
loglevel notice
logfile /usr/local/redis/logs/redis_7000.log
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /usr/local/redis/data/7000/
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
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
3.2ノード2-6同ノード1を構成し、以下の構成vi/usr/local/redis/conf/redis_を変更する7001.conf port 7001
pidfile /var/run/redis_7001.pid
logfile /usr/local/redis/logs/redis_7001.log
dir /usr/local/redis/data/7001/
vi/usr/local/redis/conf/redis_7002.conf port 7002
pidfile /var/run/redis_7002.pid
logfile /usr/local/redis/logs/redis_7002.log
dir /usr/local/redis/data/7002/
vi/usr/local/redis/conf/redis_7003.conf port 7003
pidfile /var/run/redis_7003.pid
logfile /usr/local/redis/logs/redis_7003.log
dir /usr/local/redis/data/7003/
vi/usr/local/redis/conf/redis_7004.conf port 7004
pidfile /var/run/redis_7004.pid
logfile /usr/local/redis/logs/redis_7004.log
dir /usr/local/redis/data/7004/
vi/usr/local/redis/conf/redis_7005.conf port 7005
pidfile /var/run/redis_7005.pid
logfile /usr/local/redis/logs/redis_7005.log
dir /usr/local/redis/data/7005/
4.クラスタの管理
4.1管理スクリプトvi/usr/local/redis/redis-manageの作成#!/bin/bash
# Settings
PORT=7000
TIMEOUT=2000
NODES=6
REPLICAS=1
REDIS_PATH=/usr/local/redis
# 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
echo "Starting $PORT"
${REDIS_PATH}/bin/redis-server ${REDIS_PATH}/conf/redis_${PORT}.conf
PORT=$((PORT+1))
done
exit 0
fi
if [ "$1" == "create" ]
then
HOSTS=""
while [ $((PORT < ENDPORT)) != "0" ]; do
HOSTS="$HOSTS 127.0.0.1:$PORT"
PORT=$((PORT+1))
done
${REDIS_PATH}/bin/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS
exit 0
fi
if [ "$1" == "stop" ]
then
while [ $((PORT < ENDPORT)) != "0" ]; do
echo "Stopping $PORT"
${REDIS_PATH}/bin/redis-cli -p $PORT shutdown nosave
PORT=$((PORT+1))
done
exit 0
fi
if [ "$1" == "watch" ]
then
while [ 1 ]; do
clear
date
${REDIS_PATH}/bin/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 ${REDIS_PATH}/logs/redis_${PORT}.log
exit 0
fi
if [ "$1" == "call" ]
then
while [ $((PORT < ENDPORT)) != "0" ]; do
${REDIS_PATH}/bin/redis-cli -p $PORT $2 $3 $4 $5 $6 $7 $8 $9
PORT=$((PORT+1))
done
exit 0
fi
if [ "$1" == "clean" ]
then
rm -rf ${REDIS_PATH}/logs/*.log
rm -rf ${REDIS_PATH}/data/*/appendonly.aof
rm -rf ${REDIS_PATH}/data/*/dump.rdb
rm -rf ${REDIS_PATH}/data/*/nodes.conf
exit 0
fi
if [ "$1" == "clean-logs" ]
then
rm -rf ${REDIS_PATH}/logs/*.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 -- Run tail -f of instance at base port + ID."
echo "clean -- Remove all instances data, logs, configs."
echo "clean-logs -- Remove just instances logs."
4.2スクリプト変更実行可能権限chmod a+x/usr/local/redis/redis-manage 4.3 Redis/usr/local/redis/redis/redis/redis-manage start 4.4クラスタ/usr/local/redis/redis/redis- manage create 4.5 Redis/usr/local/redis/redis-manage stop 4.6クラスタ状態の監視/usr/local/redis/redis/redis/redis/redis/redis-manage watch 4.7クラスタノードログの表示/usr/local/redis/redis-manage tail 0/usr/local/redisr/redis/redis/redis-manage tail/redis-manage tail 1/usr/locAl/redis/redis-manage tail 2/usr/local/redis/redis-manage tail 3/usr/local/redis/redis-manage tail 4/usr/local/redis/redis-manage tail 5 4.8クラスタノードデータ、ログ、構成/usr/local/redis/redis-manage clean 4.9クラスタノードログ/usr/local/redis/redis-manage cleanのみクリア
# Redis
net.core.somaxconn= 1024
vm.overcommit_memory = 1
wget http://download.redis.io/releases/redis-5.0.4.tar.gz tar xzf redis-5.0.4.tar.gz cd redis-5.0.4 make make install mv/usr/local/bin/redis-*/usr/local/redis/bin/
3.クラスタ構成
3.1ノード1 vi/usr/local/redis/conf/redis_の構成7000.conf bind 127.0.0.1
protected-mode no
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
tcp-backlog 511
timeout 3000
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_7000.pid
loglevel notice
logfile /usr/local/redis/logs/redis_7000.log
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /usr/local/redis/data/7000/
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
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
3.2ノード2-6同ノード1を構成し、以下の構成vi/usr/local/redis/conf/redis_を変更する7001.conf port 7001
pidfile /var/run/redis_7001.pid
logfile /usr/local/redis/logs/redis_7001.log
dir /usr/local/redis/data/7001/
vi/usr/local/redis/conf/redis_7002.conf port 7002
pidfile /var/run/redis_7002.pid
logfile /usr/local/redis/logs/redis_7002.log
dir /usr/local/redis/data/7002/
vi/usr/local/redis/conf/redis_7003.conf port 7003
pidfile /var/run/redis_7003.pid
logfile /usr/local/redis/logs/redis_7003.log
dir /usr/local/redis/data/7003/
vi/usr/local/redis/conf/redis_7004.conf port 7004
pidfile /var/run/redis_7004.pid
logfile /usr/local/redis/logs/redis_7004.log
dir /usr/local/redis/data/7004/
vi/usr/local/redis/conf/redis_7005.conf port 7005
pidfile /var/run/redis_7005.pid
logfile /usr/local/redis/logs/redis_7005.log
dir /usr/local/redis/data/7005/
4.クラスタの管理
4.1管理スクリプトvi/usr/local/redis/redis-manageの作成#!/bin/bash
# Settings
PORT=7000
TIMEOUT=2000
NODES=6
REPLICAS=1
REDIS_PATH=/usr/local/redis
# 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
echo "Starting $PORT"
${REDIS_PATH}/bin/redis-server ${REDIS_PATH}/conf/redis_${PORT}.conf
PORT=$((PORT+1))
done
exit 0
fi
if [ "$1" == "create" ]
then
HOSTS=""
while [ $((PORT < ENDPORT)) != "0" ]; do
HOSTS="$HOSTS 127.0.0.1:$PORT"
PORT=$((PORT+1))
done
${REDIS_PATH}/bin/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS
exit 0
fi
if [ "$1" == "stop" ]
then
while [ $((PORT < ENDPORT)) != "0" ]; do
echo "Stopping $PORT"
${REDIS_PATH}/bin/redis-cli -p $PORT shutdown nosave
PORT=$((PORT+1))
done
exit 0
fi
if [ "$1" == "watch" ]
then
while [ 1 ]; do
clear
date
${REDIS_PATH}/bin/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 ${REDIS_PATH}/logs/redis_${PORT}.log
exit 0
fi
if [ "$1" == "call" ]
then
while [ $((PORT < ENDPORT)) != "0" ]; do
${REDIS_PATH}/bin/redis-cli -p $PORT $2 $3 $4 $5 $6 $7 $8 $9
PORT=$((PORT+1))
done
exit 0
fi
if [ "$1" == "clean" ]
then
rm -rf ${REDIS_PATH}/logs/*.log
rm -rf ${REDIS_PATH}/data/*/appendonly.aof
rm -rf ${REDIS_PATH}/data/*/dump.rdb
rm -rf ${REDIS_PATH}/data/*/nodes.conf
exit 0
fi
if [ "$1" == "clean-logs" ]
then
rm -rf ${REDIS_PATH}/logs/*.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 -- Run tail -f of instance at base port + ID."
echo "clean -- Remove all instances data, logs, configs."
echo "clean-logs -- Remove just instances logs."
4.2スクリプト変更実行可能権限chmod a+x/usr/local/redis/redis-manage 4.3 Redis/usr/local/redis/redis/redis/redis-manage start 4.4クラスタ/usr/local/redis/redis/redis- manage create 4.5 Redis/usr/local/redis/redis-manage stop 4.6クラスタ状態の監視/usr/local/redis/redis/redis/redis/redis/redis-manage watch 4.7クラスタノードログの表示/usr/local/redis/redis-manage tail 0/usr/local/redisr/redis/redis/redis-manage tail/redis-manage tail 1/usr/locAl/redis/redis-manage tail 2/usr/local/redis/redis-manage tail 3/usr/local/redis/redis-manage tail 4/usr/local/redis/redis-manage tail 5 4.8クラスタノードデータ、ログ、構成/usr/local/redis/redis-manage clean 4.9クラスタノードログ/usr/local/redis/redis-manage cleanのみクリア
bind 127.0.0.1
protected-mode no
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
tcp-backlog 511
timeout 3000
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_7000.pid
loglevel notice
logfile /usr/local/redis/logs/redis_7000.log
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /usr/local/redis/data/7000/
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
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
port 7001
pidfile /var/run/redis_7001.pid
logfile /usr/local/redis/logs/redis_7001.log
dir /usr/local/redis/data/7001/
port 7002
pidfile /var/run/redis_7002.pid
logfile /usr/local/redis/logs/redis_7002.log
dir /usr/local/redis/data/7002/
port 7003
pidfile /var/run/redis_7003.pid
logfile /usr/local/redis/logs/redis_7003.log
dir /usr/local/redis/data/7003/
port 7004
pidfile /var/run/redis_7004.pid
logfile /usr/local/redis/logs/redis_7004.log
dir /usr/local/redis/data/7004/
port 7005
pidfile /var/run/redis_7005.pid
logfile /usr/local/redis/logs/redis_7005.log
dir /usr/local/redis/data/7005/
4.1管理スクリプトvi/usr/local/redis/redis-manageの作成
#!/bin/bash
# Settings
PORT=7000
TIMEOUT=2000
NODES=6
REPLICAS=1
REDIS_PATH=/usr/local/redis
# 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
echo "Starting $PORT"
${REDIS_PATH}/bin/redis-server ${REDIS_PATH}/conf/redis_${PORT}.conf
PORT=$((PORT+1))
done
exit 0
fi
if [ "$1" == "create" ]
then
HOSTS=""
while [ $((PORT < ENDPORT)) != "0" ]; do
HOSTS="$HOSTS 127.0.0.1:$PORT"
PORT=$((PORT+1))
done
${REDIS_PATH}/bin/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS
exit 0
fi
if [ "$1" == "stop" ]
then
while [ $((PORT < ENDPORT)) != "0" ]; do
echo "Stopping $PORT"
${REDIS_PATH}/bin/redis-cli -p $PORT shutdown nosave
PORT=$((PORT+1))
done
exit 0
fi
if [ "$1" == "watch" ]
then
while [ 1 ]; do
clear
date
${REDIS_PATH}/bin/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 ${REDIS_PATH}/logs/redis_${PORT}.log
exit 0
fi
if [ "$1" == "call" ]
then
while [ $((PORT < ENDPORT)) != "0" ]; do
${REDIS_PATH}/bin/redis-cli -p $PORT $2 $3 $4 $5 $6 $7 $8 $9
PORT=$((PORT+1))
done
exit 0
fi
if [ "$1" == "clean" ]
then
rm -rf ${REDIS_PATH}/logs/*.log
rm -rf ${REDIS_PATH}/data/*/appendonly.aof
rm -rf ${REDIS_PATH}/data/*/dump.rdb
rm -rf ${REDIS_PATH}/data/*/nodes.conf
exit 0
fi
if [ "$1" == "clean-logs" ]
then
rm -rf ${REDIS_PATH}/logs/*.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 -- Run tail -f of instance at base port + ID."
echo "clean -- Remove all instances data, logs, configs."
echo "clean-logs -- Remove just instances logs."
4.2スクリプト変更実行可能権限chmod a+x/usr/local/redis/redis-manage 4.3 Redis/usr/local/redis/redis/redis/redis-manage start 4.4クラスタ/usr/local/redis/redis/redis- manage create 4.5 Redis/usr/local/redis/redis-manage stop 4.6クラスタ状態の監視/usr/local/redis/redis/redis/redis/redis/redis-manage watch 4.7クラスタノードログの表示/usr/local/redis/redis-manage tail 0/usr/local/redisr/redis/redis/redis-manage tail/redis-manage tail 1/usr/locAl/redis/redis-manage tail 2/usr/local/redis/redis-manage tail 3/usr/local/redis/redis-manage tail 4/usr/local/redis/redis-manage tail 5 4.8クラスタノードデータ、ログ、構成/usr/local/redis/redis-manage clean 4.9クラスタノードログ/usr/local/redis/redis-manage cleanのみクリア