1. 安装Redis及部署Master-Slave集群
1.1 redis安装
redis的安装及配置,本文安装5.0版本:
cd /usr/local
mkdir redis
cd redis
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zxvf redis-5.0.3.tar.gz
cd redis-5.0.3
make
建议把redis-server redis-cli redis-trib.rb redis-sentinel拷贝至/usr/local/bin目录下以便后续使用方便
cd src
cp redis-server redis-cli redis-trib.rb redis-sentinel /usr/local/bin
可以修改redis.conf
文件的daemonize
参数为yes,默认端口6379,可以自行选择是否修改,
指定配置文件启动:
redis-server redis.conf
如果单例部署启动以上步骤即已完成。
以下以创建一主二从的集群为例说明。
1.2 集群部署与配置
先创建sentinel目录,在该目录下创建8000,8001,8002三个以端口号命名的目录和28000,28001,28002三个已哨兵端口命名的目录。
mkdir sentinel
cd sentinel
mkdir 8000 8001 8002 28000 28001 28002
在对应端口号目录中创建redis.conf的文件,配置文件中的端口号port参数改为对应目录的端口号。配置如下:
# 守护进程模式
daemonize yes
# pid file
pidfile /var/run/redis.pid
# 监听端口
port 8000
# TCP接收队列长度,受/proc/sys/net/core/somaxconn和tcp_max_syn_backlog这两个内核参数的影响
tcp-backlog 511
# 一个客户端空闲多少秒后关闭连接(0代表禁用,永不关闭)
timeout 0
# 如果非零,则设置SO_KEEPALIVE选项来向空闲连接的客户端发送ACK
tcp-keepalive 60
# 指定服务器调试等级
# 可能值:
# debug (大量信息,对开发/测试有用)
# verbose (很多精简的有用信息,但是不像debug等级那么多)
# notice (适量的信息,基本上是你生产环境中需要的)
# warning (只有很重要/严重的信息会记录下来)
loglevel notice
# 指明日志文件名
logfile "./redis8000.log"
# 设置数据库个数
databases 16
# 会在指定秒数和数据变化次数之后把数据库写到磁盘上
# 900秒(15分钟)之后,且至少1次变更
# 300秒(5分钟)之后,且至少10次变更
# 60秒之后,且至少10000次变更
save 900 1
save 300 10
save 60 10000
# 默认如果开启RDB快照(至少一条save指令)并且最新的后台保存失败,Redis将会停止接受写操作
# 这将使用户知道数据没有正确的持久化到硬盘,否则可能没人注意到并且造成一些灾难
stop-writes-on-bgsave-error yes
# 当导出到 .rdb 数据库时是否用LZF压缩字符串对象
rdbcompression yes
# 版本5的RDB有一个CRC64算法的校验和放在了文件的最后。这将使文件格式更加可靠。
rdbchecksum yes
# 持久化数据库的文件名
dbfilename dump.rdb
# 工作目录
dir ./
# 当master服务设置了密码保护时,slave服务连接master的密码
masterauth sa123456.
# 当一个slave失去和master的连接,或者同步正在进行中,slave的行为可以有两种:
#
# 1) 如果 slave-serve-stale-data 设置为 "yes" (默认值),slave会继续响应客户端请求,
# 可能是正常数据,或者是过时了的数据,也可能是还没获得值的空数据。
# 2) 如果 slave-serve-stale-data 设置为 "no",slave会回复"正在从master同步
# (SYNC with master in progress)"来处理各种请求,除了 INFO 和 SLAVEOF 命令。
slave-serve-stale-data yes
# 你可以配置salve实例是否接受写操作。可写的slave实例可能对存储临时数据比较有用(因为写入salve
# 的数据在同maste