Redis 集群详解

集群介绍Redis Cluster 是 redis的分布式解决方案,在3.0版本正式推出。当遇到单机、内存、并发、流量等瓶颈时,可以采用Cluster架构方案达到负载均衡目的。  Redis Cluster之前的分布式方案有两种:1)客户端分区方案,优点分区逻辑可控,缺点是需要自己处理数据路由,高可用和故障转移等。2)代理方案,优点是简化客户端分布式逻辑和升级维护便利,缺点加重架构部署和性能消耗。  官方提供的 Redis Cluster集群方案,很好的解决了集群方面的问题数据分布  分布式数
摘要由CSDN通过智能技术生成

集群介绍

Redis Cluster 是 redis的分布式解决方案,在3.0版本正式推出。当遇到单机、内存、并发、流量等瓶颈时,可以采用Cluster架构方案达到负载均衡目的。
  Redis Cluster之前的分布式方案有两种:
1)客户端分区方案,优点分区逻辑可控,缺点是需要自己处理数据路由,高可用和故障转移等。
2)代理方案,优点是简化客户端分布式逻辑和升级维护便利,缺点加重架构部署和性能消耗。
  官方提供的 Redis Cluster集群方案,很好的解决了集群方面的问题
数据分布
  分布式数据库首先要解决把整个数据库集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集,需要关注的是数据分片规则,Redis Cluster采用哈希分片规则。

集群拓扑

3台虚拟机6个实例,每台虚拟机2个实例
在这里插入图片描述

思路

1)部署一台服务器上的2个集群节点
2)发送完成后修改其他主机的IP地址

目录规划

#3台都执行
#redis安装目录
/opt/redis_cluster/redis_{PORT}/{conf,logs,pid}
#redis安装目录
/opt/redis_cluster/redis_{PORT}/{conf,logs,pid}
#redis数据文件
/data/redis_cluster/redis_{PORT}/redis_{PORT}.rdb
#redis运维脚本
/root/scripts/redis_shell.sh

3台主机编辑/etc/hosts文件,添加如下内容,实现主机名相互访问
#3台都执行
192.168.200.79 redis01
192.168.200.80 redis02
192.168.200.81 redis03

创建目录
#3台都执行
mkdir -p /data/soft
mkdir -p /opt/redis_cluster/redis_{6380,6381}/{conf,logs,pid}
mkdir -p /data/redis_cluster/redis_{6380,6381}

手动搭建部署集群

部署过程

redis01

下载Redis 3.2.9并安装
cd /data/soft/
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar zxf redis-3.2.9.tar.gz -C /opt/redis_cluster/
ln -s /opt/redis_cluster/redis-3.2.9/ /opt/redis_cluster/redis
cd /opt/redis_cluster/redis
make && make install

使用自己的配置文件
cat >/opt/redis_cluster/redis_6380/conf/redis_6380.conf <<EOF
###以守护进程模式启动
daemonize yes
###绑定的主机地址
bind 192.168.200.79
###监听端口
port 6380
###pid文件和log文件的保存地址
pidfile /opt/redis_cluster/redis_6380/pid/redis_6380.pid
logfile /opt/redis_cluster/redis_6380/logs/redis_6380.log
###设置数据库的数量,默认数据库为0
databases 16
###指定本地持久化文件的文件名,默认是dump.rdb
dbfilename redis_6380.rdb
###本地数据库的目录
dir /data/redis_cluster/redis_6380/
###集群相关参数
cluster-enabled yes
cluster-config-file nodes_6380.conf
cluster-node-timeout 15000
EOF

在这里插入图片描述
cd /opt/redis_cluster/
cp redis_6380/conf/redis_6380.conf redis_6381/conf/redis_6381.conf
sed -i ‘s#6380#6381#g’ redis_6381/conf/redis_6381.conf
rsync -avz /opt/redis_cluster/redis_638* redis02:/opt/redis_cluster/
rsync -avz /opt/redis_cluster/redis_638* redis03:/opt/redis_cluster/
在这里插入图片描述
redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf
redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf
在这里插入图片描述

redis02

find /opt/redis_cluster/redis_638* -type f -name “*.conf”|xargs sed -i “/bind/s#79#80#g”
mkdir -p /data/redis_cluster/redis_{6380,6381}
redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf
redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf
在这里插入图片描述

redis03

find /opt/redis_cluster/redis_638* -type f -name “*.conf”|xargs sed -i “/bind/s#79#81#g”
mkdir -p /data/redis_cluster/redis_{6380,6381}
redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf
redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf
在这里插入图片描述

手动配置节点发现

当把所有节点都启动后查看进程会有cluster的字样
在这里插入图片描述
  登录后执行CLUSTER NODES命令会发现只有每个节点自己的ID,目前集群内的节点还没有互相发现,所以搭建redis集群我们第一步要做的就是让集群内的节点互相发现.
  在执行节点发现命令之前我们先查看一下集群的数据目录会发现有生成集群的配置文件
在这里插入图片描述
查看后发现只有自己的节点内容,等节点全部发现后会把所发现的节点ID写入这个文件。
在这里插入图片描述
  集群模式的Redis除了原有的配置文件之外又加了一份集群配置文件.当集群内节点信息发生变化,如添加节点,节点下线,故障转移等.节点会自动保存集群状态到配置文件.需要注意的是,Redis自动维护集群配置文件,不需要手动修改,防止节点重启时产生错乱.
节点发现使用命令: CLUSTER MEET {IP} {PORT}
提示:在集群内任意一台机器执行此命令就可以,添加运维脚本redis.shell.sh
在这里插入图片描述
  节点都发现完毕后我们再次查看集群配置文件,可以看到,发现到的节点的ID也被写入到了集群的配置文件里
在这里插入图片描述

运维脚本:
[root@redis01 ~]# cat redis_shell.sh 
#!/bin/bash

USAG(){
   
    echo "sh $0 {start|stop|restart|login|ps|tail
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值