重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Redis-trib.rb为主流的Redis管理工具,对Redis一系列命令进行了封装通过ruby客户端完成Create Cluster,Reshard Cluster,Add Slave,Remove Node等功能。下面我们来看下Create Cluster建立cluster集群是如何实现的。
创新互联是专业的天涯网站建设公司,天涯接单;提供做网站、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行天涯网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作! 1. 节点连通性
2. 是否配置了cluster模式(if cluster_enabled==1?)
3. 是否已经为其他集群成员(if cluster_known_nodes==1?)
4. 检查至少有三个可用节点
5. 获取节点信息:
通过cluster nodes 命令获得统计信息
name,addr,flags,master_id, ping_sent,ping_recv,config_epoch,link_status,slot信息
如:
第559行-562行:将节点根据ip进行归类,dict的key为ip,value为这个ip所对应的节点信息。
第566行-577行:循环ip,每次抽取ip的一个节点放到interleaved里。这可以尽可能让相同节点的分开
第578行:截取interleaved里前几个节点作为masters_count,master_count是根据节点参数个数以及replacas个数决定的。
第585行-594行:根据节点的个数,对每个master节点所对应的slot范围进行计算。
Redis-trib通过ruby连redis的客户端进行配置集群
在新主节点被加入集群后,他没有任何slot数据,需要通过reshard从其他节点中迁移些slot到新节点。
775行 通过slot个数对源节点进行排序,slot多的排在前面
776行-778行 计算源节点的slot总个数
779行-785行 可以看到按照节点占slot总数的百分比来迁移slot,及slot个数越多的节点将被迁移更多。还可以看到slot节点最多的节点会为slot的大整数
786行-791行 将slot的分派到节点的信息插入moved变量中
redis支持动态迁移。当slot被设置为状态migrating状态后,当redis client查询节点这个slot所对应的key时,如果节点发现这个key存在直接返回值,如果发现这个key不存在自己的slot里他会发送asking 请求告诉客户端去迁移的目标节点查并且不更改客户端维护的slot分布信息,当客户端请求目标节点时该slot时都是refuse并重定向的,当请求包含asking时他就会接受这个请求并读取key。当迁移完成,他会设置setslot node ,这个操作将会把slot迁移状态清除并设置该slot的新的目标节点。
del-node用于剔除集群中的节点。
337行 选出集群中的master
338行-341行 根据master的slave个数排序,取出最少slave的master作为目标从库的新master
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。