gpt4 book ai didi

docker - 如何在Docker集群上运行Redis集群?

转载 作者:行者123 更新时间:2023-12-02 19:35:01 25 4
gpt4 key购买 nike

上下文

我正在尝试设置redis集群,使其在docker集群之上运行,以实现最大程度的自动修复。

更确切地说,我有一个docker compose文件,该文件定义了具有3个副本的服务。每个服务副本都有一个运行中的redis服务器。
然后,每个副本中都有一个程序,该程序侦听docker集群上的更改,并在满足条件时启动集群(每个3个redis服务器彼此了解)。

期望设置Redis集群的工作,集群已经形成,并且所有Redis服务器之间的通信都很好,但是Redis服务器之间的通信是在Docker集群内部。

问题

当我尝试从docker集群外部进行通信时,由于进入模式,我能够与redis服务器通信,但是当我尝试添加信息(例如:set foo bar)并且客户端移至另一个redis-服务器通讯中断并最终超时。

代码

这是docker-compose文件。

version: "3.3"
services:
redis-cluster:
image: redis-srv-instance
volumes:
- /var/run/:/var/run
deploy:
mode: replicated
#endpoint_mode: dnsrr
replicas: 3
resources:
limits:
cpus: '0.5'
memory: 512M
ports:
- target: 6379
published: 30000
protocol: tcp
mode: ingress

显示问题的命令流。

客户
~ ./redis-cli -c -p 30000
127.0.0.1:30000>

Redis服务器
OK
1506533095.032738 [0 10.255.0.2:59700] "COMMAND"
1506533098.335858 [0 10.255.0.2:59700] "info"

客户
127.0.0.1:30000> set ghb fki
OK

Redis服务器
1506533566.481334 [0 10.255.0.2:59718] "COMMAND"
1506533571.315238 [0 10.255.0.2:59718] "set" "ghb" "fki"

客户
127.0.0.1:30000> set rte fgh
-> Redirected to slot [3830] located at 10.0.0.3:6379
Could not connect to Redis at 10.0.0.3:6379: Operation timed out
Could not connect to Redis at 10.0.0.3:6379: Operation timed out
(150.31s)
not connected>

有任何想法吗?我也尝试过制作一个代理/负载均衡器,但是没有用。

谢谢!祝你今天愉快。

最佳答案

对于此用例,sentinel可能会有所帮助。 Redis本身不能提供高可用性。另一端的Sentinel是分布式系统,可以为您执行以下操作:

  • 将入口流量路由到当前的Redis主服务器。
  • 如果当前的Redis主机失败,则选择一个新的Redis主机。

  • 虽然我以前已经对此主题进行过研究,但我还没有设法获得一个可行的示例。

    关于docker - 如何在Docker集群上运行Redis集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46454117/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com