我想protected-mode
在我的生产 Redis上禁用。关于我从我的另一个 Redis-Sentinel 实例中得到的以下错误,我可以通过从它运行的主计算机连接到 Redis 来实时禁用它。
DENIED Redis 在保护模式下运行,因为已启用保护模式,未指定绑定地址,未向客户端请求身份验证密码。在此模式下,仅接受来自环回接口的连接。如果您想从外部计算机连接到 Redis,您可以采用以下解决方案之一:
1)只需禁用保护模式,通过从运行服务器的同一主机连接到Redis,从环回接口发送命令'CONFIG SET protected-mode no',但是如果这样做,请确保Redis不能从互联网公开访问。使用 CONFIG REWRITE 使此更改永久化。
2) 或者,您可以通过编辑 Redis 配置文件并将保护模式选项设置为“no”,然后重新启动服务器来禁用保护模式。
3) 如果您手动启动服务器只是为了测试,请使用“--protected-mode no”选项重新启动它。
4) 设置绑定地址或认证密码。
注意:您只需要执行上述操作之一,服务器就可以开始接受来自外部的连接。
但是当我连接并尝试禁用它时,我收到了 Error (error) ERR Unsupported CONFIG parameter: protected-mode
。
没有配置身份验证或其他任何东西 - 所有安全性都由防火墙规则管理。在redis.conf
几乎是默认的。
root@svim-redis03 /etc/redis # redis-cli
127.0.0.1:6379> CONFIG GET protected*
(empty list or set)
127.0.0.1:6379> CONFIG GET bind*
1) "bind"
2) "127.0.0.1"
127.0.0.1:6379> CONFIG SET protected-mode no
(error) ERR Unsupported CONFIG parameter: protected-mode
127.0.0.1:6379> exit
root@svim-redis03 /etc/redis # …
Run Code Online (Sandbox Code Playgroud) 我正在尝试跨 3 个节点设置 Redis/Sentinel 设置,每个节点都运行一个 redis 实例和一个哨兵实例。然而,当主机宕机时,剩下的哨兵只是坐在那里什么都不做,然后决定将每个从机设置为自己的从机,这当然接近于可能的更坏的行动方案。
有关设置的详细信息如下:
节点是10.66.5.3
, 10.66.5.4
, 10.66.5.5
。
默认情况下,.3
节点是主节点(在安装时),所有其他节点在/etc/redis/redis.conf
文件中都有相应的条目:slaveof 10.66.5.3 6379
. 其余部分redis.conf
未修改。
哨兵的起始配置如下:
daemonize no
sentinel monitor myapp 10.66.5.3 6379 2
sentinel down-after-milliseconds myapp 5000
sentinel failover-timeout myapp 15000
sentinel parallel-syncs myapp 1
Run Code Online (Sandbox Code Playgroud)
注意:我让upstart
处理服务,这就是守护进程标志关闭的原因。配置文件可由它们各自的守护进程写入,因此哨兵可以(并且确实)更新其配置文件,例如,没问题。
只要所有节点都活着,设置就可以正常工作。在 master 上注册一些东西会传播到 slave 等等。
现在,当我当时选择关闭 ( shutdown -h now
) Redis master 并留出一些时间让 quorum 发生时,产生的情况是:
.4
被设置为他的 IP 地址的从属 ( 10.66.5.4
).5
被设置为从属127.0.1.1
哨兵正在做很多来回的尝试来选择东西,但在其中一个坏掉后显然无法彼此正确沟通。他们还不断发现自己情绪低落和其他荒谬的事情。 …