Redis Cluster集群环境搭建

上一篇 << 下一篇 >>>Redis Cluster如何动态扩容与缩容


安装redis之前需要安装的工具包信息

1、安装ruby
yum install ruby
yum install rubygems

2、安装ruby redis工具包包
gem install redis-3.3.3.gem
无法直接安装的话,就先下载后上传到服务器,然后执行下面这句话
gem install -l ./redis-3.3.3.gem

1.redis多目录创建

mkdir rediscluster
cd rediscluster/
mkdir redis7000
mkdir redis7001
mkdir redis7002
mkdir redis7003
mkdir redis7004
mkdir redis7005

2.redis.conf配置

每个配置文件内容:
daemonize yes #后台启动
protected-mode no ; ## 允许外部访问
port 7005 #修改端口号,从7000到7005
cluster-enabled yes #开启cluster,去掉注释
cluster-config-file 7000nodes.conf #自动生成
cluster-node-timeout 15000 #节点通信时间
logfile /usr/rediscluster/redis7005/redis.log
dbfilename 7000dump.rdb #做伪集群的时候,一定要修改rdb文件的名字,如果aof也开的话也需要修改,否则扩容的时候会出现提示说新增扩容节点存在数据,需要先删除数据的提示。

[ERR] Node 125.124.6.0:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

3.启动redis

/usr/local/redis/bin/redis-server /usr/rediscluster/redis7000/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7001/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7002/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7003/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7004/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7005/redis.conf

此时若直接设置数据时,会报卡槽未分配的cuow

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 7000
set jarye 123
(error) CLUSTERDOWN Hash slot not served  说明没有分配hash槽

4.创建集群模式并分配卡槽

/usr/local/redis/bin/redis-cli --cluster create 10.211.55.16:7000 10.211.55.16:7001 10.211.55.16:7002 10.211.55.16:7003 10.211.55.16:7004 10.211.55.16:7005 --cluster-replicas 1 (建议最好使用服务器的ip地址搭建,否则客户端连接重定向会到当前url)

  • master才有卡槽信息:


  • 非集群模式访问会提示跳转到对应的卡槽
    /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 7000



    修改为Redis的集群方式连接可自动重定向卡槽
    /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 7000 –c


Cluster卡槽使用注意事项

a、卡槽一旦设置好后,后续只要启动redis,不用重新分配卡槽
b、从节点没有卡槽,默认不分担读请求的、只作备份和故障转移用
c、主卡槽宕机,从卡槽自动上位

客户端对接说明

a、如果使用jedis链接,则需要同时配置多个IP和端口,且内部不能自动切换到对应的卡槽,需要手动设置,所以不建议使用
b、JedisCluster实例时可以只配置一对IP和端口,内部会自动寻址找到所有信息

其他:从节点不能读取数据的问题

原因:Redis Cluster集群中的从节点,官方默认设置的是不分担读请求的、只作备份和故障转移用,当有请求读向从节点时,会被重定向对应的主节点来处理
解决办法:在get数据之前先使用命令readonly,这个readonly告诉 Redis Cluster 从节点客户端愿意读取可能过时的数据并且对写请求不感兴趣。


推荐阅读:
<<<分布式缓存与本地缓存的区别
<< << << << << << << << << << << << << << << <<<使用Redisson工具实现分布式锁
<< << << << << << << << << << <<<阿里云的Canal框架实现Redis与Mysql同步原理及代码示例
<<<阿里云的Canal框架配置
<< << <<

你可能感兴趣的:(Redis Cluster集群环境搭建)