redis集群设计方案及道理(3)

    • 在从节点中选择新的主节点:选择的原则是,首先过滤掉不康健的从节点;然后选择优先级最高的从节点(由slave-priority指定);假如优先级无法区分,则选择复制偏移量最大的从节点;假如仍无法区分,则选择runid最小的从节点。

    • 更新主从状态:通过slaveof no one呼吁,让选出来的从节点成为主节点;并通过slaveof呼吁让其他节点成为其从节点。

    • 将已经下线的主节点(即6379)配置为新的主节点的从节点,当6379从头上线后,它会成为新的主节点的从节点。

三、集群

集群,即Redis Cluster,是Redis 3.0开始引入的漫衍式存储方案。

集群由多个节点(Node)构成,Redis的数据漫衍在这些节点中。集群中的节点分为主节点和从节点:只有主节点认真读写请求和集群信息的维护;从节点只举办主节点数据和状态信息的复制。

集群的浸染,可以归纳为两点:

  1、数据分区:数据分区(或称数据分片)是集群最焦点的成果。

集群将数据分手到多个节点,一方面打破了Redis单机内存巨细的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读处事和写处事,大大提高了集群的响应本领。

Redis单机内存巨细受限问题,在先容耐久化和主从复制时都有提及;譬喻,假如单机内存太大,bgsave和bgrewriteaof的fork操纵大概导致主历程阻塞,主从情况下主机切换时大概导致从节点长时间无法提供处事,全量复制阶段主节点的复制缓冲区大概溢出……。

  2、高可用:集群支持主从复制和主节点的自动妨碍转移(与哨兵雷同);当任一节点产生妨碍时,集群仍然可以对外提供处事。

集群的搭建:
  这一部门我们将搭建一个简朴的集群:共6个节点,3主3从。利便起见:所有节点在同一台处事器上,以端标语举办区分;设置从简。3个主节点端标语:7000/7001/7002,对应的从节点端标语:8000/8001/8002。


集群的搭建有两种方法:

  (1)手动执行Redis呼吁,一步步完成搭建;

  (2)利用Ruby剧本搭建。二者搭建的道理是一样的,只是Ruby剧本将Redis呼吁举办了打包封装;在实际应用中推荐利用剧本方法,简朴快捷不容易堕落。下面别离先容这两种方法。
集群的搭建可以分为四步:(1)启动节点:将节点以集群模式启动,此时节点是独立的,并没有成立接洽;(2)节点握手:让独立的节点连成一个网络;(3)分派槽:将16384个槽分派给主节点;(4)指定主从干系:为从节点指定主节点。

第一种搭建: 手动
(1)启动节点
  集群节点的启动仍然是利用redis-server呼吁,但需要利用集群模式启动。下面是7000节点的设置文件(只列出了节点正常事情要害设置,其他设置(如开启AOF)可以参照单机节点举办):

  #redis-7000.conf
  port 7000
  cluster-enabled yes
  cluster-config-file "node-7000.conf"
  logfile "log-7000.log"
  dbfilename "dump-7000.rdb"
  daemonize yes
  个中的cluster-enabled和cluster-config-file是与集群相关的设置。

  cluster-enabled yes:Redis实例可以分为单机模式(standalone)和集群模式(cluster);cluster-enabled yes可以启动集群模式。在单机模式下启动的Redis实例,假如执行info server呼吁,可以发明redis_mode一项为standalone
  cluster-config-file:该参数指定了集群设置文件的位置。每个节点在运行进程中,会维护一份集群设置文件;每当集群信息产生变革时(如增减节点),集群内所有节点会将最新信息更新到该设置文件;当节点重启后,会从头读取该设置文件,获取集群信息,可以利便的从头插手到集群中。也就是说,当Redis节点以集群模式启动时,会首先寻找是否有集群设置文件,假如有则利用文件中的设置启动,假如没有,则初始化设置并将设置生存到文件中。集群设置文件由Redis节点维护,不需要人工修改。
编辑好设置文件后

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdjdy.html