设为首页 收藏本站
查看: 1110|回复: 0

[经验分享] Redis Cluster集群搭建测试

[复制链接]

尚未签到

发表于 2018-11-4 11:09:30 | 显示全部楼层 |阅读模式
  # Redis Clutser #
  ## 一、Redis Cluster集群 ##
  参考资料:
  http://www.cnblogs.com/lykxqhh/p/5690923.html
  Redis集群搭建的方式有多种,例如使用zookper等,但从redis3.0之后版本支持redis cluster集群,Redis Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。其redis cluster架构图如下:
DSC0000.png

  其结构特点:
  1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
  2、节点的fail机制是通过集群中超过半数的节点检测失效时才生效。
  3、客户端与redis节点直连,不需要中间件proxy层。客户端不需要连接集群所有节点,连接集群中其中一和可用节点即可。
  4、redis cluster把所有的物理节点映射到[0-16384]slot上(不一定平均分配),cluster负责维护nodeslotvalue。
  5、Redis集群预分配好16384个桶,当需要在Redis集群中放置一个key-value时,根据CRC16(key)mod 16384的值,决定一个key放到哪个桶中。
  1、redis cluster节点分配
  ----------
  现在我们是三个主节点分别是A、B、C三个节点,他们可以是一台机器上的三个端口,也可以是三台不同的服务器。那么,采用哈希槽(hash slot)的方式来分配16384个slot的话,它们三个节点分别承担的slot区间是:
  节点A覆盖0-5460;
  节点B覆盖5461-10922;
  节点C覆盖10923-16384.
  获取数据:
  如果存入一个值,按照redis clsuter哈希槽的算法:CRC16('key')%16384=6782。那么就会把这个key分配存储在B上了。同样,当我连接(A、B、C)任何一个节点想获取'key'这个key时,也会这样的算法,然后内部跳转到B节点上获取数据。
  新增一个主节点:
  新增一个主节点D,redis cluster的这种做法是从各个节点的前面各拿取一部分slot到D上,我会在接下来的实践中实验。大致就会变成这样:
  A节点覆盖1365-5460;
  B节点覆盖6827-10922;
  C节点覆盖12888-16384;
  D节点覆盖0-1364,5461-6826,10923-12287
  同样删除一个节点也是类似,移动完成后就可以删除这个节点了。
  2、Redis Cluster主从模式
  ----------
  redis cluster为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提取数据存储,从节点则是从主节点拉去数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。
  上面那个例子里,集群有ABC三个主节点,如果这三个节点都没有加入从节点,如果B挂掉了,我们就无法访问整个集群了。A和B的slot也无法访问了。
  所以我们在集群建立的时候,一定要为每个主节点都添加了从节点,比如像这样,集群包含主节点A、B、C以及从节点A1、B1、C1,那么即使B挂掉系统也可以继续正确工作。
  B1节点替代了B节点,所以Redis集群将会选择B1节点作为新的主节点,集群将会继续正确地提供服务。当B重新开启后,它就会变成B1的从节点。
  不过需要注意,如果节点B和B1同时挂掉了,Redis集群就无法正确地提供服务了。
  ## 二、redis集群的搭建 ##
  集群中至少应该有奇数个节点,所以至少有三个节点,每个节点至少有一个备份节点,所以下面使用6节点(主节点、备份节点由redis-cluster集群确定)。
  下面使用redis-3.2.5.tar.gz
  1、安装redis节点指定端口
  ----------
  实验环境:
  10.69.213.127 bj05-ops-mongodb04.test.gomeplus.com
  cd /opt
  wget http://download.redis.io/releases/redis-3.2.5.tar.gz
  tar -zxf redis-3.2.5.tar.gz
  cd redis-3.2.5
  make PREFIX=/usr/local/redis install
  mkdir -p /gomeo2o/data/redis/9000/db
  mkdir -p /gomeo2o/logs/redis/9000
  mkdir -p /usr/local/redis/etc
  rm -rf /usr/sbin/redis-*
  cat > /usr/local/redis/etc/redis_9000.conf  /etc/sysctl.conf
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
  sysctl -p
  cat >>/etc/rc.local

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630587-1-1.html 上篇帖子: Redis数据持久化 下篇帖子: redis-问题记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表