之前连接redis都是不使用密码,开放所有端口,因此我的服务器遭到了三次黑客攻击,并且因为买的服务器比较便宜,因此安全防护等级也很低。每次被攻击我都只能重装系统,损耗了大量的时间。因此我要设置密码加强redis的防护等级。
第一种临时(不推荐):
1、连接redis
redis-cli
2、设置密码
config set requirepass abcdefg
requirepass后面的abcdefg就表示密码,大家可以按自己的需求进行设置。系统提示ok就表示设置成功了,但是这种设置在redis关机后就失效了需要重写设置,因此不推荐这种方法。
第二种永久(推荐):
1、找到redis.config文件,并修改第902行的文件在红框的位置写下自己的密码。
2、重启redis
3、退出后进行登录
第二步远程连接:
1、java代码连接
在yml内配置文件即可
2、桌面端连接
redis是默认没有用户名的因此不要写用户名,不然会连不上。
这里我们会在两台服务器中开启6个redis实例,搭建分片集群,信息如下:
IP | PORT | 角色 |
---|---|---|
120.48.46.170 | 7001 | master |
120.48.46.170 | 7002 | master |
120.48.46.170 | 7003 | master |
120.48.46.171 | 8001 | slave |
120.48.46.171 | 8002 | slave |
120.48.46.171 | 8003 | slave |
在两台服务器分别开启对应的客户端端口与集群总线端口。一般我们使用应用软件只需要开启客户端端口就行了,但是redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口集群总线端口为redis客户端连接的端口 + 10000。一次我们一共要开启12个端口。不开放集群总线端口的话 redis会一直提示Waiting for the cluster to join…,并且无法连接。
开启客户端端口:
firewall-cmd --zone=public --add-port=7001/tcp --permanen
开启集群总线端口
firewall-cmd --zone=public --add-port=17001/tcp --permanen
重启防火墙
firewall-cmd --reload
查看开放端口
firewall-cmd --zone=public --list-ports
在ip为120.48.46.170的服务器的/opt/soft/redis文件夹下创建创建出7001、7002、7003目录:
# 进入/opt/soft/redis目录
cd /opt/soft/redis
# 创建目录
mkdir 7001 7002 7003
在ip为120.48.46.170的服务器的/opt/soft/redis文件夹下创建创建出8001、8002、8003目录:
# 进入/opt/soft/redis目录
cd /opt/soft/redis
# 创建目录
mkdir 8001 8002 8003
分别在两个服务器中在/opt/soft/redis下准备一个新的redis.conf文件,内容如下:
port 7001
# 开启集群功能
cluster-enabled yes
# 集群的配置文件名称,不需要我们创建,由redis自己维护,但是文件夹要我们自己创建
cluster-config-file /opt/soft/redis/CusterFile/7001/nodes.conf
# 节点心跳失败的超时时间
cluster-node-timeout 5000
# 持久化文件存放目录,文件夹要我们自己创建
dir /opt/soft/redis/PersistentFile/7001
# 绑定地址
bind 0.0.0.0
# 让redis后台运行
daemonize yes
# 注册的实例ip
replica-announce-ip 120.48.46.170
# 保护模式
protected-mode no
# 数据库数量
databases 1
# 日志,文件夹要我们自己创建
logfile /opt/soft/redis/log/7001/run.log
#设置密码
requirepass mima
#设置集群间的访问密码
masterauth mima
# 云服务器上部署需指定公网ip
cluster-announce-ip 120.48.46.170
# Redis总线端口,用于与其它节点通信
cluster-announce-bus-port 17001
注:cluster-announce-ip 120.48.46.170,cluster-announce-bus-port 17001这两个ip不进行设置会导致redis无法映射到公网上会提示如下报错信息:
i.l.c.c.t.DefaultClusterTopologyRefresh : Unable to connect to [192.168.0.4:
分别在两个服务器中将这个文件拷贝到每个目录下:
# 进入/opt/soft/redis目录
cd /opt/soft/redis
# 执行拷贝
echo 7001 7002 7003 | xargs -t -n 1 cp redis.conf
# 进入/opt/soft/redis目录
cd /opt/soft/redis
# 执行拷贝
echo 8001 8002 8003 | xargs -t -n 1 cp redis.conf
分别在两个服务器中修改每个目录下的redis.conf,将其中的6379修改为与所在目录一致:
# 进入/opt/soft/redis目录
cd /opt/soft/redis
# 修改配置文件
printf '%s\n' 7001 7002 7003| xargs -I{} -t sed -i 's/6379/{}/g' {}/redis.conf
# 进入/opt/soft/redis目录
cd /opt/soft/redis
# 修改配置文件
printf '%s\n' 8001 8002 8003| xargs -I{} -t sed -i 's/6379/{}/g' {}/redis.conf
输入以下指令即可。注意-a 后面接的是redis的密码,如果不输入密码,系统会一直提示[ERR] Node 120.48.46.170:7001 NOAUTH Authentication required.并且无法开启redis
redis-cli --cluster create 120.48.46.170:7001 120.48.46.170:7002 120.48.46.170:7003
120.48.46.171:8001 120.48.46.171:8002 120.48.46.171:8003 --cluster-replicas 1 -a
mima
执行后,系统提示如下,输入"yes"确认即可。
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
# 6390做为6379的从机
Adding replica 192.168.10.102:6390 to 192.168.10.102:6379
# 6391做为6380的从机
Adding replica 192.168.10.102:6391 to 192.168.10.102:6380
# 6389做为6381的从机
Adding replica 192.168.10.102:6389 to 192.168.10.102:6381
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 0e5eb18533395661e35ac4ebd5298f364e50ad04 192.168.10.102:6379
slots:[0-5460] (5461 slots) master
M: 9eda6134015f3b415df60e813613a7cf14cdd2df 192.168.10.102:6380
slots:[5461-10922] (5462 slots) master
M: 505b4fd96d38c68befe839257622cdcec1af35ca 192.168.10.102:6381
slots:[10923-16383] (5461 slots) master
S: 7d919f337875f7bafcddd3c79a8ae1510202d39d 192.168.10.102:6389
replicates 505b4fd96d38c68befe839257622cdcec1af35ca
S: b30918baa72b2aa7e564115e738f21145234b84c 192.168.10.102:6390
replicates 0e5eb18533395661e35ac4ebd5298f364e50ad04
S: a6f714fa624e02a72374f235d5562fc022b143e2 192.168.10.102:6391
replicates 9eda6134015f3b415df60e813613a7cf14cdd2df
Can I set the above configuration? (type 'yes' to accept):
出现如下提示即表示创建成功。
连接命令:
redis-cli -c -p 7001 #这里输入节点的端口号
输入密码:
auth 密码
以集群的方式登录集群可以看到该集群下的所有键。
但是你以单点的方式进行登录,你就会发现你只能得到给主节点下的所有键而不能拿到其它节点下的键。
参考文章:
redis集群Waiting for the cluster to join一直在等待_mob604756f33d49的技术博客_51CTO博客
配置redis集群时一直是Waiting for the cluster to join....._最佳听众!的博客-CSDN博客_redis集群 wait
云服务器Redis集群部署及客户端通过公网IP连接问题_凌波漫步&的博客-CSDN博客_redis集群对外提供统一ip
Redis集群的关闭与重启_郝少的博客-CSDN博客_redis关闭集群