【Redis Cluster 集群部署详细步骤】

一、Redis Cluster 集群部署详细步骤

1、准备环境

本地服务器三台:

192.168.75.100
192.168.75.101
192.168.75.102

2、上传tar包,解压安装

在这里插入图片描述
三台服务器同样的操作。也可以使用scp命令直接传tar包到其他两台服务器

scp -r redis-5.0.5.tar.gz root@192.168.75.102:/root/redis_cluster/

在这里插入图片描述

3、安装redis

每台服务器安装两个redis,先处理第一台服务器的第一个redis

  1. 解压
tar -zxvf redis-5.0.5.tar.gz

在这里插入图片描述

  1. 安装
//进入解压的目录
cd redis-5.0.5
//指定安装位置
make PREFIX=/root/redis_cluster/redis1-6310 install

安装完成
在这里插入图片描述
返回上一级目录,可以看到
在这里插入图片描述

进入解压的文件目录复制一个redis.conf到安装的目录
在这里插入图片描述

4、修改redis.conf 开启集群

vi redis.conf
bind 0.0.0.0
port 6310
protected-mode no
daemonize yes
dbfilename dump-6310.rdb
pidfile /var/run/redis_6310.pid
masterauth xyy,.123
requirepass xyy,.123
cluster-enabled yes
cluster-config-file nodes-6310.conf
cluster-node-timeout 15000
cluster-require-full-coverage no

在其他两台服务器上安装redis,安装过程同上面的 安装redis,执行完install 那一步后即可,等会再从第一台服务器传redis.conf文件
服务器:192.168.75.101
在这里插入图片描述
服务器:192.168.75.102
在这里插入图片描述

5、复制192.168.175.100的 redis.conf 文件到101、102服务器上

//101
scp -r redis.conf root@192.168.75.101:/root/redis_cluster/redis1-6310/
//102
scp -r redis.conf root@192.168.75.102:/root/redis_cluster/redis1-6310/

在这里插入图片描述

6、分别启动三台服务器的redis

bin/redis-server redis.conf

在这里插入图片描述
查看是否启动

ps -ef|grep redis

在这里插入图片描述

7、创建master集群,三主

进入哪个服务器的目录下都行,只要是redis-cli

bin/redis-cli --cluster create --cluster-replicas 0 -a xyy,.123 192.168.75.100:6310 192.168.75.101:6310 192.168.75.102:6310

a.报错,防火墙没关
关闭三台服务的防火墙或者放开6310端口

//查防火墙状态
systemctl status firewalld
//永久开放端口
firewall-cmd --add-port=6310/tcp --permanent
//关闭防火墙
systemctl stop firewalld

在这里插入图片描述
b.再次执行集群命令
在这里插入图片描述
c.连接客户端查看

//连接集群,那台服务器都可以
bin/redis-cli -c -p 6310
//输入redis密码
auth xyy,.123
//查看集群节点
cluster nodes

在这里插入图片描述

8、安装redis配置从节点,基本跟上面差不多,在每台服务器各自再安装一个redis

安装
在这里插入图片描述
在192.168.75.100服务器上操作,复制redis.conf文件到6311里

cp redis1-6310/redis.conf /root/redis_cluster/redis2-6311/

在这里插入图片描述
进入redis.conf 把所有的6310改成6311即可,其他的在6310里都已经修改过了,保持一致

//进入编辑
vi redis.conf

//1.进入后可以搜索一下
/6310
//2.然后 i 编辑
//3.esc /6310 再搜索
//4.直到搜不到后保存退出
:wq

在这里插入图片描述
在这里插入图片描述
复制到其他两台服务器

//101
scp -r redis.conf root@192.168.75.101:/root/redis_cluster/redis2-6311/
//102
scp -r redis.conf root@192.168.75.102:/root/redis_cluster/redis2-6311/

直接启动这个redis,每台服务器是这样的。此时6311并没有加入集群
在这里插入图片描述

9、创建从节点加入集群

连接客户端,查看主节点的id

//不管是哪台服务器,都可以,主要是用 redis-cli
bin/redis-cli -c -p 6310
//查看主节点id
cluster nodes

在这里插入图片描述
复制192.168.75.100的id ,让从节点加入集群

//--cluster-master-id 主节点id
// -a redis密码
bin/redis-cli --cluster add-node 192.168.75.100:6311 192.168.75.100:6310 --cluster-slave --cluster-master-id c7a842d10a9ead17ec2a3f0f0ff4483ad55e4ba6 -a xyy,.123

在这里插入图片描述
同理,分别执行其他两台服务器的从节点,在当前服务器即可,修改ip和masterid就行
在这里插入图片描述
在这里插入图片描述
再次查看,三主三从
在这里插入图片描述

二、单点redis数据迁移至redis cluster集群

【RDB】以上集群安装时,集群并未开启aof,接着上面的去做迁移

0、查看集群里没有数据

每个master都可以看一下。

解释一下为啥不同的服务器上的主从互相指向了
新建集群是本服务器的从指向的本服器务的主,可能因为重启测试过集群的分槽合槽,在合槽后重启,所有的从节点都指向了一个主,后续再分槽,从节点自动指向刚刚分槽的redis,所以主从的关系跨服务指向了,确保一主一从即可。

//连接redis客户端执行
keys *

在这里插入图片描述

1、把三主的卡槽集中到一个上面

这里集中到101的master上

//1.连接任意一台服务的redis客户端,进行合槽.这里是在100上连接的
redis1-6310/bin/redis-cli --cluster reshard 192.168.75.100:6310 -a xyy,.123
//2.可以看到集群信息,5461是要移动的卡槽数量
5461
//3.接收者。哪个master来接收这5461个槽位,就复制哪个的id。这里合到101上的master
//4.发送者。哪个master来迁出自己的槽位,就复制哪个的id。这里迁出102上6310的master
//5.回车确定执行
done
//6.执行后再次确认
yes

在这里插入图片描述
在这里插入图片描述

同理迁出102上6311的master的槽位,到101的master,不在截图

在这里插入图片描述
查看
在这里插入图片描述

2、关闭所有redis节点

//1.查看进程
ps -ef|grep redis
//2.这里杀死进程。也可以连接redis客户端,执行shutdown关闭
kill -9 进程号

//关闭三台服务上的

在这里插入图片描述
在这里插入图片描述

3、复制单点redis的rdb文件到这个拥有所有卡槽的redis下,并把命名改成该redis下的redis.conf里的一样

//复制命令
cp [资源文件[ [目标位置]

//这里找了一个其他服务上的rdb文件,直接上传到这个位置的

在这里插入图片描述

//重命名。该名字是拥有所有卡槽的redis的redis.conf里的 dbfilename dump-6310.rdb
mv dump.rdb dump-6310.rdb

在这里插入图片描述

4、启动该redis

//切记此时redis并未开启aof 也就是appendonly no
//0.修改redis.conf 
appendfilename "appendonly-6310.aof"
//1.启动
redis1-6310/bin/redis-server redis1-6310/redis.conf

在这里插入图片描述

在这里插入图片描述

5、查询是否已加载

//1.连接客户端
redis1-6310/bin/redis-cli -c -p 6310 -a xyy,.123
//查看
keys *

在这里插入图片描述

6、执行命令,保存aof文件

//连接客户端,手动命令保存aof文件
bgrewriteaof

在这里插入图片描述
在这里插入图片描述

7、关闭该redis,开启aof,再启动

//1.关闭
shutdown
//2.修改redis.conf
appendonly yes
//3.启动
redis1-6310/bin/redis-server redis1-6310/redis.conf
//4.连接并查看是否有数据

在这里插入图片描述

在这里插入图片描述

8、同样开启所有节点的aof并启动

//1.修改其他五个redis的redis.conf
appendonly yes
//2.这个命名这里也区分开来,每台服务器有6310和6311的aof
appendfilename "appendonly-6310.aof"

//3.启动所有redis

9、卡槽还原

//跟上面合槽同理

在这里插入图片描述
在这里插入图片描述

分槽实时查看

在这里插入图片描述

10、查看,会发现还原后的俩redis主从 也会分到数据

//连接任意两个从节点  192.168.75.100:6310和192.168.75.101:6311  可以看到分槽后也自动分了数据

在这里插入图片描述
在这里插入图片描述

未完待续。。。。
1.测试容错

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在 Kubernetes 上部署 Redis Cluster 集群,可以按照以下步骤进行: 1. 创建 Redis ConfigMap 首先,需要创建一个 Redis 配置文件 ConfigMap。可以使用以下命令创建: ``` kubectl create configmap redis-conf --from-file=redis.conf ``` 其中,`redis.conf` 是 Redis 配置文件的名称。可以根据实际情况进行修改。 2. 创建 Redis StatefulSet 接下来,可以创建 Redis StatefulSet。可以使用以下 YAML 文件作为模板: ``` apiVersion: apps/v1 kind: StatefulSet metadata: name: redis-cluster spec: serviceName: redis-cluster replicas: 6 selector: matchLabels: app: redis-cluster template: metadata: labels: app: redis-cluster spec: containers: - name: redis image: redis:6.0.9 ports: - containerPort: 6379 name: client - containerPort: 16379 name: gossip volumeMounts: - name: config mountPath: /usr/local/etc/redis/redis.conf subPath: redis.conf command: - sh - -c - | if [ -n "${POD_NAME}" ]; then sed -i "s/%cluster-name%/redis-cluster/g" /usr/local/etc/redis/redis.conf sed -i "s/%node-name%/${POD_NAME}/g" /usr/local/etc/redis/redis.conf fi volumes: - name: config configMap: name: redis-conf volumeClaimTemplates: - metadata: name: data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi ``` 在上述 YAML 文件中,`replicas` 字段指定了 Redis 集群的节点数,`volumeClaimTemplates` 字段指定了每个节点的数据卷大小。另外,还需要注意以下几点: - `serviceName` 字段需要与 `metadata.name` 字段相同。 - `selector.matchLabels` 字段需要与 `metadata.labels` 字段相同。 - `command` 字段用于修改 Redis 配置文件中的节点名称和集群名称。 3. 创建 Redis Service 最后,需要创建 Redis Service。可以使用以下 YAML 文件作为模板: ``` apiVersion: v1 kind: Service metadata: name: redis-cluster labels: app: redis-cluster spec: ports: - name: client port: 6379 targetPort: 6379 - name: gossip port: 16379 targetPort: 16379 clusterIP: None selector: app: redis-cluster ``` 在上述 YAML 文件中,`clusterIP` 字段需要设置为 `None`,以便创建一个 Headless Service,让每个 Redis 节点可以通过 DNS 解析到自己的 IP 地址。 4. 部署 Redis Cluster 完成以上步骤后,可以使用以下命令部署 Redis Cluster: ``` kubectl apply -f redis-cluster.yaml ``` 其中,`redis-cluster.yaml` 是包含 Redis StatefulSet 和 Redis Service 的 YAML 文件。可以根据实际情况进行修改。 部署完成后,可以使用以下命令查看 Redis Cluster 的状态: ``` kubectl exec -it redis-cluster-0 -- redis-cli cluster nodes ``` 其中,`redis-cluster-0` 是 Redis Cluster 中的一个节点名称。可以根据实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

許小羊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值