0.装置
- vmware15.x+
- centos7.x+
redis相干配置
哨兵日志解读
0.1 下载redis源码包
- https://redis.io/
0.2下载对应版本
- redis-5.0.10.tar.gz
0.3上传并编译装置
# 装置gcc- yum install -y gcc# 进入解压缩目录执行如下命令- make MALLOC=libc# 编译实现后执行如下命令- make install PREFIX=/usr/redis# 进入/usr/redis目录启动redis服务 - ./redis-server
1.搭建redis主从
主从复制架构仅仅用来解决数据的冗余备份,从节点仅仅用来同步数据
无奈解决: 1.master节点呈现故障的主动故障转移
1.1 筹备三台机器并批改配置
- master
port 6379
bind 0.0.0.0
protected-mode no
daemonize yes - slave1
port 6380
bind 0.0.0.0
slaveof masterip masterport
masterauthmasterPassword
# 如果master没有配置明码能够不填
pidfile "/var/run/redis_6381.pid" # 同一台机器上测试 这个要写成不同的文件
protected-mode no
daemonize yes - slave2
port 6381
bind 0.0.0.0
slaveof masterip masterport
masterauthmasterPassword
# 如果master没有配置明码能够不填
pidfile "/var/run/redis_6381.pid" # 同一台机器上测试 这个要写成不同的文件
protected-mode no
daemonize yes
1.2 启动3台机器进行测试
- cd /usr/redis/bin
- ./redis-server /root/master/redis.conf
- ./redis-server /root/slave1/redis.conf
- ./redis-server /root/slave2/redis.conf
2.搭建redis哨兵
Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 零碎能够监督任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监督的主服务器进入下线状态时,主动将下线主服务器属下的某个从服务器降级为新的主服务器。简略的说哨兵就是带有主动故障转移性能的主从架构。
无奈解决: 1.单节点并发压力问题 2.单节点内存和磁盘物理下限
2.1 搭建哨兵架构
# 1.在主节点上创立哨兵配置- 在Master对应redis.conf同目录下新建sentinel.conf文件,名字相对不能错;# 2.配置哨兵,在sentinel.conf文件中填入内容: 阐明:{port}前面的数字2 变量是quorum,是指当有两个及以上的sentinel服务检测到master宕机,才会去执行主从切换的性能。object down 主观下线 odown ,subjective down 主观下线sdown slaves 则是主动发现的没必要指定;- sentinel monitor masterRedis ${ip} ${port} 2- daemonize yes- port 26379 # 对应的端口- protected-mode no# 如果哨兵3s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒sentinel down-after-milliseconds master 3000# 如果100秒后 主从切换没有实现 则认为失败默认180ssentinel failover-timeout mymaster 100000# 设置master 和slave 的验证明码 要雷同sentinel auth-pass TestMaster yyds# 灾备转移的时候 同时只有一台机器能够同步数据 其余服务持续提供服务sentinel parallel-syncs mymaster 1# 设置连贯master和slave时的明码,留神的是sentinel不能别离为master和slave设置不同的明码,因而master和slave的明码应该设置雷同。sentinel auth-pass <master-name> <password>------ redis.conf的配置文件中须要配置bind 0.0.0.0protected-mode norequirepass mimamasterauth mima (同上一样,哨兵中也要配置)# 3.启动哨兵模式进行测试- redis-sentinel /root/sentinel/sentinel.conf
上面提供哨兵的配置文件 仅供参考
port 26379bind 0.0.0.0dir "/usr/redis"protected-mode nosentinel myid b72dcaa8d7b9bbb0c830b156b72dde8456d3a9d5sentinel deny-scripts-reconfig yes# Generated by CONFIG REWRITEsentinel monitor master 10.0.0.200 6381 2sentinel down-after-milliseconds master 3000sentinel failover-timeout master 10000# sentinel auth-pass master Bamboocloud@1234sentinel config-epoch master 4sentinel leader-epoch master 4sentinel known-replica master 10.0.0.200 6380sentinel known-replica master 10.0.0.200 6382logfile "/usr/redis/sentinel1.log"sentinel known-sentinel master 10.0.0.200 26381 597281e9b0ec9bd63a67c28255dde0665ee6dd22sentinel known-sentinel master 10.0.0.200 26380 5ab5bf54886d09e9de2447456e26e44641fde889sentinel current-epoch 4daemonize yes
2.2 通过springboot操作哨兵
# redis sentinel 配置# master书写是应用哨兵监听的那个名称spring.redis.sentinel.master=mymaster# 连贯的不再是一个具体redis主机,书写的是多个哨兵节点spring.redis.sentinel.nodes=192.168.202.206:26379
- 留神:如果连贯过程中呈现如下谬误:RedisConnectionException: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2)
- 解决方案:在哨兵的配置文件中退出bind 0.0.0.0 开启近程连贯权限
3. 搭建redis集群
须要筹备的环境: ruby
yum install -y ruby rubygemsgem install redis-xxx.gem
各个节点配置配置
port 6379 ..... //批改端口bind 0.0.0.0 //开启近程连贯cluster-enabled yes //开启集群模式cluster-config-file nodes-port.conf //集群节点配置文件cluster-node-timeout 5000 //集群节点超时工夫appendonly yes //开启AOF长久化
复制集群操作脚本到bin目录中
cp /root/redis-5.0.10/src/redis-trib.rb .# 创立集群./redis-trib.rb create --replicas 1 10.0.0.200:7000 10.0.0.200:7001 10.0.0.200:7002 10.0.0.200:7003 10.0.0.200:7004 10.0.0.200:7005
3.2 集群相干操作
# 1.增加主节点 add-node [新退出节点] [原始集群中任意节点]- ./redis-trib.rb add-node 10.0.0.200:7006 10.0.0.200:7005- 留神: 1).该节点必须以集群模式启动 2).默认状况下该节点就是以master节点模式增加# 2.增加从节点 add-node --slave [新退出节点] [集群中任意节点]- ./redis-trib.rb add-node --slave 10.0.0.200:7006 10.0.0.200:7000- 留神: 当增加正本节点时没有指定主节点,redis会随机给正本节点较少的主节点增加以后正本节点 # 3.为确定的master节点增加主节点 add-node --slave --master-id master节点id [新退出节点] [集群任意节点]- ./redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 127.0.0.1:7006 127.0.0.1:7000 4.删除节点 del-node [集群中任意节点] [删除节点id]- ./redis-trib.rb del-node 127.0.0.1:7002 - 留神: 1.被删除的节点必须是从节点或没有被调配hash slots的节点# 5.在线分片 reshard [集群中任意节点] [无]- ./redis-trib.rb reshard 10.0.0.200:7000
参考
https://www.cnblogs.com/bandaoyu/p/14625254.html
https://blog.51cto.com/u_15069472/2611132
yerenbiji