Redis主从部署文档20141216
Redis主从部署文档20141216
===================================================================
http://www.redis.io/download
https://code.google.com/p/redis/downloads/list
===================================================================
http://www.redis.io/download
https://code.google.com/p/redis/downloads/list
===================================================================
Redis-Master部署
Redis-Master部署
yum install -y tcl
mkdir -p /tools/redis
cd /tools/redis
wget http://download.redis.io/releases/redis-2.8.19.tar.gz
tar zvfx redis-2.8.19.tar.gz
cd redis-2.8.19
make
cd /tools/redis
wget http://download.redis.io/releases/redis-2.8.19.tar.gz
tar zvfx redis-2.8.19.tar.gz
cd redis-2.8.19
make
make test
mkdir -p /usr/local/redis/6379/{etc,bin}
/bin/cp -r src/* /usr/local/redis/6379/bin/
mkdir -p /usr/local/redis/6379/{etc,bin}
/bin/cp -r src/* /usr/local/redis/6379/bin/
/bin/cp redis.conf /usr/local/redis/6379/etc/
cd /usr/local/redis/6379/etc/
/bin/cp redis.conf redis.conf.ori
mkdir -p /data/redis/6379
cd /usr/local/redis/6379/etc/
/bin/cp redis.conf redis.conf.ori
mkdir -p /data/redis/6379
vi /usr/local/redis/6379/etc/redis.conf (Master Redis)
#=======================================================================
daemonize yes
pidfile /usr/local/redis/6379/6379.pid
port 6379
tcp-backlog 511
timeout 300
unixsocket /dev/shm/redis.sock
unixsocketperm 777
tcp-keepalive 60
loglevel notice
logfile "/data/redis/6379/6379.log"
databases 16
save 300 1
save 150 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename 6379.rdb
dir /data/redis/6379/
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
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
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-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
#requirepass 58d4b27e87
bind 192.168.1.218
#SLAVE CONFIG
#slaveof master-ip master-port
#masterauth master-pwd
#===========================================================================
#=======================================================================
daemonize yes
pidfile /usr/local/redis/6379/6379.pid
port 6379
tcp-backlog 511
timeout 300
unixsocket /dev/shm/redis.sock
unixsocketperm 777
tcp-keepalive 60
loglevel notice
logfile "/data/redis/6379/6379.log"
databases 16
save 300 1
save 150 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename 6379.rdb
dir /data/redis/6379/
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
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
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-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
#requirepass 58d4b27e87
bind 192.168.1.218
#SLAVE CONFIG
#slaveof master-ip master-port
#masterauth master-pwd
#===========================================================================
REDIS启动脚本:
vim 6379.sh
#----------------------------------------------------------------------------------------------------------------
#!/bin/bash
#source function library
. /etc/init.d/functions
LOCAL_IP="192.168.1.218"
PORT="6379"
PWD="58d4b27e87"
EXEC="/usr/local/redis/${PORT}/bin/redis-server"
REDIS_CLI="/usr/local/redis/${PORT}/bin/redis-cli"
PID="/usr/local/redis/${PORT}/${PORT}.pid"
CONF="/usr/local/redis/${PORT}/etc/redis.conf"
case "$1" in
start)
if [ -f $PID ]
then
echo "Process is already running."
else
$EXEC $CONF
if [ "$?"="0" ];then
action "Starting Redis server..." /bin/true
fi
fi
;;
stop)
if [ ! -f $PID ]
then
echo "Process is not running."
else
PID=$(cat $PID)
$REDIS_CLI -p ${PORT} -h ${LOCAL_IP} -a ${PWD} SHUTDOWN
if [ $? = 0 ];then
action "Redis stopped" /bin/true
fi
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage:/bin/sh ${0} {start|stop|restart|force-reload}"
exit 1
esac
#source function library
. /etc/init.d/functions
LOCAL_IP="192.168.1.218"
PORT="6379"
PWD="58d4b27e87"
EXEC="/usr/local/redis/${PORT}/bin/redis-server"
REDIS_CLI="/usr/local/redis/${PORT}/bin/redis-cli"
PID="/usr/local/redis/${PORT}/${PORT}.pid"
CONF="/usr/local/redis/${PORT}/etc/redis.conf"
case "$1" in
start)
if [ -f $PID ]
then
echo "Process is already running."
else
$EXEC $CONF
if [ "$?"="0" ];then
action "Starting Redis server..." /bin/true
fi
fi
;;
stop)
if [ ! -f $PID ]
then
echo "Process is not running."
else
PID=$(cat $PID)
$REDIS_CLI -p ${PORT} -h ${LOCAL_IP} -a ${PWD} SHUTDOWN
if [ $? = 0 ];then
action "Redis stopped" /bin/true
fi
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage:/bin/sh ${0} {start|stop|restart|force-reload}"
exit 1
esac
#----------------------------------------------------------------------------------------------------------------
#加入开机启动
echo "/usr/local/redis/6379/6379.sh start" >> /etc/rc.local
#启动REDIS
chmod a+x /usr/local/redis/6379/redis/6379.sh
/usr/local/redis-6379/redis/6379.sh start
优化:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 65535 > /proc/sys/net/core/somaxconn
echo 1 > /proc/sys/vm/overcommit_memory
PS
1:主从部署
从库部署与主库相同,唯一不同之处打开如下两行文件即可;
#slaveof 192.168.0.212 6379
#masterauth 64125568Qq
2:手动开关闭命令
#slaveof 192.168.0.212 6379
#masterauth 64125568Qq
2:手动开关闭命令
开启命令:
/usr/local/redis/6379/bin/redis-server /usr/local/redis/6379/etc/redis.conf
/usr/local/redis/6379/bin/redis-server /usr/local/redis/6379/etc/redis.conf
关闭命令:
/usr/local/redis/src/redis-cli -h 192.168.0.218 -p 6379 -a"这里输入密码" shutdown
/usr/local/redis/src/redis-cli -h 192.168.0.218 -p 6379 -a"这里输入密码" shutdown
3:内核优化:
echo 1 > /proc/sys/vm/overcommit_memory && sysctl -p
overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
4:监听队列长度优化
echo 65535 > /proc/sys/net/core/somaxconn
定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128,具体信息为
5:echo never > /sys/kernel/mm/transparent_hugepage/enabled