我有 2 个 sentinel 和 2 个 redis 服务器。我想使用 redis 服务器的主机名配置 sentinel。目前,我在 hosts 文件中像这样定义每个主机名。
10.22.20.156 clsupport1
10.22.20.157 clsupport2
我尝试像这样配置哨兵。
daemonize yes
pidfile "/var/run/redis_sentinel_26379.pid"
loglevel notice
logfile "/var/log/redis_sentinel_26379.log"
port 26379
dir "/tmp"
sentinel monitor redis-prod clsupport2 6379 1
sentinel config-epoch redis-prod 3
sentinel leader-epoch redis-prod 4
sentinel known-slave redis-prod clsupport1 6379
在我启动哨兵后,它会自动用 IP 地址替换主机名。重启后。
daemonize yes
pidfile "/var/run/redis_sentinel_26379.pid"
loglevel notice
logfile "/var/log/redis_sentinel_26379.log"
port 26379
dir "/tmp"
sentinel monitor redis-prod 10.22.20.157 6379 1
sentinel config-epoch redis-prod 3
sentinel leader-epoch redis-prod 4
sentinel known-slave redis-prod 10.22.20.156 6379
# Generated by CONFIG REWRITE
...
但我想保留主机名。我该怎么做?
答案1
Redis Sentinel 需要动态重写其配置文件,重新创建monitor
命令。它没有规定在其生成的命令中插入主机名而不是 IP 地址。这也是为什么 Sentinel 文档在此位置明确规定了 IP 地址。
因此,您要求的功能在 Sentinel 的当前版本中无法实现。我建议您重新评估使用主机名进行配置的要求。
答案2
请在 IP 地址下方或上方进行评论。
redis-sentinel 旨在获取集群节点的地址,并在状态发生变化时更新 redis 配置。最好在注释中写下带有 ip 的主机名
答案3
也许您可以尝试将不可变标志设置为配置文件。
chattr +i configurationfile
具有“i”属性的文件无法修改:无法删除或重命名,无法创建指向此文件的链接,也无法向此文件写入任何数据。只有超级用户或拥有 CAP_LINUX_IMMUTABLE 功能的进程才能设置或清除此属性。
这样,您就可以写保护您的配置文件。