搭建redis集群是为了强化redis的读写能力,防止因服务器宕机导致的一系列问题(雪崩)。搭建redis集群一般需要三个master节点以及三个master对应的slave节点,所以一般一组集群至少要6个节点才能保证完整的高可用。其中三个master会分配不同的数据分片区间,当master出现故障时,slave会自动选举成为master顶替主节点继续提供服务。
真正的集群:每个Redis安装到不同服务器上
伪集群:在一台机器上安装多个Redis实例
一.安装Redis
此处安装的是redis5.0以上版本
1.安装c语言编译器
yum -y install gcc
2.下载redis
cd /usr/local
wget http://download.redis.io/releases/redis-5.0.10.tar.gz
(此处用到了wget若未安装,先行安装 yum install wget -y)
或者使用Xftp将安装包直接传输
3.解压redis并改名
tar -xvf redis-5.0.10.tar.gz
mv redis-5.0.10 redis
4.编译redis
cd redis
make
5.配置redis
修改redis.conf文件
# bind 127.0.0.1 去掉绑定本机IP,让其它机器访问
protected mode no 关闭保护模式
6.启动redis服务器
切换到redis下src中
cd src
./redis-server ../redis.conf
7.启动redis客户端
./redis-cli
二.Redis集群的搭建
1.新建redis-cluster目录,新建redis01~redis06六个子目录
cd /usr/local
mkdir redis-cluster
cd redis-cluster
mkdir redis01
mkdir redis02
......
2.复制redis/src和redis.conf到redis01~redis06目录中
cd redis
cp -r src/* /usr/local/redis-cluster/redis01
cp -r src/* /usr/local/redis-cluster/redis02
......
cp reids.conf /usr/local/redis-cluster/redis01
cp reids.conf /usr/local/redis-cluster/redis02
......
3.修改对应的redis.conf
cd /usr/local/redis-cluster/redis01
vi redis.cof 修改如下内容
daemonize yes
将 # cluster-enabled yes 改为 cluster-enabled yes
port 7001~7006(可以为其他合理端口)
......
4.在redis-cluster中创建启动脚本start.sh
vi start.sh
内容如下
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
5.启动redis实例
给予脚本执行权限
chmod +x start.sh
运行脚本
./start.sh
在进行创建集群之前必须运行启动脚本,每次访问集群之前也应如此。
6.创建集群
/usr/local/redis/src/redis-cli --cluster create xx:7001 xx:7002 xx:7003 xx:7004 xx:7005 xx:7006 --cluster-replicas 1
此处xx填写你自己主机的ip地址
--cluster必须是redis5.0才能支持 redis3.0需要ruby脚本此处不做赘述
7.访问集群
/usr/local/redis/src/redis-cli -h xx -c -p 7001
在创建完集群后会自动分配主从关系
info replication
role代表其主从关系
三.可能遇到的问题
1.若在访问伪集群之前会未运行启动脚本会有如下报错
2.若在安装redis时配置文件中的三个bind没有全部注释进行创建集群时会连接到xx:7001时会被拒绝 同时若在创建完集群之后修改了注释也会遇到上面的问题
3.若在修改对应的redis配置文件时(redis01-->redis.conf...) cluster-enabled yes没有删除注释则在创建集群时会遇到如下报错
4.**[ERR] Not all 16384 slots are covered by nodes.**slots分布不正确
./redis-trib.rb fix xx
./redis-trib.rb check xx
5.若使用的不是5.0以上版本的redis
4.SpringBoot连接Redis集群
SpringBoot连接Redis集群
spring.redis.cluster.nodes=xx:7001,xx:7002,xx:7003,xx:7004,xx:7005,xx:7006
Redission的配置Redis集群
ClusterServersConfig clusterServersConfig = config.useClusterServers();
clusterServersConfig.addNodeAddress(
"redis://xx:7001","redis://xx:7002","redis://xx:7003",
"redis://xx:7004", "redis://xx:7005","redis://xx:7006");
版权归原作者 小矮子大叔 所有, 如有侵权,请联系我们删除。