Redis集群搭建:解决java程序外网无法连接集群

准备工作

创建集群目录

mkdir redis-cluster

创建节点目录(集群至少需要三主三从)

cd redis-cluster
mkdir 7000 7001 7002 7003 7004 7005

复制redis至集群目录

cp -r * /usr/local/redis-cluster/(这里复制了redis所有文件,理论上只复制redis-server.c文件即可,不过未进行尝试)

修改配置

vim redis-conf

基础配置

解决外网访问
1.bind 注释掉,即开启外部访问
2.使用密码,安全访问
设置密码:
requirepass xxxx
后台启动
daemonize yes
修改端口
port 7000

集群配置

1.开启集群模式
cluster-enabled yes
2.集群配置文件
cluster-config-file nodes-700x.conf
3.集群节点超时连接
cluster-node-timeout 5000
4.开启aof模式
appendonly yes
5.数据库文件修改
dbfilename dump700x.rdb
6.pidfile
pidfile /var/run/redis_700x.pid

复制配置文件到节点目录

cd ../local/redis-cluster/
cp redis.conf 7000
cp redis.conf 7001
cp redis.conf 7002
cp redis.conf 7003
cp redis.conf 7004
cp redis.conf 7005

创建集群

redis5

  1. 本机创建(使用jedisCluster解析获取的集群节点ip是127.0.0.1,外界无法访问)
    ./redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
  2. 内网创建(同1,不同局域网程序无法访问)
    ./redis-cli --cluster create 172.17.128.38:7000 172.17.128.38:7001 172.17.128.38:7002 172.17.128.38:7003 172.17.128.38:7004 172.17.128.38:7005 --cluster-replicas 1 -a password
  3. 公网创建
    ./redis-cli --cluster create 公网ip:7000 公网ip:7001 公网ip:7002 公网ip:7003 公网ip:7004 公网ip:7005 --cluster-replicas 1 -a password(设置了密码需要加此命令)
  • create创建新集群
  • cluster-replicas为每个主机提供1个从机

redis3/4

使用redis-trib.rb(src下)

安装redisgem

gem install redis

创建集群

./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

创建成功

[OK] All 16384 slots covered

脚本创建集群

https://redis.io/topics/cluster-tutorial

启动集群

cd 7000
../src/redis-server redis.conf
cd ../7001
../src/redis-server redis.conf
cd ../7002
../src/redis-server redis.conf
cd ../7003
../src/redis-server redis.conf
cd ../7004
../src/redis-server redis.conf
cd ../7005
../src/redis-server redis.conf
cd ..

查看节点状态

ps -ef | grep redis

root 31002 1 0 20:49 ? 00:00:00 …/src/redis-server *:7000 [cluster]
root 31007 1 0 20:49 ? 00:00:00 …/src/redis-server *:7001 [cluster]
root 31009 1 0 20:49 ? 00:00:00 …/src/redis-server *:7002 [cluster]
root 31011 1 0 20:49 ? 00:00:00 …/src/redis-server *:7003 [cluster]
root 31016 1 0 20:49 ? 00:00:00 …/src/redis-server *:7004 [cluster]
root 31018 1 0 20:49 ? 00:00:00 …/src/redis-server *:7005 [cluster]

登录集群

./redis-cli -c -p 7000 -a password

查看集群信息

cluster nodes

配置阿里云安全组

在安全组中添加端口开放规则

关于公网集群

如果搭建的不是公网集群,java程序使用集群时,获取的节点信息是内网ip,导致外网无法访问

搭建公网集群时遇到的问题

  1. 程序ERR This isntance has cluster support disabled
    开启配置:
    cluster-enabled yes
  2. [ERR] Node xxx:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
  • 删除每个节点的aof.rdb文件
  • 删除每个节点的节点文件
  • 删除之后连接每个集群节点执行命令
    • flushdb
    • cluster reset
  1. 创建集群命令时卡在Waiting for the cluster to join …
    解决:阿里云开启17000~17005 总线接口
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

future_1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值