首页 > 数据库 >redis cluster 迁移

redis cluster 迁移

时间:2024-03-16 13:11:26浏览次数:29  
标签:xxx redis cluster xxx.51 usr 迁移 local 节点

一、redis迁移概述。

生产环境Redis当前部署环境为六台16核126G服务器,服务器资源整体配置较高,使用率较低(具体使用率参见表一)。为了更好地提升资源使用率,优化成本,故对redis cluster集群做迁移和合并。Redis cluster集群的迁移步骤为:首先安装redis集群,再次迁移redis数据,最后做业务切换。切换完成后做业务检查和服务器其他部署业务迁移,服务迁移后关机观察。观察一段时间待系统平稳运行后,释放服务器。

 

                          

二、redis迁移前后架构分析。

Redis迁移前集群主要是六台服务器三主三从组成,不存在主从节点在同一节点的问题。Redis缩容后只保留三台服务器节点,所以必须做到主从交叉,不然当一个主节点服务器出现故障后,从节点和主节点在一个服务器上面便会出现主从不一致的情况。

 

                             图二 当前部署模式

 

 

                            图三 缩容后部署模式。

 

三、迁移前部署环境。

  1. K8s集群节点。
  2. Redis集群环境。Redis 版本4.0.14。
  3. Redis硬件部署环境,详见下表。

 

 

 

服务器IP

内核

内存

内存使用率

服务器硬盘使用率

xxx.xxx.51.180

16

126

0.70%

根目录:23%   /data:3%   其他(260G):2%

xxx.xxx.51.181

16

126

16%

根目录:43%   其他(260G):2%

xxx.xxx.51.182

16

126

40%

根目录:59%   /data:1%   其他(252G):2%

xxx.xxx.51.183

16

126

52%

根目录:40%   /data:1%   其他(252G):2%

xxx.xxx.51.184

16

126

37%

根目录:4%   /data:84%   其他(252G):2%

xxx.xxx.51.185

16

126

38%

根目录:67%   /data:38%   其他(252G):2%

 

                                     表一

四、Redis新集群部署。

  1. 安装依赖。

yum -y install gcc-c++ wget

    yum install gcc g++ gcc-c++ make -y

yum install ruby rubygems -y

yum install -y rh-ruby30

scl enable rh-ruby30  bash

ruby -v

gem source -a http://mirrors.aliyun.com/rubygems/  -remove https://rubygems.org/

gem install redis -v 4.1.0

  1. Redis 下载编译安装。

下载redis 安装包,服务器已经下载在xxx.xxx.79.56地址下的/usr/local/redis-4.0.14.tar.gz。

tar axf redis-4.0.10.tar.gz && cd redis-4.0.10

make&&make install PREFIX=/usr/local/redis

cp -a /usr/local/redis/redis-server /usr/local/bin/redis-server

scp -rp /usr/local/redis  [email protected]:/usr/local/

scp -rp /usr/local/redis  [email protected]:/usr/local/

  1. 修改配置文件

sed -i 's#xxx.xxx.56.67#xxx.xxx.79.56#g' /usr/local/redis/conf*.conf

  1. 启动redis服务。

[root@master2 redis]# cat start-all.sh

#!/bin/bash

cd /usr/local/redis/conf/

redis-server redis-6377.conf

redis-server redis-6378.conf

  1. 设置redis 加入集群。

cd /usr/local/redis

./redis-trib.rb create --replicas 1 xxx.xxx.79.56:6377 xxx.xxx.79.56:6378 xxx.xxx.51.179:6377 xxx.xxx.51.179:6378 xxx.xxx.79.44:6377                xxx.xxx.79.44:6378

 

  1. 检查redis集群状态。

/usr/local/redis/redis-cli -h xxx.xxx.79.56 -p 6378 -c

 

 

检查redis nodes 状态

 

 

 

 

 

Redis会随机分配,如果主从在一个节点上则需要重新制定主节点。

在从节点上面指定新的主节点:

cluster replicate bb0437622d05d9020fd588a8a6e379f8d34681a2

 

 

Redis配置文件如下:

[root@master2 conf]# cat redis-6377.conf

bind xxx.xxx.79.56

protected-mode yes

port 6377

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize yes

supervised no

pidfile /var/run/redis_6377.pid

logfile "/usr/local/redis/logs/6377.log"

dir "/usr/local/redis/data/"

loglevel notice

databases 16

always-show-logo yes

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump-6377.rdb

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

lazyfree-lazy-expire no

lazyfree-lazy-server-del no

slave-lazy-flush no

appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble no

lua-time-limit 5000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 15000

cluster-require-full-coverage no

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-size -2

list-compress-depth 0

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

 

五、Redis 数据平滑迁移。

git clone https://github.com/vipshop/redis-migrate-tool.git

cd redis-migrate-tool

yum -y install automake libtool autoconf bzip2

autoreconf -fvi

./configure

make

./src/redis-migrate-tool

修改 rmt.conf 文件为:

[source]

type: redis cluster  # 源redis类型

servers :

  - 127.0.0.1:7001   # 源redis地址,可以只填一个,保证cluster nodes能获取到正常信息即可

 

[target]

type: redis cluster  # 目标redis类型

servers:

  - 127.0.0.1:8001   # 目标redis地址

 

[common]

listen: 0.0.0.0:8888  # 服务启动后,监听的地址和端口

 

启动迁移工具:

./src/redis-migrate-tool -c rmt.conf

 

查看全部完成迁移的提示。

All nodes' rdb file parsed finished for this write thread(0).

 

六、服务切换新的redis地址。

根据项目的不同进入到gitlab代码库修改配置文件和nacos修改redis的配置文件。gitlab代码库位置http://xxx.xxx.55.114:8087/

 

 nodeAddresses:  redis://xxx.xxx.51.180:6380,redis://xxx.xxx.51.181:6380,redis://xxx.xxx.51.182:6380,redis://xxx.xxx.51.183:6380,redis://xxx.xxx.51.184:6380,redis://xxx.xxx.51.185:6380

 

 nodes: # Comma-separated list of "host:port" pairs to bootstrap from.

"xxx.xxx.51.180:6380,xxx.xxx.51.181:6380,xxx.xxx.51.182:6380,xxx.xxx.51.183:6380,xxx.xxx.51.184:6380,xxx.xxx.51.185:6380"

 

Nacos 具体链接询问开发。

七、切换后业务业务检查。

  1. 切换完成后,检查后端pod服务等运行是否正常,后端是否有报错等异常情况。
  2. 检查业务运行速度是否正常。
  3. 检查系统资源使用是否正常,预防高配置迁移低配置系统资源占用过高的情况。

     

八、业务切换完成后驱逐pod

1.node节点配置pod不可调度到该节点上。

    kubectl get nodes

kubectl cordon nodename或IP

执行完成后检查为不可调度,再执行下一步。

 

2.node节点上的服务驱逐。

kubectl drain --ignore-daemonsets <NODE_NAME>

kubectl get pod --all-namespaces -o wide

检查节点pod是否驱逐完成

3.node节点下线。

    kubectl delete nodes k8s-node2

4.驱逐前后需要观察pod的状态是否在其他节点正常。

九、服务全部迁移后系统关机观察。

      关机一段时间后,确认业务已迁移和备份后做后释放云主机。

 

 

 

 

 

 

 

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:xxx,redis,cluster,xxx.51,usr,迁移,local,节点
From: https://www.cnblogs.com/gaoyuechen/p/18076965

相关文章

  • 数据量大的时候,要使用 redis 而不用 mysql
    Redis和MySQL都是广泛使用的数据库,但它们适用于不同的场景和需求。MySQL是一个关系型数据库,它适用于存储大量的结构化数据,并且提供复杂的数据查询和事务处理能力。它适合于需要进行深度数据分析和复杂joins的场景。Redis是一个内存中的数据结构存储系统,通常用作数据库、缓......
  • helm 安装redis的主从、哨兵
    helm安装redis的主从、哨兵主要的配置还是得看helmvalues中的注释说明安装库$helmrepoaddbitnamihttps://charts.bitnami.com/bitnami#查询redis资源$helmrepoupdate$helmsearchreporedis#把redis拉到本地$helmpullbitnami/redis--version16.11.2......
  • Redis管理平台
     github地址:https://github.com/qq290070744/redis_admin国内仓库码云地址:https://gitee.com/jiangwenhui_admin/redis_admin安装redis_admin分之说明master为主开发分支,体验最新版本可clone该版本Vx.x.x为稳定发布版本Python环境python>=3.10mysql>=8.0clone项目和虚......
  • redis主从+哨兵模式
    什么是哨兵模式Redis哨兵模式是一种用于确保Redis高可用性的解决方案。通过运行独立的哨兵进程,它能监控主服务器和从服务器的状态,并在主服务器故障时自动执行故障转移操作,将一个从服务器晋升为新的主服务器,从而保障系统的持续可用性。哨兵模式工作原理;监控主从服务器:在Re......
  • 迁移学习的技术突破与应用前景
    目录前言1迁移学习技术1.1原理与分类1.2主要挑战2迁移学习应用2.1计算机视觉2.2医疗健康3未来展望3.1推动各领域发展3.2提高模型泛化能力和效果3.3在新兴领域中广泛应用结语前言迁移学习作为机器学习领域的重要技术之一,以其能够将从一个任务中学到的知......
  • Redis zset 底层结构
    Rediszset底层结构  概要  在Redis的五种主要数据类型中,zset(有序集合)类型可能是最复杂,但也是最强大的一种。zset不仅可以存储键值对,还可以为每个元素分配一个分数,然后根据这个分数进行排序。这使得Zset非常适合用于实现排行榜、时间线等功能。  一、Zset底层结......
  • 【PG】Ora2pg 数据库对象迁移顺序
    在将数据库对象从Oracle迁移到PostgreSQL时,以下是一个常见的迁移顺序建议:表:首先迁移表的结构和数据,因为其他对象(如索引、触发器和函数)可能依赖于表的存在。索引:迁移表之后,迁移索引。在PostgreSQL中创建与Oracle索引相对应的索引。触发器:迁移触发器。在PostgreSQL中创建与O......
  • 基于ubuntu镜像构建redis镜像
    第一步:编辑DockerfileviDockerfile#写入FROMubuntu:latestMAINTAINERlqzWORKDIR/softRUNapt-getupdate&&apt-getinstallwgetmakebuild-essential-yRUNwgethttps://github.com/redis/redis/archive/7.0.11.tar.gz&&tar-xzvf7.0.11.tar.gz......
  • 【PG】不同PG中迁移表
    #!/bin/bash#SourcedatabasecredentialsSRC_DB_HOST="localhost"SRC_DB_PORT="5442"SRC_DB_NAME="postgres"SRC_DB_USER="myuser"SRC_DB_PASS='mypwd'#DestinationdatabasecredentialsDEST_DB_HOST="l......
  • 操作Redis之go-redis
    目录一、go操作redis的选择二、redis安装1.windowd平台安装方案2.mac平台和linux平台安装方案3.redis应用三、快速使用1.快速连接2.字符串操作(1)方法(2)示例3.列表操作(1)方法(2)示例4.hash操作(1)方法(2)示例5.集合操作(1)方法(2)示例6.有序集合操作(1)方法(2)示例7.通用操作(1)方法(2)示例8.......