Redis集群搭建(三主三从)并添加新的主从节点

Redis-Cluster集群

集群部署(三主三从)

环境准备

准备六台机器(关闭防火墙和selinux)

master1 192.168.13.111

master2 192.168.13.113

master3 192.168.13.114

slave1 192.168.13.115

slave2 192.168.13.121

slave3 192.168.13.122

安装Redis(7.4.0)

redis下载官网

 wget https://download.redis.io/releases/redis-7.4.0.tar.gz
##安装编译工具
 yum -y install gcc make
 tar xvzf redis-7.4.0.tar.gz -C /usr/local/
 cd /usr/local/
 mv redis-7.4.0/ redis
 cd redis
 make

修改配置文件

 vim /usr/local/redis/redis.conf
 
bind 0.0.0.0
protected no  		 #关闭加密保护 否则从节点无法连接
daemonize yes	     #开启后台模式将no改为yes
timeout 300      #连接超时时间
port 6379            #端口号
logfile "/var/log/redis.log"       ###存放日志
pidfile /var/run/redis_6379.pid    #定义pid文件
dbfilename dump.rdb
dir ./data           ###存放在安装目录下的data目录下 用于存放数据(目录需要提前创建)
save 3600 1 300 100 60 10000	   #snapshot触发的时机
stop-writes-on-bgsave-error yes    #当snapshot时出现错误无法继续时,阻塞客户端“变更操作”,“错误”可能因为磁盘已满/磁盘故障/OS级别异常等 
rdbcompression yes	 #启用rdb文件压缩,默认为“yes”,压缩往往意味着“额外的cpu消耗”,同时也意味这较小的文件尺寸以及较短的网络传输时间
appendonly yes		 #开启aof功能,只有在“yes”下,aof重写/文件同步等特性才会生效
appendfilename "appendonly.aof"  #AOF文件名称
appendfsync everysec #表示对写操作进行累积,每秒同步一次
以下为打开注释并修改
cluster-enabled yes #启用集群
cluster-config-file nodes-6379.conf #集群配置文件,由redis自动更新,不需要手动配置,运行多实例时请注修改为对应端口
cluster-node-timeout 5000 #单位毫秒。集群节点超时时间,即集群中主从节点断开连接时间阈值,超过该值则认为主节点不可以,从节点将有可能转为master
cluster-replica-validity-factor 10 #在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长。(计算方法为:cluster-node-timeout * cluster-replica-validity-factor,此处为:5000 * 10 毫秒)
cluster-migration-barrier 1 #一个主机将保持连接的最小数量的从机,以便另一个从机迁移到不再被任何从机覆盖的主机
cluster-require-full-coverage yes #集群中的所有slot(16384个)全部覆盖,才能提供服务

将redis同步到其余机器

##创建数据存放目录
 mkdir data
##通过scp将配置后的redis发送到其余的机器
 scp -r /usr/local/redis/ 192.168.13.113:/usr/local/
 scp -r /usr/local/redis/ 192.168.13.114:/usr/local/
 scp -r /usr/local/redis/ 192.168.13.115:/usr/local/
 scp -r /usr/local/redis/ 192.168.13.121:/usr/local/
 scp -r /usr/local/redis/ 192.168.13.122:/usr/local/

启动redis(六台机器)

 ./src/redis-server redis.conf
image-20240927183952578

创建集群

##在任意一台节点服务器上操作
./src/redis-cli --cluster create --cluster-replicas 1 192.168.13.111:6379 192.168.13.113:6379 192.168.13.114:6379 192.168.13.115:6379 192.168.13.121:6379 192.168.13.122:6379
(注:前面三个IP为主节点 Redis是根据IP和Port的顺序,确定master和slave的,所以要排好序,再执行。)

如果有以下错误

image-20240927191217683

就将redis停止,并删除安装目录下的date目录下的文件

rm -rf /usr/local/redis/data/*

重新启动并执行操作

查看集群状态

查看集群状态可连接集群中的任一节点,此处连接了集群中的节点192.168.13.111:6379
# 登录集群客户端,-c标识以集群方式登录
 ./src/redis-cli -c -h 192.168.13.111 -p 6379
 192.168.13.111:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6

192.168.13.111:6379> cluster nodes   ###查看集群节点信息
image-20240927185344344

集群操作

###存储的数据会随机存储到主节点
192.168.13.111:6379> set name jack
-> Redirected to slot [5798] located at 192.168.13.116:6379
OK
192.168.13.116:6379> get name
"jack"
192.168.13.116:6379> set id 1
-> Redirected to slot [7568] located at 192.168.13.113:6379
OK
192.168.13.113:6379> get id
"1"

添加主从节点

环境准备

准备两台机器(关闭防火墙和selinux)

master4 192.168.13.116

slave4 192.168.13.123

安装redis

##将任意节点上的redis发送到新机器中
 scp -r /usr/local/redis 192.168.13.116:/usr/local/
 scp -r /urs/local/redis 192.168.13.123:/usr/local/

启动redis

 ./src/redis-server redis.conf

添加主节点

##任意一台机器操作
 cd /usr/local/redis
 ./src/redis-cli --cluster add-node 192.168.13.116:6379 192.168.13.113:6379     ##后面的IP为任意一个主节点的IP 前面的IP为要添加的主节点IP

分配卡槽

##为新添加的节点分配卡槽(redis数据是存储在卡槽中,如果主节点没有卡槽等于没有加入集群)
 ./src/redis-cli --cluster reshard 192.168.13.116:6379
image-20240927192208703 image-20240927192308416

添加从节点

 ./src/redis-cli --cluster add-node 192.168.13.123:6379 192.168.13.116:6379 --cluster-slave --cluster-master-id cfec6fb8f016937f39d017190110dd4aad6b40db
 
 --192.168.13.123:6379 从节点ip+port
 --192.168.13.116:6379 主节点ip+port
 --cluster-master-id   主节点id
image-20240927192614035

查看集群实例

image-20240927192901546

均衡分配卡槽

##任意节点执行
 ./src/redis-cli --cluster rebalance --cluster-threshold 1 192.168.13.116:6379
 
 --cluster-threshold 1 主节点之间卡槽数相差超过1,就分配
image-20240927193112121
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值