linux redis5.0 集群搭建步骤

管理员 发布于 3年前   457

linux redis5.0 集群搭建

一、下载

  wget http://download.redis.io/releases/redis-5.0.0.tar.gz

二、解压、编译

  #解押到 /usr/local/ 文件夹

  tar -zxvf redis-5.0.0.tar.gz -C /usr/local/

      yum -y install gcc

  # 编译,并安装熬 /usr/local/redis 文件夹

      cd /usr/local/redis-5.0.0

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

  #复制 redis.conf 到安装目录

    cp -r  /usr/local/redis-5.0.0/redis.conf  /usr/local/redis

三、搭建集群

  #创建集群目录

  mkdir  /usr/local/redis-cluster

  # 复制redis原版到第一个集群节点文件夹

  cp -r /usr/local/redis/bin /usr/local/redis-cluster/7001

  # 打开 redis.conf 集群配置文件

  vim /usr/local/redis-cluster/7001/redis.conf

  # 配置下面内容

  daemonize yes

  bind 0.0.0.0

  protected-mode no

  port 7001

  requirepass "yingfeng365" 

  masterauth "yingfeng365"

  cluster-enabled yes

  cluster-config-file /usr/local/redis-cluster/nodes_7001.conf

  cluster-node-timeout 5000

  pidfile /usr/local/redis-cluster/redis_7001.pid

  logfile "/usr/local/redis-cluster/redis_7001.log"

  dir /usr/local/redis-cluster/7001


  # 以第一个节点为原版,再复制五个节点,并修改 redis.conf 为对应端口

  cp -r /usr/local/redis-cluster/7001 /usr/local/redis-cluster/7002

启动

/usr/local/redis-cluster/7000/redis-server /usr/local/redis-cluster/7000/redis.conf 

/usr/local/redis-cluster/7001/redis-server /usr/local/redis-cluster/7001/redis.conf 

/usr/local/redis-cluster/7003/redis-server /usr/local/redis-cluster/7003/redis.conf

/usr/local/redis-cluster/7004/redis-server /usr/local/redis-cluster/7004/redis.conf

/usr/local/redis-cluster/7005/redis-server /usr/local/redis-cluster/7005/redis.conf

/usr/local/redis-cluster/7006/redis-server /usr/local/redis-cluster/7006/redis.conf

关闭

/usr/local/redis-cluster/7001/redis-cli  -p 7001 shutdown save

/usr/local/redis-cluster/7002/redis-cli  -p 7002 shutdown save

/usr/local/redis-cluster/7003/redis-cli  -p 7003 shutdown save

/usr/local/redis-cluster/7004/redis-cli  -p 7004 shutdown save

/usr/local/redis-cluster/7005/redis-cli  -p 7005 shutdown save

/usr/local/redis-cluster/7006/redis-cli  -p 7006 shutdown save

启动集群

./redis-cli --cluster create 10.66.0.11:7000 10.66.0.11:7001 10.66.0.21:7000 10.66.0.21:7001 10.66.0.31:7000 10.66.0.31:7001 --cluster-replicas 1


k8s

先建sc.yml

nfs.yml

然后

redis.yml 6副本

redis-mgr.yml 进去组建集群,方法和虚机一样,目录:/usr/redis-4.0.*/src/redis-trib

./redis-trib.rb create --replicas 1 120.77.213.58:6480 120.77.213.58:6481 120.77.213.58:6482 120.77.213.58:6483 120.77.213.58:6484 120.77.213.58:6485


redis-trib.py create 10.233.16.5:6379 10.233.167.14:6379 10.233.110.107:6379


redis-trib.py create \

  `dig +short redis-cluster-0.redis-service.default.svc.cluster.local`:6379 \

  `dig +short redis-cluster-1.redis-service.default.svc.cluster.local`:6379 \

  `dig +short redis-cluster-2.redis-service.default.svc.cluster.local`:6379


redis-trib.py replicate --master-addr `dig +short redis-cluster-0.redis-service.default.svc.cluster.local`:6379 --slave-addr `dig +short redis-cluster-3.redis-service.default.svc.cluster.local`:6379


redis-trib.py replicate --master-addr `dig +short redis-cluster-1.redis-service.default.svc.cluster.local`:6379 --slave-addr `dig +short redis-cluster-4.redis-service.default.svc.cluster.local`:6379


redis-trib.py replicate --master-addr `dig +short redis-cluster-2.redis-service.default.svc.cluster.local`:6379 --slave-addr `dig +short redis-cluster-5.redis-service.default.svc.cluster.local`:6379


./redis-trib.rb create --replicas 1 `dig +short redis-cluster-0.redis-service.default.svc.cluster.local`:6379 `dig +short redis-cluster-0.redis-service.default.svc.cluster.local`:6379 `dig +short redis-cluster-0.redis-service.default.svc.cluster.local`:6379 `dig +short redis-cluster-0.redis-service.default.svc.cluster.local`:6379 `dig +short redis-cluster-0.redis-service.default.svc.cluster.local`:6379 `dig +short redis-cluster-0.redis-service.default.svc.cluster.local`:6379


随机组建集群3master 3 slave

./redis-trib.rb create --replicas 1 10.233.73.62:6379 10.233.241.82:6379 10.233.251.146:6379 10.233.251.145:6379 10.233.73.26:6379 10.233.241.113:6379


组建3个master

./redis-trib.rb create 10.233.16.42:6379 10.233.110.123:6379 10.233.211.189:6379


指定节点slave绑定master  master-id 主节点ID slave:6379  master:6379

./redis-trib.rb add-node --slave --master-id 00896b56e2183f47fee14a69ff0cac9d3159f6bb 10.233.16.61:6379 10.233.16.42:6379

指定节点slave绑定master

./redis-trib.rb add-node --slave --master-id ad71211d1576e2786409c34240c702c5b566d376 10.233.110.96:6379 10.233.110.123:6379

指定节点slave绑定master

./redis-trib.rb add-node --slave --master-id 9c465ffcf0c6fdbf3b1f7c7af6eb8436d715e22a 10.233.16.11:6379 10.233.211.189:6379


k8s集群调用方式

sentinels: "redis-cluster-0.redis-cluster:6379,redis-cluster-1.redis-cluster:6379,redis-cluster-2.redis-cluster:6379,redis-cluster-3.redis-cluster:6379,redis-cluster-4.redis-cluster:6379,redis-cluster-5.redis-cluster:6379"


redis迁移

$ yum install automake libtool autoconf bzip2 -y

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

$ cd redis-migrate-tool

$ autoreconf -fvi

$ ./configure

$ make


2、配置文件从redis cluster集群迁移数据到另外一个redis cluster集群 rmt.conf

[source]

type: redis cluster

servers:

- 127.0.0.1:8379

[target]

type: redis cluster

servers:

- 127.0.0.1:7379

[common]

listen: 0.0.0.0:8888

运行

$ src/redis-migrate-tool -c rmt.conf -o log -d

检查状态

$ redis-cli -h 127.0.0.1 -p 8888 info


查看所有key

KEYS *

查看key总数

DBSIZE

清空所有数据

FLUSHALL


5、数据校验:当数据迁移完成后,就可以进行数据迁移后的检查操作

$ src/redis-migrate-tool -c rmt.conf -o log -C "redis_check"

Check job is running...

Checked keys: 1000

Inconsistent value keys: 0

Inconsistent expire keys : 0

Other check error keys: 0

Checked OK keys: 1000

All keys checked OK!

Check job finished, used 1.041s


6、如何完成业务切换?

如果是异构集群的迁移,更改redis驱动/客户端和修改代码,重新发布是必然的事情。如果是同构集群,做配置发布就可以。如果没有做重启发布,等待源集群没有连接之后,可以关闭RMT进程(kill)。或者重启应用,强制断开长连接。


五、注意事项

1、重要的事说三遍,RMT迁移数据到twemproxy,需要保持rmt.conf 中 [target]  hash、distribution、servers 三个参数和目标集群的twemproxy配置严格一致。

2、迁移中和业务切换之前,请反复观察“-o rmt.log”日志信息,确认是否有异常。

3、业务切换之前,请充分检查,特别是数据的一致性。

4、RMT 建议部署在单独空闲机器上,同目的集群在同一个网段(跨机房迁移数据,可以提高迁移速度)。千万不要部署在源集群所在的机器,防止资源不足,比如内存,带宽,IOPS。

5、注意RDB传输是否超时。

6、redis client buf中的slave项,设置足够大的buffer size和超时时间。

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

该博客于2020-12-7日,后端基于go语言的beego框架开发
前端页面使用Bootstrap可视化布局系统自动生成

是我仿的原来我的TP5框架写的博客,比较粗糙,底下是入口
侯体宗的博客

      订阅博客周刊

文章标签

友情链接

HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群
侯体宗的博客