在服务开发中,单机都会存在单点故障的问题,即服务部署在一台服务器上,一旦服务器宕机服务就不可用,所以为了让服务高可用,分布式服务就出现了,将同一服务部署到多台机器上,即使其中几台服务器宕机,只要有一台服务器可用服务就可用。
Redis 也是一样,为了解决单机故障引入了主从模式,但主从模式存在一个问题:master 节点故障后服务,需要人为的手动将 slave 节点切换成为 master 节点后服务才恢复。Redis 为解决这一问题又引入了哨兵模式,哨兵模式能在 master 节点故障后能自动将 slave 节点提升成 master 节点,不需要人工干预操作就能恢复服务可用。但是主从模式、哨兵模式都没有达到真正的数据 sharding 存储,每个 Redis 实例中存储的都是全量数据,所以 Redis cluster 就诞生了,实现了真正的数据分片存储。但是由于 Redis cluster 发布得比较晚(2015 年才发布正式版 ),各大厂等不及了,陆陆续续开发了自己的 Redis 数据分片集群模式,比如:Twemproxy、Codis 等。
优缺点
优点:主从结构具有读写分离,提高效率、数据备份,提供多个副本等优点。
不足: 最大的不足就是主从模式不具备自动容错和恢复功能,主节点故障,集群则无法进行工作,可用性比较低,从节点升主节点需要人工手动干预。
案例中192.168.17.22为master ip,192.168.254.8为slave节点
默认redis的日志目录是/var/log/redis_6379.log,如果不是可以查看redis.conf文件中的logfile值查看具体错误
master节点
修改Redis的redis.conf文件,将daemonize参数为yes,另外将bind修改为当前master的ip
slave节点
修改slave节点上的bind为当前服务器的ip地址,修改daemonize为yes,打开replicaof参数并在后面配置master节点的IP与端口,一般master节点都有连接密码所以还需要添加参数masterauth,后面为master节点的密码
lz是通过ps指令查看到redis的pid,然后使用kill指令进行退出
# 获取Redis的pid
ps -ef|grep redis
# 停止redis的进程
kill -9 pid
# 启动Redis(redis的bin目录下启动)
./redis-server redis.conf
master状态
# 进入redis cli端
./redis-cli -h 192.168.17.22 -p 6379 -a pwd
# redis的cli中输入指令
info replication
slave状态
# 进入redis cli端
./redis-cli -h 192.168.254.8 -p 6379 -a pwd
# redis的cli中输入指令
info replication
在master上set数据,然后在slave上get数据,能获取到就说明搭建成功。如果想搭建多个slave节点,可以在其他机器上进行上面slave的操作就可以
下一篇:Java开发工具idea