7-1 k8s 示例-使用 StatefulSet 部署 Redis Cluster

更新时间:2023年4月

Redis Cluster 特点

Redis Cluster 使用的是 Gossip 协议进行节点间通信,该协议类似于 P2P 架构中的 Gossip 传播机制

Redis Cluster 特点文档:Redis cluster specification | Redis

Redis Cluster 主要有以下特点:

  • 所有 Redis 节点使用 PING 机制互联
  • 判断集群中某个节点是否生效,由整个集群中超过半数节点的监测决定。如果超过半数的节点监测都判定某节点失效,则认为某节点真正失效
  • 客户端不需要 proxy 既可以直接连接 Redis,应用程序中需要配置有全部的 Redis 服务器 IP
  • Redis Cluster 把所有的 Redis Node(Master)平均映射到 0-16383 槽位(slot)上,读写需要到指定的 Redis Node 上操作,因此有多少 Redis Node 相当于 Redis 并发横向扩展了多少倍,每个 Redis Node 承担 16384/N 个槽位
  • Redis Cluster 预先分配 16384 个槽位(slot),当需要在 Redis 集群中写入一个 key-value 的时候,会使用 CRC16(key) mod 16384 进行运算,再决定将数据写入哪一个节点

部署 Redis Cluster

构建三主三从的 Redis Cluster

拓扑

在这里插入图片描述

Namespaces

$ vim ./ns-redis-demo.yaml
---
apiVersion: v1                                                        
kind: Namespace
metadata:
  name: redis-demo

应用声明

$ kubectl apply -f ns-redis-demo.yaml

StorageClass

$ vim sc-nfs.yaml
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nfs
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner 
# 回收策略此处使用 删除,实验环境方便测试
reclaimPolicy: Delete
mountOptions: 
  - soft
  - nfsvers=4.2
  - noatime     # 访问文件时不更新文件 inode 中的时间戳,高并发环境可提高性能
parameters:
  # 根据 PVC 的namespace 和 PVC 名称来生成路径
  pathPattern: "${.PVC.namespace}/${.PVC.name}"
  archiveOnDelete: "true"  

应用声明

$ kubectl apply -f sc-nfs.yaml

Service

Headless Service

$ vim hs-redis-cluster
---
apiVersion: v1
kind: Service
metadata:
  name: hs-redis-cluster
  namespace: redis-demo
  labels:
    type: headless
spec:
  clusterIP: None
  selector:
    app.kubernetes.io/name: redis-cluster
  ports:
    - name: client
      port: 6379
      targetPort: 6379
    - name: gossip
      port: 16379
      targetPort: 16379

应用声明

kubectl apply -f hs-svc-redis-cluster 

ConfigMap

$ vim configmap-redis.conf
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap-redis
  namespace: redis-demo
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值