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

[经验分享] redis的集群配置

[复制链接]

尚未签到

发表于 2018-11-6 06:25:11 | 显示全部楼层 |阅读模式
  1.安装:
  $ wget http://download.redis.io/releases/redis-3.0.3.tar.gz
  $ tar xzf redis-3.0.3.tar.gz
  $ cd redis-3.0.3
  #支持包没有,问题真多,安装了gcc,tcl
  [root@t1 redis-3.0.3]# ./runtest
  You need tcl 8.5 or newer in order to run the Redis test
  [root@t1 redis-3.0.3]# yum install tcl
  已加载插件:fastestmirror, product-id, subscription-manager
  Updating certificate-based repositories.

  Unable to read consumer>  设置安装进程
  Loading mirror speeds from cached hostfile
  base
  ......
  [root@t2 redis-3.0.3]# make
  cd src && make all
  make[1]: Entering directory `/opt/redis-3.0.3/src'
  rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-dump redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html
  (cd ../deps && make distclean)
  make[2]: Entering directory `/opt/redis-3.0.3/deps'
  (cd hiredis && make clean) > /dev/null || true
  (cd linenoise && make clean) > /dev/null || true
  (cd lua && make clean) > /dev/null || true
  (cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
  (rm -f .make-*)
  make[2]: Leaving directory `/opt/redis-3.0.3/deps'
  (rm -f .make-*)
  echo STD=-std=c99 -pedantic >> .make-settings
  echo WARN=-Wall -W >> .make-settings
  echo OPT=-O2 >> .make-settings
  echo MALLOC=jemalloc >> .make-settings
  echo CFLAGS= >> .make-settings
  echo LDFLAGS= >> .make-settings
  echo REDIS_CFLAGS= >> .make-settings
  echo REDIS_LDFLAGS= >> .make-settings
  echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -Wall -W -O2 -g -ggdb   -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
  echo PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic >> .make-settings
  (cd ../deps && make hiredis linenoise lua jemalloc)
  make[2]: Entering directory `/opt/redis-3.0.3/deps'
  (cd hiredis && make clean) > /dev/null || true
  (cd linenoise && make clean) > /dev/null || true
  (cd lua && make clean) > /dev/null || true
  (cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
  (rm -f .make-*)
  (echo "" > .make-ldflags)
  (echo "" > .make-cflags)
  MAKE hiredis
  cd hiredis && make static
  make[3]: Entering directory `/opt/redis-3.0.3/deps/hiredis'
  gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
  make[3]: gcc:命令未找到
  make[3]: *** [net.o] 错误 127
  make[3]: Leaving directory `/opt/redis-3.0.3/deps/hiredis'
  make[2]: *** [hiredis] 错误 2
  make[2]: Leaving directory `/opt/redis-3.0.3/deps'
  make[1]: [persist-settings] 错误 2 (忽略)
  CC adlist.o
  /bin/sh: cc: command not found
  make[1]: *** [adlist.o] 错误 127
  make[1]: Leaving directory `/opt/redis-3.0.3/src'
  make: *** [all] 错误 2
  [root@t2 redis-3.0.3]# yum install gcc
  已加载插件:fastestmirror, product-id, subscription-manager
  Updating certificate-based repositories.

  Unable to read consumer>  设置安装进程
  Repository base is listed more than once in the configuration
  Repository updates is listed more than once in the configuration
  Repository extras is listed more than once in the configuration
  Repository centosplus is listed more than once in the configuration
  Repository contrib is listed more than once in the configuration
  Loading mirror speeds from cached hostfile
  * base: ftp.sjtu.edu.cn
  * extras: mirrors.163.com
  * updates: centos.ustc.edu.cn
  $ make
  出错:
  [root@t1 redis-3.0.3]# make
  cd src && make all
  make[1]: Entering directory `/opt/redis-3.0.3/src'
  CC adlist.o
  在包含自 adlist.c:34 的文件中:
  zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录
  zmalloc.h:55:2: 错误:#error "Newer version of jemalloc required"
  make[1]: *** [adlist.o] 错误 1
  make[1]: Leaving directory `/opt/redis-3.0.3/src'
  make: *** [all] 错误 2
  解决:
  To force compiling against libc malloc, use:
  % make MALLOC=libc
  (错误解决URL:http://www.phperz.com/article/14/1219/42002.html)
  2.配置
  2.1、新建6个instance,3个master,3个slave;
  1.    192.168.2.188:6379
  2.    192.168.2.188:6380
  3.    192.168.2.132:6379
  4.    192.168.2.132:6380
  5.    192.168.2.134:6379
  6.    192.168.2.134:6380
  新建实例之前要改一下redis.conf的内容,先改端口号,再改下面的cluster配置项
  # Accept connections on the specified port, default is 6379.
  # If port 0 is specified Redis will not listen on a TCP socket.
  port 6379
  ################################ REDIS CLUSTER ###############################
  #
  # Normal Redis instances can't be part of a Redis Cluster;only nodes that are
  # started as cluster nodes can. In order to start a Redisinstance as a
  # cluster node enable the cluster support uncommenting thefollowing:
  #
  cluster-enabled yes
  # Every cluster node has a cluster configuration file. Thisfile is not
  # intended to be edited by hand. It is created and updated byRedis nodes.
  # Every Redis Cluster node requires a different clusterconfiguration file.
  # Make sure that instances running in the same system does nothave
  # overlapping cluster configuration file names.
  #
  cluster-config-file nodes-6379.conf
  # Cluster node timeout is the amount of seconds a node must beunreachable
  # for it to be considered in failure state.
  # Most other internal time limits are multiplicators of thenode timeout.
  #
  cluster-node-timeout 15
  # In order to setup your cluster make sure to read thedocumentation
  # available at http://redis.io web site.
  #复制配置文件,并修改port: 6380, cluster-config-file nodes-6380.conf
  cp redis.conf redis2.conf
  启动6个实例:
  [root@t1 redis-3.0.3]# src/redis-server redis.conf &
  [root@t1 redis-3.0.3]# src/redis-server redis2.conf &
  [root@t1 redis-3.0.3]# ps -ef|grep redis
  root      3105  2024  0 14:36 pts/0    00:00:02 src/redis-server *:6379 [cluster]
  root      3191  2024  0 15:04 pts/0    00:00:00 src/redis-server *:6380 [cluster]
  root      3197  2024  0 15:04 pts/0    00:00:00 grep redis
  [root@t2 redis-3.0.3]# src/redis-server redis.conf &
  [root@t2 redis-3.0.3]# src/redis-server redis2.conf &
  [root@t2 redis-3.0.3]# ps -ef|grep redis
  root     26035 17602  0 15:05 pts/2    00:00:00 src/redis-server *:6379 [cluster]
  root     26043 17602  0 15:05 pts/2    00:00:00 src/redis-server *:6380 [cluster]
  root     26057 17602  0 15:06 pts/2    00:00:00 grep redis
  [root@localhost redis-3.0.3]# src/redis-server redis.conf &
  [root@localhost redis-3.0.3]# src/redis-server redis2.conf &
  [root@localhost redis-3.0.3]# ps -ef|grep redis
  root      5689  1249  0 15:08 pts/0    00:00:00 src/redis-server *:6379 [cluster]
  root      5692  1249  0 15:08 pts/0    00:00:00 src/redis-server *:6380 [cluster]
  root      5696  1249  0 15:08 pts/0    00:00:00 grep redis
  2.2 建立集群:
  2.2.1 安装ruby 及 rubygems,
  [root@t1 redis-3.0.3]# yum install ruby
  [root@t1 redis-3.0.3]# yum install rubygems
  [root@t1 redis-3.0.3]# gem install redis    #安装ruby 的redis 接口支持包
  2.2.2 测试是否能连接上其它服务器的redis-server
  [root@t1 redis-3.0.3]# src/redis-cli -h 192.168.2.134 -p 6379
  Could not connect to Redis at 192.168.2.134:6379: No route to host
  not connected> exit
  2.2.3 关闭其它服务器中的防火墙
  [root@t2 redis-3.0.3]# chkconfig iptables off
  [root@t2 redis-3.0.3]# service iptables stop
  iptables:清除防火墙规则:                                 [确定]
  iptables:将链设置为政策 ACCEPT:filter                    [确定]
  iptables:正在卸载模块:                                   [确定]
  2.2.4 建立集群:
  [root@t1 redis-3.0.3]# src/redis-trib.rb create --replicas 1 192.168.2.188:6379 192.168.2.188:6380 192.168.2.132:6379 192.168.2.132:6380 192.168.2.134:6379 192.168.2.134:6380
  >>> Creating cluster
  Connecting to node 192.168.2.188:6379: OK
  Connecting to node 192.168.2.188:6380: OK
  Connecting to node 192.168.2.132:6379: OK
  Connecting to node 192.168.2.132:6380: OK
  Connecting to node 192.168.2.134:6379: OK
  Connecting to node 192.168.2.134:6380: OK
  >>> Performing hash slots allocation on 6 nodes...
  Using 3 masters:
  192.168.2.134:6379
  192.168.2.132:6379
  192.168.2.188:6379
  Adding replica 192.168.2.132:6380 to 192.168.2.134:6379
  Adding replica 192.168.2.134:6380 to 192.168.2.132:6379
  Adding replica 192.168.2.188:6380 to 192.168.2.188:6379
  M: 811daf9b3f895bf891c65cee5b8e70a9f8fd4c8a 192.168.2.188:6379
  slots:10923-16383 (5461 slots) master
  S: 902fd7e670ece8f4b993b930e1619d3e5ee89b0f 192.168.2.188:6380
  replicates 811daf9b3f895bf891c65cee5b8e70a9f8fd4c8a
  M: cc6c9301a0fc8e97ce7c00bb13529552323f6f60 192.168.2.132:6379
  slots:5461-10922 (5462 slots) master
  S: b55836ddfeb279b4cab60faec8ec53acf0da075e 192.168.2.132:6380
  replicates 9d296647ae6cac139a817d46ab3efef50290def8
  M: 9d296647ae6cac139a817d46ab3efef50290def8 192.168.2.134:6379
  slots:0-5460 (5461 slots) master
  S: 91cab39311b0bd69ccf5de9608778d271064e087 192.168.2.134:6380
  replicates cc6c9301a0fc8e97ce7c00bb13529552323f6f60
  Can I set the above configuration? (type 'yes' to accept): yes
  >>> Nodes configuration updated
  #查看 集群信息
  [root@t1 redis-3.0.3]# src/redis-cli -p 6379
  127.0.0.1:6379> cluster info
  cluster_state:ok
  cluster_slots_assigned:16384
  cluster_slots_ok:16384
  cluster_slots_pfail:0
  cluster_slots_fail:0
  cluster_known_nodes:6
  cluster_size:3
  cluster_current_epoch:6
  cluster_my_epoch:1
  cluster_stats_messages_sent:1305
  cluster_stats_messages_received:1305
  127.0.0.1:6379>
  127.0.0.1:6379> set hello tang
  OK
  127.0.0.1:6379> keys *
  1) "hello"
  127.0.0.1:6379> set user_id 1234
  OK
  127.0.0.1:6379> keys *
  1) "user_id"
  2) "hello"
  127.0.0.1:6379> get user_id
  "1234"
  127.0.0.1:6379>
  [root@t2 redis-3.0.3]# src/redis-cli -p 6380
  127.0.0.1:6380> keys *
  1) "user_id"
  2) "hello"
  127.0.0.1:6380> get user_id
  (error) MOVED 3139 192.168.2.134:6379
  127.0.0.1:6380> get hello
  (error) MOVED 866 192.168.2.134:6379
  127.0.0.1:6380> keys *
  1) "user_id"
  2) "hello"
  127.0.0.1:6380> exit
  #当使用参数 -c 登录后,会自动取到其它节点中的数据
  [root@t2 redis-3.0.3]# src/redis-cli -c -p 6380
  127.0.0.1:6380> get user_id
  -> Redirected to slot [3139] located at 192.168.2.134:6379
  "1234"
  192.168.2.134:6379> get hello
  "tang"
  192.168.2.134:6379> keys *
  1) "user_id"
  2) "hello"
  192.168.2.134:6379> get year
  -> Redirected to slot [10071] located at 192.168.2.132:6379
  "2015"
  192.168.2.132:6379> get month
  "08"
  192.168.2.132:6379> get day
  -> Redirected to slot [4110] located at 192.168.2.134:6379
  (nil)
  192.168.2.134:6379>


运维网声明 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-631211-1-1.html 上篇帖子: redis的简单安装和配置文件的参数 下篇帖子: redis的简单操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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