sentinel三大任务:
监控:不断检查你的主服务器和从服务器是否运作正常
提醒:当被监控的某个redis服务器出现问题时,sentinel可以通过API向管理员或者其他应用程序发送通知
自动故障迁移:当一个主服务器不能正常工作时,sentinel会开始一次自动故障转移操作,它会将失效主服务器的其中一个服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器。 当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器
互联网冷备和热备
冷备(RDB):发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库
优点:快速备份(只需拷文件)、低度维护,高度安全
缺点:单独使用只能提供"某一节点上"的恢复、冷备过程数据库必须关闭(不能做其他工作)
热备(AOF):数据库运行的情况下,采用归档模式(archivelog model)方式备份数据库的方法
优点:备份时间短、备份时数据库仍可使用、秒级恢复
缺点:若热备份不成功,所得结果不可用于时间点的恢复、难于维护,要非常小心
Sentinel整合Springboot
cd /usr/local/redis/bin/
./redis-server redis.conf
./redis-cli -h 192.168.200.130 -p 63xx
ps -ef | grep redis
kill -9 xxx xxx 强行关闭
NOAUTH Authentication required.——> 在连接端口后:auth 123456 以密码登录
或者:./redis-cli -h 192.168.200.130 -p 63xx -a 123456
1.设置Redis密码 vi redis.conf
设置密码 requirepass 123456
设置访问主服务器密码 masterauth 123456
2.在sentinel哨兵的配置文件sentinel.conf中添加设置
sentinel auth-pass mymaster 123456
//启动sentinel:/root/redis-4.0.14/src/redis-sentinel sentinel.conf
启动成功
root@pinyoyougou-docker redis]# /root/redis-4.0.14/src/redis-sentinel sentinel.conf
4861:X 31 Jul 13:31:07.936 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4861:X 31 Jul 13:31:07.936 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=4861, just started
4861:X 31 Jul 13:31:07.936 # Configuration loaded
4861:X 31 Jul 13:31:07.937 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 4.0.14 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 4861
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
4861:X 31 Jul 13:31:08.238 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
4861:X 31 Jul 13:31:08.238 # Sentinel ID is f87f8b1c57abc53e3e8afdfccd2ffe7b8440af29
4861:X 31 Jul 13:31:08.238 # +monitor master mymaster 192.168.200.130 6379 quorum 1
3.在Spring创建新的marven工程:demo_sentinel
1.pom
2.yml
3.启动类
4.test类—>将数据写入redis中
@Autowired
private StringRedisTemplate redisTemplate;
redisTemplate.opsForValue().set("test", "redis");
String test = redisTemplate.opsForValue().get("test");
Redis内置集群
#进入redis安装目录:cd /usr/local/redis
#复制redis:mkdir cluster
cp -R bin/ cluster/node1
#删除持久化文件:cd cluster/node1
rm -rf dump.rdb
rm -rf appendonly.aof
#删除原来的配置文件:rm -rf redis.conf
#复制新的配置文件:cp /root/redis-4.0.14/redis.conf ./
#修改配置文件:vi redis.conf
集群环境redis节点的配置文件如下:
#不能设置密码,否则集群启动时会连接不上
#Redis服务器可以跨网络访问
bind 0.0.0.0
#修改端口号
port 7001
#Redis后台启动
daemonize yes
#开启集群
cluster-enabled yes
#集群的配置,配置文件首次启动自动生成
cluster-config-file nodes.conf
#请求超时
cluster-node-timeout 5000
第一个redis节点node1准备好之后,再复制5份
#cd /usr/local/redis/cluster
cp -R node1/ node2
修改六个节点的端口号为7001~7006,修改redis.conf配置文件即可
编写启动节点的脚本:
vi start-all.sh
内容为:
cd node1
./redis-server redis.conf
cd /usr/local/redis/cluster
cd node2
./redis-server redis.conf
cd /usr/local/redis/cluster
cd node3
./redis-server redis.conf
cd /usr/local/redis/cluster
cd node4
./redis-server redis.conf
cd /usr/local/redis/cluster
cd node5
./redis-server redis.conf
cd /usr/local/redis/cluster
cd node6
./redis-server redis.conf
cd /usr/local/redis/cluster
设置脚本的权限,并启动:
chmod 744 start-all.sh
./start-all.sh
查看效果:ps -ef | grep redis
启动redis集群
redis集群的管理工具使用的时ruby脚本语言,安装集群需要ruby环境,先安装ruby环境:
#安装ruby
yum -y install ruby ruby-devel rubygems rpm-build
#升级ruby版本,redis4.0.14集群环境需要2.2.2以上的ruby版本
yum install centos-release-scl-rh
yum install rh-ruby23 -y
scl enable rh-ruby23 bash
#查看ruby版本
ruby -v
下载复合环境要求的gem,下载地址:https://rubygems.org/gems/redis/versions/4.1.0
(即文件中的redis-4.1.0gem),直接上传安装即可
安装命令:gem install redis-4.1.0.gem
进入redis安装目录,使用redis自带的集群管理脚本,执行命令
#进入redis安装包
cd /root/redis-4.0.14/src/
#查看集群管理脚本
ll *.rb
#使用集群管理脚本启动集群
./redis-trib.rb create --replicas 1 192.168.200.130:7001 192.168.200.130:7002 192.168.200.130:7003 192.168.200.130:7004 192.168.200.130:7005 192.168.200.130:7006
集群的数据分配:redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分哈西。可以使用命令查看集群信息:
./redis-cli -p 7001 cluster nodes | grep master