当前位置:网站首页>redis伪集群搭建
redis伪集群搭建
2022-07-30 06:12:00 【weixin_44953227】
目录
一、下载并编译redis
mkdir /home/soft/redis
cd /home/soft/redis
wget https://download.redis.io/releases/redis-6.2.4.tar.gz
tar xzf redis-6.2.4.tar.gz
cd redis-6.2.4
make
二、初始化6个节点
规划:7000、7002、7004为主,7001、7003、7005为从
cd /home/soft/redis
mkdir -p cluster
cd cluster
mkdir -p redis_{
7000..7005}/{
data,log,node,pid}
三、初始化7000节点
cd /home/soft/redis/cluster
cp /home/soft/redis/redis-6.2.4/redis.conf /home/soft/redis/cluster/redis7000.conf
cd /home/soft/redis/cluster
vi redis7000.conf
#注释掉不绑定就是不限制本机访问
#bind 127.0.0.1 -::1
#指定端口
port 7000
# 启动后台运行
daemonize yes
# 存放进程Id
pidfile /home/soft/redis/cluster/redis_7000/pid/redis_7000.pid
# 日志文件
logfile "/home/soft/redis/cluster/redis_7000/log/redis7000.log"
# 快照存放文件,存储在dir配置的工作目录下
dbfilename dump7000.rdb
# 工作目录
dir /home/soft/redis/cluster/redis_7000/data/
# 是否启动保存操作日志
appendonly yes
# 操作日志存放文件
appendfilename "appendonly7000.aof"
# 是否开启集群
cluster-enabled yes
# 集群配置文件(启动后自动生成),存储在dir配置的工作目录下data
cluster-config-file nodes-7000.conf
# 集群节点ping、pong超时时间
cluster-node-timeout 10000
# 节点访问密码
requirepass zsoft
# 客户的最大连接数
maxclients 100000
#最大内存
maxmemory 10G
#主节点设置了密码,从节点需要配置主节点的密码,否则无法主从同步
masterauth zsoft
四、初始化7001到7005节点
cd /home/soft/redis/cluster
sed 's/7000/7001/g' redis7000.conf > redis7001.conf
sed 's/7000/7002/g' redis7000.conf > redis7002.conf
sed 's/7000/7003/g' redis7000.conf > redis7003.conf
sed 's/7000/7004/g' redis7000.conf > redis7004.conf
sed 's/7000/7005/g' redis7000.conf > redis7005.conf
五、启动7000到7005节点
cd /home/soft/redis/redis-6.2.4
src/redis-server /home/soft/redis/cluster/redis7000.conf
src/redis-server /home/soft/redis/cluster/redis7001.conf
src/redis-server /home/soft/redis/cluster/redis7002.conf
src/redis-server /home/soft/redis/cluster/redis7003.conf
src/redis-server /home/soft/redis/cluster/redis7004.conf
src/redis-server /home/soft/redis/cluster/redis7005.conf
六、查看已启动的节点进程
ps -ef| grep redis
七、创建6个节点的集群
cd /home/soft/redis/redis-6.2.4
src/redis-cli --cluster create 192.168.10.14:7000 192.168.10.14:7002 192.168.10.14:7004 192.168.10.14:7001 192.168.10.14:7003 192.168.10.14:7005 --cluster-replicas 1 -a zsoft
注意:但提示Can I set the above configuration?时,请输入yes
ps:最后这个 --cluster-replicas 1,表示每个主节点一个备份节点,即一主一从,–cluster-replicas 2, 即一主两从(需要9个节点)
PS:大坑,网上大部分建立集群的时候都是使用127.0.0.1,这样会导致java客户连接集群时默认使用127.0.0.1来连接,所以不能使用以下命令来建立集群
src/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7002 127.0.0.1:7004 127.0.0.1:7001 127.0.0.1:7003 127.0.0.1:7005 --cluster-replicas 1 -a zsoft
八、查看集群节点信息
cd /home/soft/redis/redis-6.2.4
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft cluster nodes
九、关闭所有节点服务
cd /home/soft/redis/redis-6.2.4
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft shutdown
src/redis-cli -h 127.0.0.1 -p 7001 -a zsoft shutdown
src/redis-cli -h 127.0.0.1 -p 7002 -a zsoft shutdown
src/redis-cli -h 127.0.0.1 -p 7003 -a zsoft shutdown
src/redis-cli -h 127.0.0.1 -p 7004 -a zsoft shutdown
src/redis-cli -h 127.0.0.1 -p 7005 -a zsoft shutdown
十、重建集群
模式一、全部数据删除重建集群
必须先第九步关停所有节点服务
cd /home/soft/redis/cluster
rm -rf redis_{
7000..7005}/{
data,log,node,pid}
cd /home/soft/redis/cluster
mkdir -p redis_{
7000..7005}/{
data,log,node,pid}
然后重新执行第五步启动7000到7005节点
然后执行第七步重建集群
模式二、删除配置重建集群
必须先第九步关停所有节点服务
cd /home/soft/redis/cluster
rm -rf redis_{
7000..7005}/data/nodes-{
7000..7005}.conf
然后重新执行第五步启动7000到7005节点
然后执行第七步重建集群
十一、开通端口支撑远程访问
firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=7004/tcp --permanent
firewall-cmd --zone=public --add-port=7005/tcp --permanent
firewall-cmd --zone=public --add-port=7006/tcp --permanent
firewall-cmd --zone=public --add-port=7007/tcp --permanent
firewall-cmd --reload
十二、扩容
集群扩容7006、7007
cd /home/soft/redis/cluster
mkdir -p redis_{
7006,7007}/{
data,log,node,pid}
sed 's/7000/7006/g' redis7000.conf > redis7006.conf
sed 's/7000/7007/g' redis7000.conf > redis7007.conf
cd /home/soft/redis/redis-6.2.4
src/redis-server /home/soft/redis/cluster/redis7006.conf
src/redis-server /home/soft/redis/cluster/redis7007.conf
将新节点(127.0.0.1:7006)加入已有集群(127.0.0.1:7000)
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft --cluster add-node 127.0.0.1:7006 127.0.0.1:7000
查看新节点(127.0.0.1:7006)集群Id(默认为master节点)
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft cluster nodes
将从节点7007加入集群并指定master节点为7006(id)
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft --cluster add-node 127.0.0.1:7007 127.0.0.1:7000 --cluster-slave --cluster-master-id 这里填7006master的id
查看集群信息
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft cluster nodes
给新master节点(127.0.0.1:7006)分配槽位
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft --cluster reshard 127.0.0.1:7006
然后输入需要分配的槽位数,例如100
然后再输入接受槽位的masterId,即新增的7006节点
然后再输入被分割槽位的masterID,例如7004节点
最后输入done结束分配。
十三、缩容
去掉7006、7007节点
查看集群信息
cd /home/soft/redis/redis-6.2.4
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft cluster nodes
#将7006节点的槽位归还7004
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft --cluster reshard --cluster-from 7006节点id --cluster-to 7004节点id --cluster-slots 槽位数 127.0.0.1:7006
将7006、7007节点移出集群
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft --cluster del-node 127.0.0.1:7000 7007节点id
src/redis-cli -h 127.0.0.1 -p 7000 -a zsoft --cluster del-node 127.0.0.1:7000 7006节点id
关停7006、7007节点服务
src/redis-cli -h 127.0.0.1 -p 7006 -a zsoft shutdown
src/redis-cli -h 127.0.0.1 -p 7007 -a zsoft shutdown
查看redis服务
ps -ef| grep redis
边栏推荐
猜你喜欢

The introduction of AI meta-learning into neuroscience, the medical effect is expected to improve accurately
获取controller中所有接口路径和名称

Go combines Gin to export Mysql data to Excel table

How to calculate the daily cumulative capital flow one by one in real time

首届人工智能安全大赛正式启动

Map file analysis in Keil software

DNS domain name resolution services

Electron之初出茅庐——搭建环境并运行第一个程序

export , export default,import完整用法

RAID disk array
随机推荐
The newcomer deleted data by mistake, and the team leader skillfully used MySQL master-slave replication to delay the recovery of losses
Go 结合Gin导出Mysql数据到Excel表格
识别“数据陷阱”,发现数据的可疑之处
ArrayList
go : create database records using gorm
Electron中设置菜单(Menu),主进程向渲染进程共享数据
UDP和TCP使用同一个端口,可行吗?
golang: Gorm configures Mysql multiple data sources
获取controller中所有接口路径和名称
C language custom types, rounding
Monkey and Banana
云服务器零基础部署网站(保姆级教程)
Go 使用 freecache 缓存
Go uses freecache for caching
selenium module
[GO Language Basics] 1. Why do I want to learn Golang and get started with GO language
MySQL off-topic [ORM thought analysis]
C语言自定义类型详解
Playing script killing with AI: actually more involved than me
谷粒商城--环境部署(2022/7/28最新)