redis集群搭建(主从关系,哨兵模式,去中心化集群)
主从关系
注意:配从不配主
新增了新节点,新节点会把之前的数据也获取。主节点挂掉,从节点等待
准备工作
1.创建了一个目录 master-slave
mkdir master-slave
2.把redis配置文件复制到master-slave
cp redis.conf master-slave/
3.在master 目录下复制三个redis 文件并重命名
4.分别修改上面三个文件的端口号以及rdb持久化文件的名称 并aof关闭。
-
启动redis时指定上面的三个配置文件 (如果想要查看redis进程信息,使用:ps -ef | grep redis )
6.启动三台服务器
7.使用info replication命令查看三个redis节点的信息,当前显示都是主,需要设置
8.把7001设置成为主,7002和7003设置成从我们在7002和7003使用slaveof 127.0.0.1 7001 命令
把7002和7003挂载7001上
9.主节点挂掉,从节点不会上位主节点,而是等待主节点归来。
如果这时,有一个新得节点加入到主从上了,新节点可以把之前得数据获取。
**Redis主从复制的缺点:**没有办法对master进行动态选举,需要使用Sentinel机制完成动态选举。
哨兵模式
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
优点
1.哨兵集群模式是基于主从模式的,所有主从的优点,哨兵模式同样具有。
2.主从可以切换,故障可以转移,系统可用性更好。
3.哨兵模式是主从模式的升级,系统更健壮,可用性更高。
缺点
1.Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。
2.实现哨兵模式的配置也不简单,甚至可以说有些繁琐
前提:先配置好主从关系,并且启动主从服务,连接上主从redis服务器!见以上操作。在执行以下操作:
修改sentinel.conf的配置
127.0.0.1表示redis主节点的ip
6379 表示主节点的端口号
2 表示有多少个哨兵选取redis从节点后,该从节点可以当选为主节点。
sentinel monitor mymaster 127.0.0.1 7001 1
启动哨兵
redis-sentinel sentinel.conf
总结:当主机挂掉之后就会从从机选举出来一个主机,当挂掉的主机再次活过来。依然是从,不能变成主机。
去中心化集群
准备工作
(1)先创建一个目录
three-master-three-slave
(2)把redis.conf配置文件赋值到three-master-three-slave里面
注意:这里要用最原始的配置文件,不能用配置哨兵的配置文件
(3)需要修改redis.conf的以下配置
port 8001
bind 0.0.0.0
daemonize yes
appendonly yes # 是否以append only模式作为持久化方式,默认使用的是rdb方式持久化,这 种方式在许多应用中已经足够用了
注意:必须保证aof开启,保证redis中没有数据。
开启集群
cluster-enabled yes (833行)
集群的配置文件,该文件自动生成
cluster-config-file nodes-8001.conf (841行)
集群的超时时间
cluster-node-timeout 5000 (847行)
(4)启动所有的redis
redis-server redis-8001.conf
已经启动成功
(5)为主节点分配槽以及分配从节点
cluster-replica:每个主节点跟随的从节点的个数
redis-cli --cluster create --cluster-replicas 1 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006
注意:前三个公网ip已经端口号都表示主机,后三个表示从机
(6)客户端访问:
redis-cli -c -h 127.0.0.1 -p 8001
(7)将8001挂掉(主机),8004(从机)就会上位成为主机
所以:
(8)8001如果再回来,仍然是从,不会再变成主
注意:在任何一个节点操作都会跳走