linux redis5.0 集群搭建步骤
管理员 发布于 4年前   479
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框架写的博客,比较粗糙,底下是入口
侯体宗的博客
文章标签
友情链接