侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

linux redis5.0 集群搭建步骤

框架(架构)  /  管理员 发布于 2年前   855

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和超时时间。


  • 上一条:
    linux常用命令记录
    下一条:
    linux系统新装后设置上网命令及步骤
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • windows系统phpstudy环境中安装amqp拓展流程步骤(0个评论)
    • 安装docker + locust + boomer压测环境实现对接口的压测(1个评论)
    • 通过CodePipeline在AWS Elastic Beanstalk上部署PHP(Laravel)应用程序(0个评论)
    • Saga分布式事务(0个评论)
    • ubuntu中搭建lnmp环境部署laravel9框架项目流程步骤(0个评论)
    • 近期文章
    • 在laravel框架中的5个HTTP客户端技巧分享(0个评论)
    • 在go语言中使用FFmpeg库实现PCM音频文件编码为mp3格式文件流程步骤(0个评论)
    • gopacket免安装Pcap实现驱动层流量抓包流程步骤(0个评论)
    • 在laravel项目中实现密码强度验证功能推荐扩展包:password-strength(0个评论)
    • 在go语言中用filepath.Match()函数以通配符模式匹配字符串示例(0个评论)
    • Laravel Response Classes 响应类使用优化浅析(0个评论)
    • mysql中sql_mode的各模式浅析(0个评论)
    • 百度文心一言今天发布,个人第一批内测体验记录,不好别打我(0个评论)
    • 嘿加密世界让我们谈谈在共识中将中本聪主流化(0个评论)
    • 在go语言中寻找两个切片或数组中的相同元素/共同点/交集并集示例代码(0个评论)
    • 近期评论
    • 博主 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..
    • xiaoB 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..
    • BUG4 在

      你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..
    • 博主 在

      go语言+beego框架中获取get,post请求的所有参数中评论 @ t1  直接在router.go文件中配就ok..
    • Jade 在

      如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
    • 2018-05
    • 2020-02
    • 2020-03
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-11
    • 2021-03
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-08
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客