[关闭]
@zhangyy 2019-12-10T15:38:39.000000Z 字数 2660 阅读 179

redis 集群环境部署

运维系列


  • 一: redis 集群概述
  • 二: redis cluster 安装

一:redis 集群概述

1.1:redis集群

  1. Redis3.0版本之后支持Cluster.

1.2: redis cluster的现状

  1.  目前redis支持的cluster特性:
  2.   1):节点自动发现
  3.   2):slave->master 选举,集群容错
  4.   3):Hot resharding:在线分片
  5.   4):进群管理:cluster xxx
  6.   5):基于配置(nodes-port.conf)的集群管理
  7.   6):ASK 转向/MOVED 转向机制.

1.3: redis cluster的架构

image_1danfqf9p71p9971a455ucc059.png-912.6kB

  1.  架构细节:
  2.   (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
  3.   (2)节点的fail是通过集群中超过半数的节点检测失效时才生效.
  4.   (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
  5.   (4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

1.4:redis-cluster选举:容错

image_1danfsi2t1u3n185o1qeo1vbk9krm.png-670.5kB

  1. (1)领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.
  2.   (2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误
  3.   a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态.
  4.   b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

二:redis cluster安装

2.1 环境准备:

  1. 系统:
  2. rhel7.6x64
  3. 主机名配置:
  4. cat /etc/hosts
  5. ---
  6. 192.168.100.21 rhel01.flyfish
  7. 192.168.100.22 rhel02.flyfish
  8. 192.168.100.23 rhel03.flyfish
  9. ---
  10. 本次 使用三台虚拟机 模拟 6 给节点 redis 每台机器两台 redis 分散不通端口
  11. 192.168.100.21 7000 7001
  12. 192.168.100.22 7003 7004
  13. 192.168.100.23 7005 7006

2.2 安装编译redis:

  1. 三台机器全装:
  2. wget http://download.redis.io/releases/redis-5.0.4.tar.gz
  3. tar xzvf redis-5.0.4.tar.gz
  4. cd redis-5.0.4
  5. make

image_1dankqpht1kfp1flt8r81mp91ce813.png-311.4kB

  1. 172.17.100.12
  2. cd redis-5.0.4/src/
  3. cp -p redis-* /usr/local/bin/
  4. cd /usr/local/bin/
  5. rm -rf *.c
  6. rm -rf *.o
  7. mkdir -p /usr/local/redis_cluster
  8. cd /usr/local/redis_cluster/
  9. mkdir 7000
  10. mkdir 7001
  11. cd /root
  12. cd redis-5.0.4/
  13. cp -p redis.conf /usr/local/redis_cluster/7000
  14. cp -p redis.conf /usr/local/redis_cluster/7001

image_1danksefg1duobnf1dq51s7s1r9020.png-249.6kB

image_1danl21ib1ulq5cg1q6q1tg79rv2d.png-239.6kB

  1. cd /usr/local/redis_cluster/7000/
  2. vim redis.conf
  3. ---
  4. port 7000 //端口7000,7001,7002,7003,7004,7005
  5. bind 本机ip //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
  6. daemonize yes //redis后台运行
  7. pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002,7003,7004,7005
  8. cluster-enabled yes //开启集群 把注释#去掉
  9. cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002,7003,7004,7005
  10. cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
  11. appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 

2.2 启动redis

  1. 192.168.100.11
  2. cd /usr/local/
  3. bin/redis-server redis_cluster/7000/redis.conf
  4. bin/redis-server redis_cluster/7001/redis.conf

image_1danlsmlmjsqts818impelsks2q.png-240.7kB

image_1danm0c531ld6101a1i6i7vctl73k.png-130.6kB

  1. 192.168.100.12
  2. cd /usr/local/
  3. bin/redis-server redis_cluster/7002/redis.conf
  4. bin/redis-server redis_cluster/7003/redis.conf

image_1danltqnu1tpmjed1k71jbagam37.png-282.1kB

image_1danm0olq1l8drkn2bv1r7u14hd41.png-130.8kB

  1. 192.168.100.13
  2. cd /usr/local/
  3. bin/redis-server redis_cluster/7004/redis.conf
  4. bin/redis-server redis_cluster/7005/redis.conf

image_1danm1p8m101qik91pkimdb12784u.png-393.9kB

  1. 启动集群
  2. yum -y install ruby ruby-devel rubygems rpm-build
  3. cd /usr/local/
  4. bin/redis-cli --cluster create 192.168.100.21:7000 192.168.100.21:7001 192.168.100.22:7002 192.168.100.22:7003 192.168.100.23:7004 192.168.100.23:7005 --cluster-replicas 1

image_1dannc5l716rf1bt019vhfuv16g55b.png-164.2kB

image_1dannd2a7g9ki0s1v35qta13s5o.png-590.5kB

image_1danndg9j1u8h38l18cc1de12qv65.png-376kB

2.3 测试redis 集群

  1. 192.168.100.21 上面 创建 一个
  2. cd /usr/local/
  3. bin/redis-cli -c -h 192.168.100.21 -p 7000
  4. set yangyang 11

image_1dannfr131kmm16cv1diicvdjvv6i.png-178.4kB

  1. 192.168.100.23 上面 去查看
  2. cd /usr/local/
  3. bin/redis-cli -c -h 192.168.100.23 -p 7004
  4. get yangyang

image_1dannhd5tq5h111c1rtk18h1e4e6v.png-279.5kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注