首页 > 数据库 >K8S部署redis集群,并导入单机版redis数据到集群

K8S部署redis集群,并导入单机版redis数据到集群

时间:2024-08-19 15:55:11浏览次数:13  
标签:单机版 name cluster -- max redis 6379 集群

可能格式不怎么好看,就是提供一个思路
1、编写一个config文件,给挂载到k8s容器里。这个文件是从网上找的,这个脚本没什么改的,redis的配置文件,可以根据自己的需求做修改

添加config.yaml文件 apiVersion: v1 kind: ConfigMap metadata: name: redis-cluster-config data: fix-ip.sh: | #!/bin/sh CLUSTER_CONFIG="/data/nodes.conf" if [ -f ${CLUSTER_CONFIG} ]; then if [ -z "${POD_IP}" ]; then echo "Unable to determine Pod IP address!" exit 1 fi echo "Updating my IP to ${POD_IP} in ${CLUSTER_CONFIG}" sed -i.bak -e '/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/'${POD_IP}'/' ${CLUSTER_CONFIG} fi exec "$@" redis.conf: | cluster-enabled yes cluster-config-file /data/nodes.conf cluster-node-timeout 10000 protected-mode no daemonize no pidfile /var/run/redis.pid port 6379 tcp-backlog 511 bind 0.0.0.0 timeout 3600 tcp-keepalive 1 loglevel verbose logfile /data/redis.log databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /data appendonly yes appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 20000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes
2、编写一个server文件,做k8s里redis集群节点通信使用
添加一个server.yaml apiVersion: v1 kind: Service metadata: name: redis-cluster labels: app: redis-cluster spec: ports: - port: 6379 name: redis clusterIP: None selector: app: redis-cluster
3、编写redis的pod资源文件,里面需要注意的几点,1、镜像用redis6.0以上的,我这边使用的是7.2的。2、我使用的的是volumeClaimTemplates做redis的节点数据持久化处理,因为这种集群搭建,每个pod都会有自己的数据目录,由storageClass去自动生成pvc是最方便的。
添加pod.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:7.2.1 ports: - containerPort: 6379 command: ["/etc/redis/fix-ip.sh", "redis-server", "/etc/redis/redis.conf"] env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP volumeMounts: - name: redis-config mountPath: /etc/redis/ readOnly: false - name: redis-data mountPath: /data volumes: - name: redis-config configMap: name: redis-cluster-config defaultMode: 0755 volumeClaimTemplates: - metadata: name: redis-data spec: storageClassName: "nas-c" accessModes: - ReadWriteMany resources: requests: storage: 50Gi
4、这几步做完,至少redis的pod是能正常启动了,然后开始初始化集群 1、获取这几个redis-pod的ip:kubectl get pods -l app=redis-cluster -o jsonpath='{range.items[*]}{.status.podIP}:6379'。 2、初始化集群:redis-cli --cluster create 10.100.166.152:6379 10.100.104.80:6379 10.100.103.133:6379 10.100.199.215:6379 10.100.206.241:6379 10.100.3.108:6379 --cluster-replicas 1 上面这几个ip信息,注意用空格隔开。 3、进入一个pod,使用命令redis-cli 进入redis的交互界面 命令cluster info 命令cluster nodes 都可以查看集群信息 5、redis集群模式,官方给的规则是只有db0,也可以自己去改配置文件新增db数量 6、数据导入:redis-cli --cluster import 127.0.0.1:6379 --cluster-from 10.100.33.188:6379 --cluster-copy --cluster-replace 找个有redis-cli命令的客户端就可以执行, import 127.0.0.1:6379 是目标redis信息, --cluster-from 10.100.33.188:6379 是有原始数据的redis信息。 --cluster-copy 是表示数据只复制,不用消费掉老数据,这样如果迁移错误,也不会有太大问题

标签:单机版,name,cluster,--,max,redis,6379,集群
From: https://www.cnblogs.com/2019peng/p/18367498

相关文章

  • 【YashanDB知识库】共享集群YAC换IP
    【标题】共享集群YAC换IP【需求分类】安装部署,配置变更【关键字】安装部署,更换IP,运维,配置变更,高可用,YAC【需求描述】客户需要将已经部署的YAC集群更换IP,从测试网段切换生产网段【需求原因分析】YAC部署IP,从测试网段切换生产网段【变更方法分析】共需要修改以下3个组件的IP信......
  • RedisTemplate常用方法
    RedisTemplate常用方法一、Redis常用的数据类型:StringHashListSetzSetSortedset二、RedisTemplate常用API1.String类型设置当前的key以及value值;redisTemplate.opsForValue().set(key,value);设置当前的key以及value值并且设置过期时间;redisTemplate.opsForV......
  • MySQL 安装与配置教程:单机、主从复制与集群模式
    目录MySQL简介MySQL安装MySQL基础配置MySQL主从复制配置MySQL集群配置总结1.MySQL简介MySQL是一个广泛使用的关系型数据库管理系统,具有高性能、高可靠性和易用性等特点。它支持多种部署模式,包括单机模式、主从复制模式(用于高可用性和读写分离)以及集群模式(用于分......
  • Redis 安装与配置教程:单机、哨兵模式与集群模式
    目录Redis简介Redis安装Redis单机配置Redis哨兵模式配置Redis集群模式配置总结1.Redis简介Redis是一个开源的键值对存储系统,支持丰富的数据结构,如字符串、哈希、列表、集合等。它被广泛用于缓存、会话存储、实时分析等场景。Redis提供了多种部署模式,包括单机模......
  • SpringBoot中使用Redis
    SpringBoot中使用Redis1.在本地或者云端安装redis服务2.项目中使用2.1引入依赖<!--redisstart--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artif......
  • Redis的十大数据类型的常用命令(上)
    目录1.key的操作命令2.String的常用命令案例一:dy点赞案例二:文章的喜欢数3.List的常用命令案例:公众号订阅的消息4.Hash的常用命令案例:早期购物车设计5.Set的常用命令案例一:抽奖小程序案例二:朋友圈点赞案例三:朋友圈点赞6.Zset的常用集合(sortedset)案例一:根据商品......
  • redis 哨兵模式开启方案
    哨兵模式一、配置sentinel模式二、测试sentinel日志输出的状态信息环境准备准备三台系统为CentOS7的主机master:192.168.152.71slave1:192.168.152.72slave2:192.168.152.73.哨兵模式的介绍:Redis哨兵模式(RedisSentinel)用于提供高可用性和监控功能,主要......
  • 【VMware VCF】VMware Cloud Foundation Part 07:管理工作负载域中的主机和集群。
    一个标准VMwareCloudFoundation实例中具有管理工作负载域和VI工作负载域两种类型,管理域有且只有一个,而VI域可以创建多个,每种工作负载域中可以具有多个vSphere集群,而每个集群中可以具有多台主机,有关工作负载域所支持的集群和主机数等限制请查看VMwareConfigurationMax......
  • 达梦数据库部署案例之---DMDSC共享存储集群部署
    案例说明:在Linux环境下部署DMDSC共享存储集群。适用版本:DM8操作系统版本:[root@node201KingbaseHA]#cat/etc/centos-releaseCentOSLinuxrelease7.9.2009(Core)集群架构:如下所示,node1和node2为集群节点:节点信息:[root@node201KingbaseHA]#vi/etc/hosts192.......
  • 使用极限网关实现 ES 跨集群搜索
    使用ES的小伙伴,有没有在用跨集群搜索的?熟悉ES的小伙伴都知道,ES本身就能实现跨集群搜索,那为啥还要聊这个?试想一下,如果集群都上线投产了,才出现跨集群搜索需求,那么可能出现两种情况:两个集群都使用了证书加密传输,要实现互联,需要重新设置证书,还要重启集群;两个集群之间可能网......