本次搭建是在单机版搭建基础上搭建的。阅读之时请参考下面文章:
redis单机版搭建
在同一台机器上搭建的,所以是伪集群搭建。真正搭建应该是在不同的机器上。
[root@huameng redis-5.0.12] mkdir -p data/cluster/8001
[root@huameng redis-5.0.12] mkdir -p data/cluster/8002
[root@huameng redis-5.0.12] mkdir -p data/cluster/8003
[root@huameng redis-5.0.12] mkdir -p data/cluster/8004
[root@huameng redis-5.0.12] mkdir -p data/cluster/8005
[root@huameng redis-5.0.12] mkdir -p data/cluster/8006
[root@huameng redis-5.0.12] mkdir -p log/8001
[root@huameng redis-5.0.12] mkdir -p log/8002
[root@huameng redis-5.0.12] mkdir -p log/8003
[root@huameng redis-5.0.12] mkdir -p log/8004
[root@huameng redis-5.0.12] mkdir -p log/8005
[root@huameng redis-5.0.12] mkdir -p log/8006
## 创建conf存入目录
[root@huameng redis-5.0.12] mkdir -p conf/cluster
## 复制redis.conf文件到该目录下
cp redis.conf conf/cluster/redis-8001.conf
##修改端口
port 8001
##开启守护进程
daemonize yes
##指定访问ip
bind 0.0.0.0
##指定pid文件
pidfile "/var/run/redis_8001.pid"
##指定日志文件
logfile "/usr/local/redis-5.0.12/log/8001/8001.log"
##指定日志存储位置
dir "/usr/local/redis-5.0.12/data/cluster/8001"
## 开启AOF持久化
appendonly yes
##启用集群模式
cluster-enabled yes
##集群节点信息保存文件
cluster-config-file nodes-8001.conf
##指定节点超时时间
cluster-node-timeout 5000
#不必须
##设置访问密码
requirepass redis
##设置集群节点访问密码
masterauth redis
[root@huameng cluster] cp redis-8001.conf redis-8002.conf
[root@huameng cluster] cp redis-8001.conf redis-8003.conf
[root@huameng cluster] cp redis-8001.conf redis-8004.conf
[root@huameng cluster] cp redis-8001.conf redis-8005.conf
[root@huameng cluster] cp redis-8001.conf redis-8006.conf
将8001批量替换成对应的端口
:%s/需要修改的/替换的/g
如修改redis-8002.conf
:%s/8001/8002/g
[root@huameng redis-5.0.12] ./src/redis-server conf/cluster/redis-8001.conf
[root@huameng redis-5.0.12] ./src/redis-server conf/cluster/redis-8002.conf
[root@huameng redis-5.0.12] ./src/redis-server conf/cluster/redis-8003.conf
[root@huameng redis-5.0.12] ./src/redis-server conf/cluster/redis-8004.conf
[root@huameng redis-5.0.12] ./src/redis-server conf/cluster/redis-8005.conf
[root@huameng redis-5.0.12] ./src/redis-server conf/cluster/redis-8006.conf
查看是否全部启动
ps -ef|grep redis
如果有没启动的,去对应的log文件中查看原因
firewall-cmd --add-port=8001/tcp --permanent;
firewall-cmd --add-port=8002/tcp --permanent;
firewall-cmd --add-port=8003/tcp --permanent;
firewall-cmd --add-port=8004/tcp --permanent;
firewall-cmd --add-port=8005/tcp --permanent;
firewall-cmd --add-port=8006/tcp --permanent;
## 开启gossip端口,是各端口+10000
firewall-cmd --add-port=18001/tcp --permanent;
firewall-cmd --add-port=18002/tcp --permanent;
firewall-cmd --add-port=18003/tcp --permanent;
firewall-cmd --add-port=18004/tcp --permanent;
firewall-cmd --add-port=18005/tcp --permanent;
firewall-cmd --add-port=18006/tcp --permanent;
##
firewall-cmd --reload
./src/redis-cli -a 密码 -cluster create --cluster-replicas 每个主对应从的个数 ip:port ip:port…
一般前面的是主后面的是从
[root@huameng redis-5.0.12] ./src/redis-cli -a redis --cluster create --cluster-replicas 1 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006
-c
表示使用集群访问
-a
指定访问密码
-h
指定访问ip
-p
指定访问端口
[root@huameng redis-5.0.12] ./src/redis-cli -c -a redis -h 127.0.0.1 -p 8001
## 查看集群结点分配信息详情
cluster nodes
## 查看集群节点信息
cluster info
根据上面再创建两个服务 8007和8008。以8007为master,8008为slave
./src/redis-cli -a redis --cluster add-node 添加服务的ip和端口 集群中随意一个服务的ip和端口
[root@huameng redis-5.0.12] ./src/redis-cli -a redis --cluster add-node 127.0.0.1:8007 127.0.0.1:8001
./src/redis-cli -a redis --cluster reshard 集群中随意一个服务的ip和端口
./src/redis-cli -a -redis --cluster reshard 127.0.0.1:8001
[root@huameng redis-5.0.12] ./src/redis-cli -c -a redis -h 127.0.0.1 -p 8001
[root@huameng redis-5.0.12] ./src/redis-cli -a redis --cluster add-node 127.0.0.1:8008 127.0.0.1:8001
cluster replicate master服务的Id
## 进入8008服务
[root@huameng redis-5.0.12] ./src/redis-cli -c -a redis -h 127.0.0.1 -p 8008
## 执行
cluster replicate 8c1df2b3b36b035fec9f2105ede5e7d58cef5366
## 查看集群信息
cluster nodes
将8007-8008主从结点从集群中删除
[root@huameng redis-5.0.12] ./src/redis-cli -a redis --cluster del-node 删除服务的ip和端口 删除服务的ID
./src/redis-cli -a redis --cluster del-node 127.0.0.1:8008 e010ee3575e59d93d86aa78a8c14375efedb1949
[root@huameng redis-5.0.12] ./src/redis-cli -a redis --cluster reshard 127.0.0.1:8007
./src/redis-cli -a redis --cluster del-node 127.0.0.1:8007 f010ee3575e59d93d86aa78a8c14375efedb1959
### 全部停掉redis服务
pkill redis-server
### 全部启动redis服务上面有
### redis服务重启后集群及启动,不需要启动集群命令。因为集群分配规则细节已经保存的了对应的文件中。
### 如果需要完全不按照之前的配置规则来,需要删掉cluster-config-file对应的文件后再执行启动集群命令
1、外网springboot连接redis集群时出现集群信息访问了内网ip或者是127.0.0.1
解决方案:
集群启动命令中的127.0.0.1
需改为实际端口。并且需要放开上面的端口(可能不需要)
查看各个服务中cluster-config-file对应的文件,如果发现里面有内网ip或者127.0.0.1时,改为外网ip,
并重启所有服务即可