redis.conf中bind绑定IP不对,redis集群创建节点的时候,报错|redi群集密码设置

Posted 小舟868

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis.conf中bind绑定IP不对,redis集群创建节点的时候,报错|redi群集密码设置相关的知识,希望对你有一定的参考价值。

Redis 配置文件中bind参数

 

前言#

我们都知道,redis 的配置文件中,默认绑定接口是 127.0.0.1,也就是本地回环接口,所以是无法从外网连接 redis 服务的。如果想要让外网也能连接使用服务器上的 redis 服务,可以简单地注释掉 bind 这一行。但对于 bind 参数的作用,网上有很多文章的解释都是误人子弟的。

关于bind#

翻看网上的文章,此处多翻译为:

指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项。
这种解释会搞糊涂初学者,甚至是错误的。查看配置文件 redis.conf,可以看到很详细的注释说明。

Copy
# By default, if no "bind" configuration directive is specified, Redis listens
# for connections from all the network interfaces available on the server.
# It is possible to listen to just one or multiple selected interfaces using
# the "bind" configuration directive, followed by one or more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
# internet, binding to all the interfaces is dangerous and will expose the
# instance to everybody on the internet. So by default we uncomment the
# following bind directive, that will force Redis to listen only into
# the IPv4 lookback interface address (this means Redis will be able to
# accept connections only from clients running into the same computer it
# is running).
#
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

bind 127.0.0.1

请认真阅读上述英文注释, 下面是google翻译

默认情况下,如果未指定“ bind”配置指令,则Redis将侦听服务器上所有可用网络接口的连接。 可以使用“ bind”配置指令仅侦听一个或多个所选接口,然后侦听一个或多个IP地址。
如果运行Redis的计算机直接暴露于Internet,则绑定到所有接口都是很危险的,并且会将实例暴露给Internet上的所有人。 因此,默认情况下,我们取消注释以下bind指令,这将强制Redis仅侦听IPv4回顾接口地址(这意味着Redis将只能接受来自运行在同一台计算机上的客户端的连接)。
如果您确定要立即侦听所有接口,请仅注意以下内容。
bind 127.0.0.1

正确做法#

redis部署在本机#

执行ifconfig中获取到本机ip (或者hostname -I)

redis.conf配置为bind 127.0.0.1 本机ip

redis部署在docker中#

进入redis所在的docker容器

执行ifconfig中获取到本机ip (或者hostname -I)

redis.conf配置为bind 127.0.0.1 本机ip

参考文章:https://www.cnblogs.com/Draymonder/p/11938114.html

redis集群设置密码

redis集群密码设置

1、密码设置(推荐)
方式一:修改所有Redis集群中的redis.conf文件加入: 

masterauth passwd123 
requirepass passwd123 

说明:这种方式需要重新启动各节点

方式二:进入各个实例进行设置:

./redis-cli -c -p 7000 
config set masterauth passwd123 
config set requirepass passwd123 
config rewrite 

之后分别使用./redis-cli -c -p 7001,./redis-cli -c -p 7002…..命令给各节点设置上密码。

注意:各个节点密码都必须一致,否则Redirected就会失败, 推荐这种方式,这种方式会把密码写入到redis.conf里面去,且不用重启。

用方式二修改密码,./redis-trib.rb check 10.104.111.174:6379执行时可能会报[ERR] Sorry, can\'t connect to node 10.104.111.174:6379,因为6379的redis.conf没找到密码配置。

2、设置密码之后如果需要使用redis-trib.rb的各种命令 
如:./redis-trib.rb check 127.0.0.1:7000,则会报错ERR] Sorry, can’t connect to node 127.0.0.1:7000 
解决办法:vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb,然后修改passord

复制代码
复制代码
class Client
    DEFAULTS = {
      :url => lambda { ENV["REDIS_URL"] },
      :scheme => "redis",
      :host => "127.0.0.1",
      :port => 6379,
      :path => nil,
      :timeout => 5.0,
      :password => "passwd123",
      :db => 0,
      :driver => nil,
      :id => nil,
      :tcp_keepalive => 0,
      :reconnect_attempts => 1,
      :inherit_socket => false
    }
复制代码
复制代码

注意:client.rb路径可以通过find命令查找:find / -name \'client.rb\'

带密码访问集群

复制代码
./redis-cli -c -p 7000 -a passwd123



在springboot项目中还需要设置application.properties中需要设置redisde的密码
spring.redis.password=xxxxx

以上是关于redis.conf中bind绑定IP不对,redis集群创建节点的时候,报错|redi群集密码设置的主要内容,如果未能解决你的问题,请参考以下文章

Redis.conf

记录一个redis.conf

Redis安全规范----check list

redis学习redis.conf文件配置

工具链接redis

redis.conf 配置