1.0 Redis-Cluster 架构
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value
Redis集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,
redis 先对key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,
这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,
redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
-----------------思维导图如下------------------
2.0 Redis的搭建
Redis集群中至少需要三个节点。要保证集群的高可用,每个节点有一个备份机。所以需要6台服务器。
可以考试使用一台虚拟机运行6个redis实例。
1.0 安装Ruby
前提需要有yum环境, CentOs系统不需要安装,自带yum, RedHat需要安装
指令 (先创建一个Cluster文件夹 在文件夹里操作)
1 yum -y install ruby
2 yum -y install rubygems
3 第三步骤需要上传一个gem文件, rz指令上传即可, gem install redis-3.2.2.gem 进行安装
2.0 搭建配置6个redis
1.0 装gem后会生成一个redis-2.2.2-----文件,建议更改名称,
2 . 后解压 tar -zxvf redis3.2.2 图片里解压后为red1
2. 1 进入red1 修改redis.conf文件
{
一:修改端口号7111-7116
二:修改cluster-enabled yes前的注释去掉
三: 修改后台模式 daemonz__ --yes
四: 关闭保护和关闭绑定 protected-mode no 注释掉bind127.0.0.1
}
3. 然后复制redis-trib.rb 到Cluster文件夹里, cp /usr/local/redis-3.2.9/src/redis-trib.rb文件到Cluster文件夹
4. 创建 start-all.sh文件: (并且修改里面的文件名字和ip)
cd redis1
redis-server redis.conf
cd ..
cd redis2
redis-server redis.conf
cd ..
cd redis3
redis-server redis.conf
cd ..
cd redis4
redis-server redis.conf
cd ..
cd redis5
redis-server redis.conf
cd ..
cd redis6
redis-server redis.conf
cd .../redis-trib.rb create --replicas 1 192.168.25.129:7111 192.168.25.129:7112 192.168.25.129:7113 192.168.25.129:7114 192.168.25.129:7115 192.168.25.129:7116
--replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)
5. 注意:修改文件权限:
chmod u+x start-all.sh
6. 全部启动
1.0 ./start-all.sh
2.0 有选项的话选择yes
3.0 查看 ps -ef | grep
7. 关闭文件 和 赋权限(与开启文件操作一致)shutdow-all.sh
redis-cli -p 7111 shutdown
redis-cli -p 7112 shutdown
redis-cli -p 7113 shutdown
redis-cli -p 7114 shutdown
redis-cli -p 7115 shutdown
redis-cli -p 7116 shutdownrm -f redis*/dump.rdb
rm -f redis*/appendonly.aof
rm -f redis*/nodes.conf