redis高可用-集群部署

目录

一:背景

二:实现方式


一:背景

前面我们实现了redis的主从同步和哨兵模式,解决了单机redis的故障转移和流量分担,但是不管是主从或者哨兵模式都是一个主服务对应一个或者多个从服务,并且主服务和从服务的数据是一样的,这样就实现不了redis大数据量写的问题,不能分担写服务到多个redis服务,那么有没有一种模式能够实现redis内存的横向扩展,多主对应多从,并且实现故障转移自动修复。答案是一定的redis的设计者已经为我们提供了现成的设计方案,那就是使用Redis Cluster。下面我们来实操下利用Redis Cluster实现redis的集群部署。

二:实现方式

1:环境准备

我们为了部署方便使用单台主机部署3个主服务,3个从服务组成redis集群,对应的主机和端口如下:

主服务:

master1    192.168.56.101  6381

master2     192.168.56.101  6382

master3      192.168.56.101 6383

从服务:

slave1   192.168.56.101  6391

slave2   192.168.56.101  6392

slave3   192.168.56.101  6393

2: 创建配置文件

mkdir /usr/local/redis-cluster

cp /usr/local/bin/redis.conf redis_master_1.conf

修改redis_master_1.conf的配置如下:

# 守护进行模式启动
daemonize yes

# 绑定地址,需要修改

bind 0.0.0.0

# 绑定端口,需要修改
port 6381

# pid文件存储位置,文件名需要修改

pidfile "/var/run/redis_6381.pid"
 

# log文件存储位置,文件名需要修改

logfile "/var/run/redis_6381.log"

# RDB快照备份文件名,文件名需要修改
 

dbfilename "redis_6381.rdb"

# 本地数据库存储目录,需要修改

dir "/usr/local/redis/redis_6381"
 

# 集群相关配置
# 是否以集群模式启动
cluster-enabled yes

# 集群节点回应最长时间,超过该时间被认为下线
cluster-node-timeout 15000

# 生成的集群节点配置文件名,文件名需要修改

cluster-config-file nodes-6381.conf

# aof持久化
appendonly yes

#修改各自的aof文件名
appendfilename "appendonly6381.aof"

#设置密码
requirepass  123456
masterauth   123456

修改其他5份配置文件,改变对应的端口和文件路径

3:启动服务

/usr/local/bin/redis-server /usr/local/redis-cluster/redis_master_1.conf 

/usr/local/bin/redis-server /usr/local/redis-cluster/redis_master_2.conf 
  /usr/local/bin/redis-server /usr/local/redis-cluster/redis_master_3.conf 
  /usr/local/bin/redis-server /usr/local/redis-cluster/redis_slave_1.conf 
   /usr/local/bin/redis-server /usr/local/redis-cluster/redis_slave_2.conf 
   /usr/local/bin/redis-server /usr/local/redis-cluster/redis_slave_3.conf 


 

4:这时候这6个服务是没有任何关联的,我们需要将他们加入集群

进入任意一个redis服务

 /usr/local/bin/redis-cli -h 127.0.0.1 -p 6381

auth 123456

cluster meet 192.168.56.101 6382
cluster meet 192.168.56.101 6383
cluster meet 192.168.56.101 6391
cluster meet 192.168.56.101 6392
cluster meet 192.168.56.101 6393

然后查看所有节点:

cluster nodes

发现三个主服务和三个从服务,同时查看端口监听,可以发现10000+端口,说明集群的服务之间已经可以通信

5:配置主从服务

我们需要查看主服务的节点id,查看8381-6383的主服务node id

进入对应的从服务,配置主服务node id

进入6391从服务:

cluster replicate e9e7bcf9ff199e2a99d8dfb5342deebfe1462a8a

进入6392从服务:

cluster replicate f48f4528f051a1e585df05601217772a3ecbfb64

进入6393从服务:

cluster replicate 542bba27134e01c306c8c326b5deaac750234107

6:分配槽位

为了考虑今后的写入操作能分配均匀,槽位也要进行均匀分配。

仅在Master上进行分配,从库不进行分配,仅做主库的备份和读库使用。

节点    槽位数量
6381    0 - 5461
6382    5461 - 10922
6383    10922 - 16383

编写脚本:

#!/bin/bash

n=0
for ((i=n;i<=5461;i++))
do
  /usr/local/bin/redis-cli -h 127.0.0.1 -p 6381 -a 123456 CLUSTER ADDSLOTS $i  2>/dev/null
done
 

#!/bin/bash

n=5462
for ((i=n;i<=10922;i++))
do
  /usr/local/bin/redis-cli -h 127.0.0.1 -p 6382 -a 123456 CLUSTER ADDSLOTS $i  2>/dev/null
done

#!/bin/bash

n=10923
for ((i=n;i<=16383;i++))
do
  /usr/local/bin/redis-cli -h 127.0.0.1 -p 6383 -a 123456 CLUSTER ADDSLOTS $i  2>/dev/null
done
 

执行完查看状态:

CLUSTER info

状态已经显示成功

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值