sweli 发表于 2018-11-6 09:17:06

redis3.0集群说明与搭建

  Redis3.0集群说明:
  1.Redis集群提供一种运行Redis的方式,数据被自动的分片到多个Redis节点。
  2. 集群不支持处理多个键的命令,因为这需要在Redis节点间移动数据,使得               Redis集群不能提供像Redis单点那样的性能,在高负载下会表现得不可预知。
  3.集群可在多个节点间自动拆分数据集。
  当部分节点正在经历失败或者不能与集群其他节点通信时可继续运转
  4 Redis集群不保证数据强一致性。
  redis-server 集群以哈希槽的方式存放数据(目前最大是 16384 个哈希槽)
  5.redis集群通过failover选举方式进行容错,保证一台Server挂了还能跑,这个选举是全部集群超 过半数以上的Master发现其他Master挂了后,会将其他对应的Slave节点升级成Master.
  6.cluster环境下redis的slave不接受任何读写操作
  7.从节点挂掉或失效,不需要进行failover,redis cluster能正常提供服务;主节点挂掉或失效需要进行failover。另外,redis cluster还支持manual failover,即人工进行failover,产从节点变为主节点,即使主节点还活着。下面将介绍这两种类型的failover。
  搭建配置:
  双机六节点

[*]  redis节点部署
  http://download.redis.io/releases/redis-3.0.3.tar.gz
  依赖包
  yum -y install ruby ruby-devel rubygems rpm-build
  gem install redis
  安装:
  S1和S2
  tar -zxvf redis-3.0.3.tar.gz
  cd redis
  make MALLOC=libc&& make install
  规划节点:
  S1,S2分别运行3个节点
  s1:
  mkdir /usr/local/redis_cluster
  cd /usr/local/redis_cluster
  mkdir 7000 7001 7002
  s2 :
  mkdir /usr/local/redis_cluster
  cd /usr/local/redis_cluster
  mkdir 7003 7005 7004
  创建配置节点:
  cp /usr/local/redis-3.0.3/redis.conf/usr/local/redis_cluster/7000
  vim/usr/local/redis_cluster/7000
  daemonize    yes                        pidfile/var/run/redis_7000.pid    pidfile文件对应端口号port7000                     端口7000cluster-enabledyes                  开启集群功能cluster-config-filenodes.conf      指定集群的配置文件cluster-node-timeout   5000       节点请求超时appendonly   yes                  开启aof日志
  cp/usr/local/redis_cluster/7000/redis.conf/usr/local/redis_cluster/700X
  分别复制redis.conf配置文件到各节点存放的目录 并修改端口号和pid文件
  以配置文件方式启动各节点:
  cd/usr/local/redis_cluster/700X/
  redis-serverredis.conf
  配置无误启动后在各节点目录中会生成以下文件
http://blog.51cto.com/e/u261/themes/default/images/spacer.gif
  查看一下redis监听的端口号,确定各节点正常运行
  netstat -tnlp | grep redis
  我们除了看到 配置文件中设置的端口700X   还有700X+10000(1700X), 前者是客户端访问的, 后者是集群内部节点之间访问的.
  2.Redis3.0集群创建
  创建集群之前先配置iptables开放redis端口:
  Iptales配置(测试环境直接关闭)
  iptables -A INPUT -p tcp --dport 700X -j ACCEPT
  iptables -A INPUT -p tcp --dport 1700X -j ACCEPT
  创建:
  s1上:
  cd /usr/local/redis/src/
  ./redis-trib.rb    (查看集群使用的的语法)
  /usr/local/redis/src/redis-trib.rbcreate--replicas1   127.0.0.1:7000127.0.0.1:7001192.168.183.131:7005192.168.183.131:7006192.168.1.199:7007127.0.0.1:7002
  # --replicas1表示 自动为每一个master节点分配一个slave节点    上面有6个节点,redis会按照一定规则生成 3个master(主)3个slave(从),--replicas不同时只从数量也不同。
http://blog.51cto.com/e/u261/themes/default/images/spacer.gif
  打开上s2终端:
  cd /usr/local/redis_cluster/7005-7
  redis-cli -c -p 7005-7
  cluster meet 192.168.183.129 7000
http://blog.51cto.com/e/u261/themes/default/images/spacer.gif
  查看集群主从节点分配
  /usr/local/redis/src/redis-trib.rb check 127.0.0.1:700X
http://blog.51cto.com/e/u261/themes/default/images/spacer.gif
  M: 0188178f958b0598d95c7bf852aa97e79f89507b 192.168.183.129:7002
  slots:5461-10922 (5462 slots) master
  1 additional replica(s)
  S: fbc29b05d2c0ec1a02644fddbf65d3e499ad66ec 192.168.183.131:7003
  slots: (0 slots) slave
  replicates 0188178f958b0598d95c7bf852aa97e79f89507b
  M: c775049713a9d950bb80972ff760aa9add598728 192.168.183.129:7001
  slots:10923-16383 (5461 slots) master
  1 additional replica(s)
   All nodes agree about slots configuration.
  >>> Check for open slots...
  >>> Check slots coverage...
   All 16384 slots covered.

[*]  集群数据同步测试;
  在s1上:
  # redis-cli -c -p 7000
  127.0.0.1:7000> set gozap yunweibu
  -> Redirected to slot located at 127.0.0.1:7002
  OK
  127.0.0.1:7002> get gozap
  "yunweibu"
  127.0.0.1:7002>
  在s2上:
  # redis-cli -c -p 7005当使用参数 -c 登录后,会自动取到其它节点中的数据
  127.0.0.1:7005> get gozap
  -> Redirected to slot located at 192.168.183.129:7002
  "yunweibu"
  192.168.183.129:7002>
  官方说明:Redis 3.0版本相对于2.8版本带来的主要新特性包括:

[*]  引入了全新的"embedded string" 对象编码方式,从而实现了更少的缓存丢失和在特定的工作负载下速度的大幅提升;
[*]  AOF重写过程中的 "last write" 操作降低了AOF child -> parent数据传输的延迟
[*]  大幅提升LRU算法的性能以用于值的失效;
[*]  WAIT命令能够阻塞传输到指定数量从节点的写操作;
[*]  实现了对MIGRATE连接缓存的支持,从而大幅提升键值迁移的性能;
[*]  为MIGARTE新增了参数:COPY和REPLACE;
[*]  CLIENT PAUSE命令实现了在指定时间内停止处理客户端请求;
[*]  提高了BITCOUNT、INCR操作的性能;
[*]  CONFIG SET能够接受不同单位的内存值,如CONFIG SET maxmemory 1gb;
[*]  调整Redis日志格式。
  运维部

页: [1]
查看完整版本: redis3.0集群说明与搭建