1:分布式缓存的搭建:
地址与服务器规划:
Master1:192.168.232.128 slaver1:192.168.232.131
Master2:192.168.232.129 slaver2:192.168.232.132
Master3:192.168.232.133 slaver3:192.168.232.130
架构细节:
(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 会根据节点数量大致均等的将哈希槽映射到不同的节点
Redis的持久化策略有两种:
Rdb与aof:rdb存储的是数据的快照,aof存储的是指令的集合。
1:下载redis的linux系统安装包,并上传到linux服务器192.168.232.128。
2: 解压redis的安装包
3: 进入redis的目录
4 执行make 对redis源码进行编译
5 make install PREFIX=/usr/local/redis
6 拷贝redis.conf文件到安装目录redis/bin下
7:到/usr/local/redis/bin下的redis.conf文件,修改如下配置
8:打开集群配置
9启动redis服务
10:./redis-cli测试redis安装完成
此时在192.168.232.128:6379上我们已经把redis安装完成了。
步骤同上分别在
192.168.232.129:6379
192.168.232.130:6379
192.168.232.131:6379
192.168.232.132:6379
192.168.232.133:6379
下面安装redis,并做测试。
10:在其中一台服务器上传脚本.gem
11:安装ruby脚本
12:安装ruby脚本。
13:安装redis依赖运行的包
14:重新启动所有的redis实例
15:拷贝
到redis/bin下面并且赋予可执行权限。
15: 在装有ruby的主机上执行脚本:
./redis-trib.rb create --replicas 1192.168.232.128:6379 192.168.232.129:6379 192.168.232.130:6379 192.168.232.131:6379 192.168.232.132:6379 192.168.232.133:6379
16:
常见问题:
Either the node already knows other nodes (check withCLUSTER NODES) or contains some key in database
解决办法:
1)将每个节点下aof、rdb、nodes.conf本地备份文件删除;
2)172.168.63.201:7001> flushdb #清空当前数据库(可省略)
3)之后再执行脚本,成功执行;
节点不是集群节点:
解决办法:
1. ping 看能不能ping通
2. 关闭防火墙
3. redis.conf里cluser配置是否打开.
解决办法