Linux下搭建Redis伪集群
1. Redis安装启动
Redis官网下载:https://redis.io/
解压:
tar -zxvf redis-6.2.6.tar.gz
mv redis-6.2.6 redis
cd redis
make #编译
mkdir bin # 创建bin目录
cd src #进入src目录
分别将以下文件复制到bin目录:
cp mkreleasehdr.sh ../bin
redis-check-aof
redis-check-rdb
redis-server
redis-cli
启动 Redis:
./redis-server redis.conf
设置后台启动
#redis.conf
daemonize yes #默认no 改为yes
关闭redis
./redis-cli shutdown
2. Redis伪集群搭建
2.1 配置文件
集群结构:
IP | PORT | 角色 |
---|---|---|
192.168.150.101 | 7001 | master |
192.168.150.101 | 7002 | slave |
192.168.150.101 | 7003 | slave |
在Redis 目录下分别创建 文件夹 7001 、 7002 、7003 。
mkdir 7001 7002 7003
#复制配置文件
cp /bin/redis.conf 7001
#编辑配置文件
vim /7001/redis.conf
需要修改的配置:
port 7001
# 开启RDB
# save ""
save 3600 1
save 300 100
save 60 10000
# 关闭AOF
appendonly no
将配置文件分别复制到 7002、7003 ,修改 port 7002 , 7003即可。
启动
将 redis-server ,redis-cli 复制到 7001 7002 7003
cd 7001
./redis-server redis.conf
#同样分别启动7002 7003
2.2 开启主从关系
永久生效:
在 redis.conf 中添加配置:
replicaof <masterip> <masterport>
比如:
replicaof 127.0.0.1 7001
若 redis 版本在5.0以下 ,则需要将 replicaof 改为 slaveof。
临时生效:
启动 redis-cli 客户端,执行 replicaof 命令。
如果 master 为 7001,则启动7002与7003执行命令即可。
./redis-cli -p 7002 #客户端启动需要指定端口
replicaof 127.0.0.1 7001
查看状态:
#连接7001
./redis-cli -p 7001
info replication
测试:
7001 set num 1;
7002,7003 get num;
注意: 只有 master 节点可以执行写操作。
3. 搭建哨兵集群
哨兵集群结构:
节点 | IP | PORT |
---|---|---|
s1 | 192.168.150.101 | 27001 |
s2 | 192.168.150.101 | 27002 |
s3 | 192.168.150.101 | 27003 |
第一步:
#复制启动文件
cp /src/redis-sentinel 7001
#复制配置文件
cp sentinel.conf 7001
#修改配置文件
vim /7001/sentinel.conf
配置文件:
port 27001
sentinel announce-ip 127.0.0.1
sentinel monitor mymaster 127.0.0.1 7001 2 #指定主节点信息
sentinel down-after-milliseconds mymaster 5000 #指定时间无法访问,被认为主观下线
sentinel failover-timeout mymaster 60000 #等待所有副本重新配置为新主副本的最长时间。
dir ./
将配置文件复制到 7002 , 7003 分别修改 port 7002, 7003。
启动:
#分别在 7001 7002 7003 文件夹下启动
./redis-sentinel sentinel.conf
尝试让7001宕机。
./redis-cli -p 7001 shutdown
查看 sentinel 日志
4. 搭建分片集群
分片集群结构:
IP | PORT | 角色 |
---|---|---|
192.168.150.101 | 8001 | master |
192.168.150.101 | 8002 | master |
192.168.150.101 | 8003 | master |
192.168.150.101 | 9001 | slave |
192.168.150.101 | 9002 | slave |
192.168.150.101 | 9003 | slave |
4.1修改配置文件 redis.conf
port 6379
# 开启集群功能
cluster-enabled yes
# 集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file nodes-6379.conf
# 节点心跳失败的超时时间
cluster-node-timeout 5000
# 持久化文件存放目录
dir ./
# 绑定地址
bind 0.0.0.0
# 让redis后台运行
daemonize yes
# 注册的实例ip
replica-announce-ip 127.0.0.1# 保护模式
protected-mode no
# 数据库数量
databases 1
# 日志
logfile ""
分别复制到 8001 - 9003文件夹中。
启动 6个 redis,端口8001-9003。
4.2 创建集群
redis 启动后,各个服务之间仍然是独立的。
创建集群:
redis-cli --cluster create --cluster-replicas 1 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003
说明:
redis-cli --cluster
代表集群操作命令
create
代表是创建集群
--cluster-replicas 1
指定集群中每个master的副本个数为1
master 数 = 节点总数 ÷ (replicas + 1)
节点列表中的前n个就是master,其它节点都是slave节点,随机分配到不同master。
查看集群状态:
redis-cli -p 8001 cluster nodes
连接节点:
redis-cli -c -p 8001
注意:节点操作时要加上 -c
。
set a 1;
set b 2;
尝试多 set
几个,会发现redis-client
会在几个主节点切换。