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

[经验分享] centos下redis集群安装

[复制链接]

尚未签到

发表于 2017-12-21 14:37:56 | 显示全部楼层 |阅读模式
  Redis集群部署文档(centos6系统)
  (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)
  127.0.0.1:7000
  127.0.0.1:7001
  127.0.0.1:7002
  127.0.0.1:7003
  127.0.0.1:7004
  127.0.0.1:7005
  1:下载redis。官网下载3.0.0版本,之前2.几的版本不支持集群模式
  下载地址:https://github.com/antirez/redis/archive/3.0.0-rc2.tar.gz
  2:上传服务器,解压,编译
  tar -zxvf redis-3.0.0-rc2.tar.gz
  mv redis-3.0.0-rc2.tar.gz redis3.0
  cd /usr/local/redis3.0
  make
  make install
  3:创建集群需要的目录
  mkdir -p /usr.local/cluster
  cd /usr.local/cluster
  mkdir 7000
  mkdir 7001
  mkdir 7002
  mkdir 7003
  mkdir 7004
  mkdir 7005
  4:修改配置文件redis.conf
  cp /usr/local/redis3.0/redis.conf  /usr.local/cluster
  vi redis.conf
  ##修改配置文件中的下面选项
  port 7000
  daemonize yes
  cluster-enabled yes
  cluster-config-file nodes.conf
  cluster-node-timeout 5000
  appendonly yes
  ##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7000/7001/7002/7003/7004/7005目录下面
  cp /usr/local/cluster/redis.conf /usr/local/cluster/7000
  cp /usr/local/cluster/redis.conf /usr/local/cluster/7001
  cp /usr/local/cluster/redis.conf /usr/local/cluster/7002
  cp /usr/local/cluster/redis.conf /usr/local/cluster/7003
  cp /usr/local/cluster/redis.conf /usr/local/cluster/7004
  cp /usr/local/cluster/redis.conf /usr/local/cluster/7005
  ##注意:拷贝完成之后要修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称
  5:分别启动这6个redis实例
  cd /usr/local/cluster/7000
  redis-server redis.conf
  cd /usr/local/cluster/7001
  redis-server redis.conf
  cd /usr/local/cluster/7002
  redis-server redis.conf
  cd /usr/local/cluster/7003
  redis-server redis.conf
  cd /usr/local/cluster/7004
  redis-server redis.conf
  cd /usr/local/cluster/7005
  redis-server redis.conf
  ##启动之后使用命令查看redis的启动情况ps -ef|grep redis
  如下图显示则说明启动成功
  6:执行redis的创建集群命令创建集群
  cd /usr/local/redis3.0/src
  ./redis-trib.rb  create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
  6.1执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境
  错误内容:/usr/bin/env: ruby: No such file or directory
  所以需要安装ruby的环境,这里推荐使用yum install ruby安装
  yum install ruby
  6.2然后再执行第6步的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装
  错误内容:
  ./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
  from ./redis-trib.rb:24
  yum install rubygems
  6.3再次执行第6步的命令,还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装
  错误内容:
  /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
  from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
  from ./redis-trib.rb:25
  gem install  redis --version 3.0.0
  注意:gem install redis --version 3.0.0 失败的话,需要修改一下gem的源
  gem sources --remove https://rubygems.org/
  gem sources -a https://ruby.taobao.org/
  6.4 再次执行第6步的命令,正常执行
DSC0000.jpg

  输入yes,然后配置完成。
DSC0001.jpg

  至此redis集群即搭建成功!
  7:使用redis-cli命令进入集群环境
  redis-cli -c -p 7000
  ps aux|grep redis
  各种问题解决方法
  cannot load such file – redis (LoadError)
  http://blog.csdn.net/moxiaomomo/article/details/17540813
  Sorry, can’t connect to node
  http://blog.csdn.net/beyondlpf/article/details/51275106
  Creating cluster [ERR]Sorry, can’t connect to node?修改
  https://www.zhihu.com/question/48142475 [局域网ip 和localhost连接会有不同的效果]
  http://blog.csdn.net/qq_22929803/article/details/50393265
  [ERR] Node 127.0.0.1:7000 is not configured as a cluster node.
  更新cluster-enabled yes 为true
  http://xiaorui.cc/2015/05/16/ubuntu%E5%AE%89%E8%A3%85%E6%B5%8B%E8%AF%95redis3-0%E7%9A%84cluster%E9%9B%86%E7%BE%A4%E6%A8%A1%E5%BC%8F/
  [ERR] Node is not empty. Either the node already knows other nodes (check with C
  http://blog.csdn.net/vtopqx/article/details/50235737
  redisCluster至少需要6个结点
  ./src/redis-trib.rb create –replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
  Redis配置集群遇到问题及解决方法
  ERR Slot 12182 is already busy (Redis::CommandError)
  http://blog.csdn.net/moxiaomomo/article/details/19333547 [nice]
  http://blog.csdn.net/ownfire/article/details/46624005
  redis 简介 -> 调优 -> 集群配置
  http://www.cnblogs.com/goody9807/p/4279147.html
  接下来再测试运行,发先已经链接上了,说明问题解决,但是又出现新的问题 :DENIED Redis is running in protected mode because protected mode is enabled…
DSC0002.png

  另一种方法:protected-mode no
  Exception in thread "main" redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException: Too many Cluster redirections?
  创建redis集群的时候使用的命令是:./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002  127.0.0.1:7003 127.0.0.1:7004  127.0.0.1:7005  127.0.0.1:7006
  但是由于java客户端在集群之外所以是这样写的:
  Set<HostAndPort> nodes=new HashSet<HostAndPort>();
  nodes.add(new HostAndPort("192.168.0.104", 7001));
  nodes.add(new HostAndPort("192.168.0.104", 7002));
  nodes.add(new HostAndPort("192.168.0.104", 7003));
  nodes.add(new HostAndPort("192.168.0.104", 7004));
  nodes.add(new HostAndPort("192.168.0.104", 7005));
  nodes.add(new HostAndPort("192.168.0.104", 7006));
  JedisCluster jc=new JedisCluster(nodes);
  jc.set("key1", "hello word");
  host地址不匹配,导致Too many Cluster redirections
  所以重新构建集群使用:./redis-trib.rb create --replicas 1 192.168.0.104:7001 192.168.0.104:7002  192.168.0.104:7003  192.168.0.104:7004  192.168.0.104:7005  192.168.0.104:7006
  ERR] Node 192.168.161.131:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
  dump.rdb是由Redis服务器自动生成的 默认情况下 每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”的文件里,这个持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库状态恢复到上一次做SNAPSHOT时的状态。
  知道原因后就好办了,解决办法:
  1)将每个节点下aof、rdb、nodes.conf本地备份文件删除;
  2)172.168.63.201:7001> flushdb #清空当前数据库(可省略)
  3)之后再执行脚本,成功执行;

运维网声明 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-426483-1-1.html 上篇帖子: Springboot使用redis 下篇帖子: php redis安装使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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