一 简介:今天咱们来谈谈redis的集群架构
二 安装流程:
1 安装redis cd /root/software
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz
cd redis-3.2.4
make && make install
cp redis-trib.rb /usr/local/bin/
2 查看版本
redis-cli --version
3 创建集群目录
mkdir -p /usr/local/redis-cluster/7001-7006
cp /root/redis-3.2.4/redis.conf /usr/local/redis-cluster/7001-7006
4 修改配置文件
7001-7006
sed -i ‘s/6379/port/g‘ redis.conf
sed -i ‘s/^# cluster/cluster/g‘ redis.conf
sed -i ‘s/daemonize no/daemonize yes/g‘ redis.conf
sed -i ‘/following:/d‘ redis.conf
5 启动集群节点
redis-server /usr/local/redis_cluster/7001-7006/redis.conf
6 安装ruby环境
wget ftp.ruby-lang.org/pub/ruby/ruby-2.3.0.tar.gz
./configure
make && make install
需要注意 ruby需要1.9.3 以上否则下面会报错
gem install redis
7 创建集群
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
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
Adding replica 127.0.0.1:7006 to 127.0.0.1:7003
可以发现 前三的为主 后三的为从
M: 0a6fb23089113e7077199c9215913bc6cbdd6dee 127.0.0.1:7001
slots:0-5460 (5461 slots) master
M: 99b93fba6685d7a33b965959c3481581bc7f9122 127.0.0.1:7002
slots:5461-10922 (5462 slots) master
M: 2dbadedc66609586e0e969c9ad67110d28768ff1 127.0.0.1:7003
slots:10923-16383 (5461 slots) master
这些哈希值要注意下 以后迁移数据会用到
输入yes 创建成功
8 连接测试
redis-cli -c -p 7002 -c代表连接到集群
set hello word 添加kv
get hello 获取V
-> Redirected to slot [866] located at 127.0.0.1:7001
可以看到key被分配到7001的实例上
9 相关原理
1 如何分片数据到多个主
redis cluster 默认分配了 16384 个slot,当我们set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key 分到哈希槽区间的节点上,具体算法就是:CRC16(key) % 16384。这种方式被称为 哈希槽 (hash slot)的方式来分配的
2 master故障后的处理
Redis 集群会把数据存在一个 master 节点,然后在这个 master 和其对应的salve 之间进行数据同步。当读取数据时,也根据一致性哈希算法到对应的 master 节点获取数据。只有当一个master 挂掉之后,才会启动一个对应的 salve 节点,充当 master 。
注意 需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。
原文地址:https://www.cnblogs.com/danhuangpai/p/8135826.html