一、Redis单机安装
(1)安装依赖的C语言
yum install -y gcc-c++ automake autoconf libtool make tclyum install -y gcc-c++ automake autoconf libtool make tclyum install -y gcc-c++ automake autoconf libtool make tcl
(2)上传安装包并解压
cd /usr/local/tmptar zxf redis-5.0.5.tar.gzcd /usr/local/tmp tar zxf redis-5.0.5.tar.gzcd /usr/local/tmp tar zxf redis-5.0.5.tar.gz
(3)编译并安装
cd /usr/local/tmp/redis-5.0.5/# 编译make# 安装make install PREFIX=/usr/local/rediscd /usr/local/tmp/redis-5.0.5/ # 编译 make # 安装 make install PREFIX=/usr/local/rediscd /usr/local/tmp/redis-5.0.5/ # 编译 make # 安装 make install PREFIX=/usr/local/redis
(4)开启守护进程
复制 /usr/local/tmp/redis-5.0.5/
中 redis.conf
配置文件
cp redis.conf /usr/local/redis/bin/cp redis.conf /usr/local/redis/bin/cp redis.conf /usr/local/redis/bin/
修改配置文件
cd /usr/local/redis/bin/vim redis.confcd /usr/local/redis/bin/ vim redis.confcd /usr/local/redis/bin/ vim redis.conf
把 daemonize 的值由 no 修改为 yes
(5)修改外部访问
在redis5中需要修改配置文件redis.conf允许外部访问。需要修改两处。
注释掉 bind 127.0.0.1
把 protected-mode 的值由 yes 改成 no
(6)启动并测试
# 启动 redis./redis-server redis.conf# 重启redis./redis-cli shutdown./redis-server redis.conf# 启动 redis ./redis-server redis.conf # 重启redis ./redis-cli shutdown ./redis-server redis.conf# 启动 redis ./redis-server redis.conf # 重启redis ./redis-cli shutdown ./redis-server redis.conf
二、Redis主从搭建
我们可以继续在单机Redis基础上安装,先关闭Redis单机版
./redis-cli shutdown./redis-cli shutdown./redis-cli shutdown
(1)新建目录
mkdir /usr/local/replicamkdir /usr/local/replicamkdir /usr/local/replica
(2)复制目录
把之前安装的redis单机版中bin目录复制三份,分别叫做:master、slave1、slave2
cp -r /usr/local/redis/bin /usr/local/replica/mastercp -r /usr/local/redis/bin /usr/local/replica/slave1cp -r /usr/local/redis/bin /usr/local/replica/slave2cp -r /usr/local/redis/bin /usr/local/replica/master cp -r /usr/local/redis/bin /usr/local/replica/slave1 cp -r /usr/local/redis/bin /usr/local/replica/slave2cp -r /usr/local/redis/bin /usr/local/replica/master cp -r /usr/local/redis/bin /usr/local/replica/slave1 cp -r /usr/local/redis/bin /usr/local/replica/slave2
(3)修改从节点配置文件
修改从节点的 redis.conf,指定主节点ip和端口;修改从节点自身端口号防止和其他redis冲突
- 从节点slave1
vim /usr/local/replica/slave1/redis.conf# 指定主节点ip和端口replicaof 192.168.93.10 6379# 修改自己的端口port 6380vim /usr/local/replica/slave1/redis.conf # 指定主节点ip和端口 replicaof 192.168.93.10 6379 # 修改自己的端口 port 6380vim /usr/local/replica/slave1/redis.conf # 指定主节点ip和端口 replicaof 192.168.93.10 6379 # 修改自己的端口 port 6380
- 从节点slave2
vim /usr/local/replica/slave2/redis.conf# 指定主节点ip和端口replicaof 192.168.93.10 6379# 修改自己的端口port 6381vim /usr/local/replica/slave2/redis.conf # 指定主节点ip和端口 replicaof 192.168.93.10 6379 # 修改自己的端口 port 6381vim /usr/local/replica/slave2/redis.conf # 指定主节点ip和端口 replicaof 192.168.93.10 6379 # 修改自己的端口 port 6381
(4)启动Redis实例
cd /usr/local/replicavim startup.shcd /usr/local/replica vim startup.shcd /usr/local/replica vim startup.sh
在启动脚本中添加下面内容
cd /usr/local/replica/master/./redis-server redis.confcd /usr/local/replica/slave1./redis-server redis.confcd /usr/local/replica/slave2./redis-server redis.confcd /usr/local/replica/master/ ./redis-server redis.conf cd /usr/local/replica/slave1 ./redis-server redis.conf cd /usr/local/replica/slave2 ./redis-server redis.confcd /usr/local/replica/master/ ./redis-server redis.conf cd /usr/local/replica/slave1 ./redis-server redis.conf cd /usr/local/replica/slave2 ./redis-server redis.conf
给脚本执行权限
chmod a+x startup.shchmod a+x startup.shchmod a+x startup.sh
执行脚本
./startup.sh./startup.sh./startup.sh
(5)查看启动状态
ps aux | grep redisps aux | grep redisps aux | grep redis
(6)测试
cd /usr/local/replica/master/./redis-clicd /usr/local/replica/master/ ./redis-clicd /usr/local/replica/master/ ./redis-cli
三、Redis 哨兵搭建
Redis主从默认是只有主具备写的能力,而从只能读。如果主宕机,整个节点不具备写能力。如果此时让一个从变成主,整个节点就可以继续工作。当之前的主恢复过来以后,也可以当做这个节点的从即可。
Redis 的哨兵就是帮助监控整个节点的,当节点主宕机等情况下,帮助重新选取主。Redis 中哨兵支持单哨兵和多哨兵。单哨兵是只要这个哨兵发现 master 宕机了,就直接选取另一个 master。而多哨兵是根据我们的设定,达到一定数量哨兵认为 master 宕机后才会进行重新选取主。本篇笔记以多哨兵为例演示。
当我们杀掉主节点,整个节点无法写数据,从节点身份不会变化,主节点信息不变。
我们还是在 Redis 单机版的基础上进行搭建,搭建步骤如下:
(1)新建目录
mkdir /usr/local/sentinelmkdir /usr/local/sentinelmkdir /usr/local/sentinel
(2)复制 Redis
cp -r /usr/local/redis/bin/* /usr/local/sentinelcp -r /usr/local/redis/bin/* /usr/local/sentinelcp -r /usr/local/redis/bin/* /usr/local/sentinel
(3)复制配置文件
从 Redis 解压目录中复制 sentinel 配置文件
cd /usr/local/tmp/redis-5.0.5/cp sentinel.conf /usr/local/sentinel/cd /usr/local/tmp/redis-5.0.5/ cp sentinel.conf /usr/local/sentinel/cd /usr/local/tmp/redis-5.0.5/ cp sentinel.conf /usr/local/sentinel/
(4)修改配置文件
cd /usr/local/sentinelvim sentinel.confport 26379daemonize yeslogfile “/usr/local/sentinel/26379.log”sentinel monitor mymaster 192.168.93.10 6379 2cd /usr/local/sentinel vim sentinel.conf port 26379 daemonize yes logfile “/usr/local/sentinel/26379.log” sentinel monitor mymaster 192.168.93.10 6379 2cd /usr/local/sentinel vim sentinel.conf port 26379 daemonize yes logfile “/usr/local/sentinel/26379.log” sentinel monitor mymaster 192.168.93.10 6379 2
对这行配置进行解析一下,
sentinel monitor mymaster 192.168.93.10 6379 2
,它的
意思是 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.0.0.1,端口号为 6379 ,而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意,只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行。
复制 sentinel.conf,命名为 sentinel-26380.conf
cp sentinel.conf sentinel-26380.confvim sentinel-26380.confport 26380daemonize yeslogfile “/usr/local/sentinel/26380.log”sentinel monitor mymaster 192.168.93.10 6379 2cp sentinel.conf sentinel-26380.conf vim sentinel-26380.conf port 26380 daemonize yes logfile “/usr/local/sentinel/26380.log” sentinel monitor mymaster 192.168.93.10 6379 2cp sentinel.conf sentinel-26380.conf vim sentinel-26380.conf port 26380 daemonize yes logfile “/usr/local/sentinel/26380.log” sentinel monitor mymaster 192.168.93.10 6379 2
复制 sentinel.conf,命名为 sentinel-26381.conf
cp sentinel.conf sentinel-26381.confvim sentinel-26381.confport 26381daemonize yeslogfile “/usr/local/sentinel/26381.log”sentinel monitor mymaster 192.168.93.10 6379 2cp sentinel.conf sentinel-26381.conf vim sentinel-26381.conf port 26381 daemonize yes logfile “/usr/local/sentinel/26381.log” sentinel monitor mymaster 192.168.93.10 6379 2cp sentinel.conf sentinel-26381.conf vim sentinel-26381.conf port 26381 daemonize yes logfile “/usr/local/sentinel/26381.log” sentinel monitor mymaster 192.168.93.10 6379 2
(5)启动主从
如果已经启动状态,忽略下面命令。如果启动部分,全部kill后重新启动,使用kill杀死全部 Redis 实例。
ps aux|grep rediskill -9 进程号ps aux|grep redis kill -9 进程号ps aux|grep redis kill -9 进程号
启动主从
cd /usr/local/replica./startup.shcd /usr/local/replica ./startup.shcd /usr/local/replica ./startup.sh
(6)启动三个哨兵
cd /usr/local/sentinel./redis-sentinel sentinel.conf./redis-sentinel sentinel-26380.conf./redis-sentinel sentinel-26381.confcd /usr/local/sentinel ./redis-sentinel sentinel.conf ./redis-sentinel sentinel-26380.conf ./redis-sentinel sentinel-26381.confcd /usr/local/sentinel ./redis-sentinel sentinel.conf ./redis-sentinel sentinel-26380.conf ./redis-sentinel sentinel-26381.conf
四、集群环境搭建
当集群中等于或者超过一半的节点不可用时,整个集群不可用。为了搭建稳定集群,集群节点数最好都采用奇数节点。
(1)复制 Redis 配置文件
从 /usr/local/redis/bin 下把 redis.conf 复制到当前目录中,命名为 redis-7001.conf
cp /usr/local/redis/bin/redis.conf /usr/local/redis/bin/redis-7001.confcp /usr/local/redis/bin/redis.conf /usr/local/redis/bin/redis-7001.confcp /usr/local/redis/bin/redis.conf /usr/local/redis/bin/redis-7001.conf
(2)修改 redis-7001.conf
cd /usr/local/redis/binvim redis-7001.confcd /usr/local/redis/bin vim redis-7001.confcd /usr/local/redis/bin vim redis-7001.conf
需要修改如下
port 7001cluster-enabled yescluster-config-file nodes-7001.confcluster-node-timeout 15000# appendonly yes 如果开启aof默认,需要修改为yes。如果使用rdb,此处不需要修改daemonize yesprotected-mode nopidfile /var/run/redis_7001.pidport 7001 cluster-enabled yes cluster-config-file nodes-7001.conf cluster-node-timeout 15000 # appendonly yes 如果开启aof默认,需要修改为yes。如果使用rdb,此处不需要修改 daemonize yes protected-mode no pidfile /var/run/redis_7001.pidport 7001 cluster-enabled yes cluster-config-file nodes-7001.conf cluster-node-timeout 15000 # appendonly yes 如果开启aof默认,需要修改为yes。如果使用rdb,此处不需要修改 daemonize yes protected-mode no pidfile /var/run/redis_7001.pid
(3)复制配置文件,并修改内容
把 redis-7001.conf 复制5份,分别叫做 redis-7002.conf、redis-7003.conf、redis-7004.conf、redis-7005.conf、redis-7006.conf
cp redis-7001.conf redis-7002.confcp redis-7001.conf redis-7003.confcp redis-7001.conf redis-7004.confcp redis-7001.conf redis-7005.confcp redis-7001.conf redis-7006.confcp redis-7001.conf redis-7002.conf cp redis-7001.conf redis-7003.conf cp redis-7001.conf redis-7004.conf cp redis-7001.conf redis-7005.conf cp redis-7001.conf redis-7006.confcp redis-7001.conf redis-7002.conf cp redis-7001.conf redis-7003.conf cp redis-7001.conf redis-7004.conf cp redis-7001.conf redis-7005.conf cp redis-7001.conf redis-7006.conf
新复制的5个配置文件都需要需改三处,例如 nodes-7002.conf 中需要把所有 7001都换成7002。其他配置文件同理修改即可
port 7002cluster-config-file nodes-7002.confpidfile /var/run/redis_7002.pidport 7002 cluster-config-file nodes-7002.conf pidfile /var/run/redis_7002.pidport 7002 cluster-config-file nodes-7002.conf pidfile /var/run/redis_7002.pid
(4) 启动6个 Redis
可以使用 redis-server 结合6个配置文件进行启动6个实例,执行之前一定要先删除dump.rdb
rm -f dump.rdbvim startup.sh./redis-server redis-7001.conf./redis-server redis-7002.conf./redis-server redis-7003.conf./redis-server redis-7004.conf./redis-server redis-7005.conf./redis-server redis-7006.confchmod a+x startup.sh./startup.shrm -f dump.rdb vim startup.sh ./redis-server redis-7001.conf ./redis-server redis-7002.conf ./redis-server redis-7003.conf ./redis-server redis-7004.conf ./redis-server redis-7005.conf ./redis-server redis-7006.conf chmod a+x startup.sh ./startup.shrm -f dump.rdb vim startup.sh ./redis-server redis-7001.conf ./redis-server redis-7002.conf ./redis-server redis-7003.conf ./redis-server redis-7004.conf ./redis-server redis-7005.conf ./redis-server redis-7006.conf chmod a+x startup.sh ./startup.sh
(5)查看启动状态
(6)建立集群
在 Redis3 的时候需要借助 ruby 脚本实现集群;在 Redis5 中可以使用自带的redis-cli实现集群功能,比Redis3 更加方便。建议配置静态ip,ip改变集群失效
./redis-cli --cluster create 192.168.93.10:7001 192.168.93.10:7002 192.168.93.10:7003 192.168.93.10:7004 192.168.93.10:7005 192.168.93.10:7006 --cluster-replicas 1./redis-cli --cluster create 192.168.93.10:7001 192.168.93.10:7002 192.168.93.10:7003 192.168.93.10:7004 192.168.93.10:7005 192.168.93.10:7006 --cluster-replicas 1./redis-cli --cluster create 192.168.93.10:7001 192.168.93.10:7002 192.168.93.10:7003 192.168.93.10:7004 192.168.93.10:7005 192.168.93.10:7006 --cluster-replicas 1
(7) 测试
集群测试时,千万不要忘记最后一个-c参数。
./redis-cli -p 7001 -cset age 18./redis-cli -p 7001 -c set age 18./redis-cli -p 7001 -c set age 18
(8)编写关闭脚本
vim stop.shchmod a+x stop.sh./redis-cli -p 7001 shutdown./redis-cli -p 7002 shutdown./redis-cli -p 7003 shutdown./redis-cli -p 7004 shutdown./redis-cli -p 7005 shutdown./redis-cli -p 7006 shutdownvim stop.sh chmod a+x stop.sh ./redis-cli -p 7001 shutdown ./redis-cli -p 7002 shutdown ./redis-cli -p 7003 shutdown ./redis-cli -p 7004 shutdown ./redis-cli -p 7005 shutdown ./redis-cli -p 7006 shutdownvim stop.sh chmod a+x stop.sh ./redis-cli -p 7001 shutdown ./redis-cli -p 7002 shutdown ./redis-cli -p 7003 shutdown ./redis-cli -p 7004 shutdown ./redis-cli -p 7005 shutdown ./redis-cli -p 7006 shutdown