记录Windows部署Redis5.0.14版本Cluster集群

开源地址:https://github.com/tporadowski/redis(下载链接)

 1.下载解压后,解压成6份,为了好区分把文件夹分别命名为:6001,6002,6003,6004,6005,6006

 

2.修改redis.windows-service.conf文件,复制第一个到其他文件夹里,替换对应端口号

bind 127.0.0.1                  #绑定的IP,也可以为0.0.0.0或者注释掉 任意IP

port     6001                  #修改为与当前文件夹名字一样的端口号
 
masterauth redis@123            #配置redis密码

requirepass redis@123           #配置redis密码

appendonly yes                  #开启aof持久化

no-appendfsync-on-rewrite yes   #开启aof持久化重写期间同步

cluster-enabled yes             #开启集群

cluster-config-file nodes-6001.conf     # 开启节点配置文件(nodes-端口.conf命名方式,服务启动时自动生成)

cluster-node-timeout 15000               #开启集群节点宕机超时时间

 注意:(前面不要留空格,否则会出现类似:Invalid argument during startup: unknown conf file parameter :  cluster-enabled问题)

 3.在每个redis目录下打开一个cmd 窗口,把redis.windows-service.conf安装成服务启动


#安装成服务
redis-server --service-install redis.windows-service.conf --service-name redis6001
redis-server --service-install redis.windows-service.conf --service-name redis6002
redis-server --service-install redis.windows-service.conf --service-name redis6003
redis-server --service-install redis.windows-service.conf --service-name redis6004
redis-server --service-install redis.windows-service.conf --service-name redis6005
redis-server --service-install redis.windows-service.conf --service-name redis6006



#卸载服务
redis-server --service-uninstall redis.windows-service.conf --service-name redis6001
redis-server --service-uninstall redis.windows-service.conf --service-name redis6002
redis-server --service-uninstall redis.windows-service.conf --service-name redis6003
redis-server --service-uninstall redis.windows-service.conf --service-name redis6004
redis-server --service-uninstall redis.windows-service.conf --service-name redis6005
redis-server --service-uninstall redis.windows-service.conf --service-name redis6006

 3.创建Redis集群

#如redis设置了密码,则需要在创建集群的时候加 -a password ,要是没有会提示(Node 127.0.0.1:6001 NOAUTH Authentication required.)
#进入任意一个Redis中执行,只需要执行一次即可,后面哪怕我们重启了整个redis,也不需要执行第二次了
redis-cli -a redis@123 --cluster create 
127.0.0.1:6001
127.0.0.1:6002
127.0.0.1:6003
127.0.0.1:6004
127.0.0.1:6005
127.0.0.1:6006
--cluster-replicas 1  #1表示占比,表示主和从的比例数据,这里是三主三从,所以是1

##命令
redis-cli -a redis@123 --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1 

 ##执行创建集群命令

 输入 yes

 集群创建分配插槽成功.

 4.测试集群是否正常

##连接集群其中的一个主节点
redis-cli.exe -c -h 127.0.0.1 -p 6001  -a redis@123   # -c 表示集群 -h bind 地址 -p 端口 -a 密码

#添加值
set test 111

##查看是否存在
get test 或者 keys test

注意:如果set 值出现:NOAUTH Authentication required. 则需要 -a 密码

 查看从节点信息,并连接

#输入查
info replication

#连接从节点
redis-cli.exe -c -h 127.0.0.1 -p 6004

#查询test 是否存在
get test

 

 5.集群的扩容和收缩

 集群扩容,复制两份redis,分别为6007,6008,把端口改6007,6008 ,安装成服务(安装方式同上),并启动

##添加6007节点到集群
redis-cli.exe -a redis@123 --cluster add-node 127.0.0.1:6007 127.0.0.1:6001

##第一个127.0.0.1:6007是新增的集群节点 第二个127.0.0.1:6001是集群中正常存活的节点

 查看集群节点,发现新添加的节点没有被分配插槽

 为新添加的节点分配插槽并为主节点

##执行分配插槽
redis-cli.exe -a redis@123 --cluster reshard 127.0.0.1:6002 

#127.0.0.1:6002为集群中一个节点,如果设置了密码,则需要添加-a 密码

 提示我们需要分配多少个插槽,后面需要输入数字,这里我分配100个

 回车键确认,系统需要我们输入接受的节点ID,我们这里是新添加6007节点

 回车确认,会提示,分配插槽的方式,all=系统随机分配100个插槽,done=手动分配,我这里先选择系统随机all,回车后,会展现分配的插槽信息,然后输入yes,回车确认完成。

 查看集群节点信息

#查看集群信息
cluster nodes

 把6008添加到集群节点,并为6007节点的从节点

#添加到集群节点
redis-cli.exe -a redis@123 --cluster add-node 127.0.0.1:6008 127.0.0.1:6001

##第一个127.0.0.1:6008是新增的集群节点 第二个127.0.0.1:6001是集群中正常存活的节点

 

 把新添加的6008节点设置6007节点的从节点

#连接6008节点
redis-cli.exe -a redis@123 -c -h 127.0.0.1 -p 6008


#把6008设置为6007的从节点
cluster replicate 6011881505a0a70778c191548021b1340db3d00e   

#6011881505a0a70778c191548021b1340db3d00e为6007节点ID

查询集群信息,6008已变成6007节点的从节点

##查看
cluster nodes

集群收缩,移除6007主节点和6008从节点

#首先移除6008从节点
redis-cli.exe -a redis@123 --cluster del-node 127.0.0.1:6008 ccabb81d9fc74ed1b1e94c7305007d096d6d9eb5

#ccabb81d9fc74ed1b1e94c7305007d096d6d9eb5  为6008从节点ID 

注意如果6008节点已打开,需要关闭后才能移除掉。

查看集群信息

##查看集群信息
cluster nodes

移除主节点6007的插槽

##移除主节点6007的插槽
##首先要把主节点的插槽还回到集群中去,
redis-cli.exe -a redis@123 --cluster reshard 127.0.0.1:6007

回车确认,提示要移除多少个插槽,这里移除所有100个,输入100

回车确认,提示说输入一个接受节点ID,这里输入存活的主节点任何一个ID即可

 回车确认,提示输入源节点,即是6007节点ID

 输入all或done,回车确认,我这里输入done看看效果,前面分配的时候输入all,会输出移除的节点信息

 输入yes ,回车移除完成

删除主节点6007

#首先移除6007主节点
redis-cli.exe -a redis@123 --cluster del-node 127.0.0.1:6007 6011881505a0a70778c191548021b1340db3d00e

#6011881505a0a70778c191548021b1340db3d00e  为6007从节点ID 

查看集群信息,发现主节点6007没有了

##查看集群信息
cluster nodes

最后题外话:redis5.0.14.1 修复版本cluster 集群模式会出现以下问题,因此我又恢复到redis5.0.14

Reading the configuration file, at line 0


>>> '(null)'


 replicaof directive not allowed in cluster mode


fork operation failed

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
要在 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 中的一个节点名称。可以根据实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

搬砖的工人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值