gpt4 book ai didi

docker - 在 docker swarm 环境中部署 couchbase

转载 作者:行者123 更新时间:2023-12-02 11:36:43 25 4
gpt4 key购买 nike

我正在尝试在 docker swarm 环境中部署 couchbase 社区版。我按照建议的步骤 by Arun Gupta 进行操作,尽管我不确定是否需要主从模型,因为 Couchbase 没有主/从模型的概念。

以下是我遇到的问题。我想知道是否有人能够在集群模式下成功运行 Couchbase。

  • 每次服务重启时,Docker swarm 都会分配不同的 IP 地址。有时,docker 将服务移动到新节点,该节点再次分配不同的 IP 地址。出现that Couchbase doesn't start如果发现新的 IP 地址。 (日志显示“配置服务的地址未启动。正在等待接口(interface)启动”)。我使用主机安装的卷作为数据文件夹 (/opt/couchase/var) 以在重新启动后保留数据。

  • 我尝试读取内部使用的覆盖网络地址,并更新容器内 run 脚本中的 ipip_start 文件。这也没有帮助。服务器作为新实例出现,而不加载旧数据。这是一个真正的问题,因为如果 docker swarm 移动服务,生产数据可能会丢失。

  • docker swarm 的内部路由器除了其他接口(interface)之外还从覆盖网络分配地址。我尝试使用 localhost、master.overlaynet、overlaynet 的 IP 地址、docker 分配给容器的私有(private)地址等作为 Couchbase 集群配置中的服务器地址。虽然集群服务器能够相互通信,但这给客户端连接带来了另一个问题。客户端通常连接到 swarm 集群公开的地址/端口。这与集群节点地址不同。对于 python 客户端,它会读取 Couchbase 集群服务器地址,并尝试连接到该地址(如果在加入集群时给出了覆盖地址作为服务器地址)。由于地址无法访问,客户端超时。
  • 我也许可以向 yaml 文件添加网络地址约束,以确保主节点提供相同的地址。例如。
    networks:
default:
ipv4_address: 172.20.x.xx
  • 上述方法可能不适用于工作节点,因为这会影响根据负载/增长扩展工作节点的能力。
  • 在此模型(主节点/工作节点)中,如果主节点发生故障,工作节点如何当选为领导者? master/worker 是 Swarm 环境中 Couchbase 集群的正确方法吗?

如果我可以获得一些有关 Couchbase 群模式设置的引用或一些有关如何处理 IP 地址更改的建议,将会很有帮助。

最佳答案

我们遇到了同样的问题(couchbase 服务器 5.1.1),我们的临时解决方案是在新的 docker 桥接网络上使用固定 IP。

networks:<br>
default:<br>
ipv4_address: 172.19.0.x

虽然这可行,但这不是一个好的解决方案,因为我们失去了上面提到的自动缩放功能。我们在设置过程中学到了一些东西。只是想让您知道:

  1. 您可以使用动态 IP 运行单节点 couchbase 设置。您可以停止/重新启动此容器并无限制地更新 couchbase-server 版本。

  2. 当您添加第二个节点时,它最初在设置过程中也可以使用动态 IP。您可以添加服务器并重新平衡集群。但是,当您停止/重新启动/缩放 0/1 couchbase 容器时,由于 docker 提供了新的 IP(默认网络为 10.0.0.x),它将不再启动。

  3. 更改“ip”或“ip_start”文件 (/opt/couchbase/var/lib/couchbase/config) 来更新 IP 不起作用。当更改“ip”和“ip_start”中的 ip 时,服务器作为"new"服务器启动,但它仍然拥有所有数据。因此,如果您现在需要,可以备份数据。所以即使你“切换”到固定IP后你也不能直接重新启动服务器,而是需要cbbackup和cbrestore。

  4. https://docs.couchbase.com/server/5.1/install/hostnames.html使用主机名的文档有点误导,因为这仅记录了如何在配置集群时“查找”新服务器。如果您指定主机名 couchbase 无论如何都会使用静态 IP 配置所有节点。

  5. 您可以使用主机网络启动 docker swarm 可能是一个解决方案,但我们在单个主机上运行其他容器的多个实例,因此我们希望避免该解决方案。

因此请始终保留节点/集群的备份。我们总是使用 cbbackup 进行文件备份和集群备份。因为从文件备份恢复要快得多。

https://github.com/couchbase/docker/issues/82 有讨论关于这个问题,但这涉及使用 AWS 获取静态 IP,但我们不这样做。

我知道 kubernetes 的 couchbase 自主运营商,但现在我们想继续使用 docker swarm。如果有人对此有更好的解决方案,如何配置 couchbase 使用主机名,请分享。

关于docker - 在 docker swarm 环境中部署 couchbase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277219/

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