一、选择版本并下载
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
二、编译安装
tar xzf redis-4.0.10.tar.gz
cd redis-4.0.10
make PREFIX=/usr/local/redis install
三、创建配置文件
cp redis.conf /usr/local/redis/
cp sentinel.conf /usr/local/redis/
mkdir workspace
1. 部署预期
- 单机1主,2从进程
slaver ip:30001
master ip:30002
slaver ip:30003 - 哨兵进程
sentinel ip:40000
2.创建预处理配置文件
cd /usr/local/redis/
#1主2从配置
cp redis.conf redis30001.conf
cp redis.conf redis30002.conf
cp redis.conf redis30003.conf
#哨兵配置
cd sentinel.conf sentinel40000.conf
3.创建自动修改配置脚本
vim autoEdit.sh
#bin/sh
【参数1】操作的目标文件
【参数2】配置的端口号
#本机IP
IP=110.110.110.110
#也可以使用下面自动获取本机ip的命令,个别机器可能不支持,请自行选择
#IP=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
#设置端口号【第二个参数】
PORT=$2
#密码
REQUIREPASS=www.liudaye.com
#主库IP
MASTERIP=110.110.110.110
#主库密码
MASTERPASS=www.liudaye.com
#主库端口
MASTERPORT=30002
#取消绑定ip设置
sed -i "s/bind 127.0.0.1/bind 127.0.0.1 $IP/g" $1
#设置密码
sed -i "s/# masterauth <master-password>/masterauth $MASTERPASS/g" $1
#设置密码
sed -i "s/# requirepass foobared/requirepass $REQUIREPASS/g" $1
#设置端口号
sed -i "s/port 6379/port $PORT/g" $1
#设置后台执行
sed -i "s/daemonize no/daemonize yes/g" $1
#设置进程号
sed -i "s/pidfile \/var\/run\/redis_6379.pid/pidfile \/var\/run\/redis_$PORT.pid/g" $1
#设置日志文件
sed -i "s/logfile \"\"/logfile \"\/usr\/local\/redis\/workspace\/$PORT.log\"/g" $1
#设置rdb文件
sed -i "s/dbfilename dump.rdb/dbfilename dump$PORT.rdb/g" $1
#设置工作目录
sed -i "s/dir .\//dir \/usr\/local\/redis\/workspace/g" $1
#设置AOP文件
sed -i "s/appendfilename \"appendonly.aof\"/appendfilename \"appendonly$PORT.aof\"/g" $1
#设置appendonly
sed -i "s/appendonly no/appendonly yes/g" $1
#设置主库地址
echo "slaveof $MASTERIP $MASTERPORT" >>$1
4. 修改redis具体配置
sh autoEdit.sh redis30001.conf 30001
sh autoEdit.sh redis30002.conf 30002
sh autoEdit.sh redis30003.conf 30003
#删除master中的slaveof 配置(最后一行)
sed -i '$d' redis30002.conf
5.查看最终详细配置
cat redis30001.conf |grep -Ev "#|^$"
bind 127.0.0.1 110.110.110.110
protected-mode yes
port 30001
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_30001.pid
loglevel notice
logfile "/usr/local/redis/workspace/30001.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 dump30001.rdb
dir /usr/local/redis/workspace
masterauth liudaye.com
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
requirepass liudaye.com
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
appendfilename "appendonly30001.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 no
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
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
slaveof 110.110.110.110 30002
6. 修改哨兵配置
#修改绑定IP
bind 127.0.0.1 110.110.110.110
#修改端口
port 40000
#修改工作目录
dir "/usr/local/redis/workspace"
#设置监听主库地址、端口,和选举胜出票数 (1主,2从时配置1)
sentinel monitor mymaster 110.110.110.110 30002 1
#设置master名字mymaster 和密码
sentinel auth-pass mymaster www.liudaye.com
sentinel config-epoch mymaster 8
#后台执行
daemonize yes
#日志文件
logfile "/usr/local/redis/workspace/sentinel40000.log"
四、启动服务
启动主从库服务
cd /usr/local/redis
#启动主库
bin/redis-server redis30002.conf
#启动从库
bin/redis-server redis30001.conf
#启动从库
bin/redis-server redis30003.conf
启动哨兵监控进程
cd /usr/local/redis
#启动哨兵
bin/redis-sentinel sentinel40000.conf
#bin/redis-server sentinel40000.conf --sentinel
五、连接客户端
登录哨兵
bin/redis-cli -h 110.110.110.110 -p 40000
Sentinel 可接受的命令官网
PING :返回 PONG 。
SENTINEL masters :列出所有被监视的主服务器,以及这些主服务器的当前状态。
SENTINEL master <master name>:特定主服务器的当前状态。
SENTINEL slaves <master name>:列出给定主服务器的所有从服务器,以及这些从服务器的当前状态。
SENTINEL sentinels <master name> Show a list of sentinel instances for this master, and their state.
SENTINEL get-master-addr-by-name <master name> : 返回给定名字的主服务器的 IP 地址和端口号。 如果这个主服务器正在执行故障转移操作, 或者针对这个主服务器的故障转移操作已经完成, 那么这个命令返回新的主服务器的 IP 地址和端口号。
SENTINEL reset <pattern>: 重置所有名字和给定模式 pattern 相匹配的主服务器。 pattern 参数是一个 Glob 风格的模式。 重置操作清楚主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel 。
SENTINEL failover : 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移 (不过发起故障转移的 Sentinel 会向其他 Sentinel 发送一个新的配置,其他 Sentinel 会根据这个配置进行相应的更新)。
登录主从库
#从库
bin/redis-cli -h 110.110.110.110 -p 30001
#主库
bin/redis-cli -h 110.110.110.110 -p 30002
#认证
auth www.liudaye.com
#查看信息
info replication