赞
踩
目录
主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
- Master节点 192.168.40.172 redis-5.0.7.tar.gz
- Slave1节点 192.168.40.170 redis-5.0.7.tar.gz
- Slave2节点 192.168.40.17 redis-5.0.7.tar.gz
- systemctl stop firewalld
- setenforce 0
- systemctl disable firewalld
- systemctl stop firewalld
- setenforce 0
-
- yum install -y gcc gcc-c++ make
-
- tar zxvf redis-5.0.7.tar.gz -C /opt/
-
- cd /opt/redis-5.0.7/
- make
- make PREFIX=/usr/local/redis install
-
- cd /opt/redis-5.0.7/utils
- ./install_server.sh
-
- 回车四次,下一步需要手动输入
-
- Please select the redis executable path [] /usr/local/redis/bin/redis-server
-
- ln -s /usr/local/redis/bin/* /usr/local/bin/

- vim /etc/redis/6379.conf
- #70行,修改bind 项,0.0.0.0监听所有网段
- bind 0.0.0.0
- #137行,开启守护进程
- daemonize yes
- #172行,指定日志文件目录
- logfile /var/log/redis_6379.log
- #264行,指定工作目录
- dir /var/lib/redis/6379
- #700行,开启AOF持久化功能
- appendonly yes
-
- /etc/init.d/redis_6379 restart
- netstat -natp | grep redis
- 首先在Master上节点上查看日志
-
- tail -f /var/log/redis_6379.log
redis-cli info replication
哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移。
哨兵结构由两部分组成,哨兵节点和数据节点:
哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的Redis 工作节点是否正常,当Master 出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个 Master 的确出现问题,然后会通知哨兵间,然后从Slaves中选取一个作为新的 Master。
需要特别注意的是:客观下线是主节点才有的概念;如果从节点和哨兵节点发生故障,被哨兵主观下线后,不会再有后续的客观下线和故障转移操作。
哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式
- Master:192.168.40.17
- Slave1:192.168.40.170
- Slave2:192.168.40.172
- vim /opt/redis-5.0.7/sentinel.conf
- protected-mode no #17行,关闭保护模式
- port 26379 #21行,Redis哨兵默认的监听端口
- daemonize yes #26行,指定sentinel为后台启动
- logfile "/var/log/sentinel.log" #36行,指定日志存放路径
- dir "/var/lib/redis/6379" #65行,指定数据库存放路径
- sentinel monitor mymaster 192.168.40.17 6379 2 #84行, 修改
- 指定该哨兵节点监控192.168.40.17:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
- sentinel down-after-milliseconds mymaster 30000 #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
- sentinel failover-timeout mymaster 180000 #146行,故障节点的最大超时时间为180000 (180秒 )
- cd /opt/redis-5.0.7/
- redis-sentinel sentinel.conf &
- 注意!先启动主服务器,再启动从服务器
- redis-cli -p 26379 info Sentinel
- #在Master 上查看redis-server进程号:
- ps -elf | grep redis
-
- #杀死 Master 节点上redis-server的进程号
- kill -9 redis进程号 #Master节点上redis-server的进程号
-
- #验证master是转换至从服务器
- tail -f /var/log/sentinel.log
-
- #在Slave上查看是否转换成功
- redis-cli -p 26379 INFO Sentinel
<- - -以3个节点组成的集群为例- - ->
节点A 包含0到5460号哈希槽
节点B 包含5461到10922号哈希槽
节点C 包含10923到16383号哈希槽
- 192.168.40.16 master
-
- 这里为了方便所有的节点都在同一台服务器上模拟
- cd /etc/redis
- mkdir -p redis-cluster/redis600{1..6}
-
- for i in {1..6}
- do
- cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis600$i
- cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$i
- done
- cd /etc/redis/redis-cluster/redis6001
-
- vim redis.conf
- #bind 127.0.0.1 #69行,注释掉bind项,默认监听所有网卡
- protected-mode no #88行,修改,关闭保护模式
- port 6001 #92行,修改,redis监听端口,
- daemonize yes #136行,开启守护进程,以独立进程启动
- cluster-enabled yes #832行,取消注释,开启群集功能
- cluster-config-file nodes-6001.conf #840行,取消注释,群集名称文件设置
- cluster-node-timeout 15000 #846行,取消注释群集超时时间设置
- appendonly yes #700行,修改,开启AOF持久化
- 分别进入那六个文件夹,执行命令: redis-server redis.conf ,来启动redis节点
- cd /etc/redis/redis-cluster/redis6001
- redis-server redis.conf
-
- for i in {1..6}
- do
- cd /etc/redis/redis-cluster/redis600$i
- redis-server redis.conf
- done
-
- ps -ef | grep redis
- redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1
-
- yes
- redis-cli -p 6001 -c #加-c参数,节点之间就可以互相跳转
- cluster slots #查看节点的哈希槽编号范围
-
- set test lisi
- cluster keyslot test #查看name键的槽编号
1.主从复制适用于数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。
2.哨兵模式基于主从复制,部署哨兵模式必须先部署主从复制,其在主从复制基础上提供了自动化的故障恢复。但是其写操作无法负载均衡,存储能力受到单机的限制。
3.Redis集群提供了分布式存储方案解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案,其集群最低需要6个节点,三主三从,实现Redis高可用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。