【发布时间】:2019-07-30 17:37:56
【问题描述】:
我正在尝试在 docker swarm 环境中部署 couchbase 社区版。我按照by Arun Gupta 建议的步骤进行操作,但我不确定是否需要主从模型,因为 Couchbase 没有主/从模型的概念。
以下是我遇到的问题。我想知道是否有人能够在集群模式下成功运行 Couchbase。
Docker swarm 每次重启服务时都会分配不同的 IP 地址。有时,docker 将服务移动到一个新节点,该节点再次分配不同的 IP 地址。如果它找到一个新的 IP 地址,它会出现 that Couchbase doesn't start。 (日志显示
"address on which the service is configured is not up. Waiting for the interface to be brought up")。我使用主机挂载的卷作为数据文件夹 (/opt/couchase/var) 以在重新启动时保留数据。我尝试读取内部使用的覆盖网络地址,并在容器内的
run脚本中更新ip和ip_start文件。这也无济于事。服务器作为一个新实例出现而不加载旧数据。这是一个真正的问题,因为如果docker swarm移动服务,生产数据可能会丢失。-
docker swarm's内部路由器除了分配其他接口外,还从覆盖网络分配地址。我尝试使用localhost、master.overlaynet、overlaynet 的 IP 地址、docker 分配给容器的私有地址等作为 Couchbase 集群配置中的服务器地址。虽然集群服务器能够相互通信,但这会产生客户端连接的另一个问题。客户端通常连接到 swarm 集群公开的地址/端口。这与集群节点地址不同。如果是 python 客户端,它会读取 Couchbase 集群服务器地址并尝试连接到该地址,如果在加入集群时将覆盖地址作为服务器地址给出。由于地址不可访问,客户端超时。 - 我或许可以在
yaml文件中添加网络地址约束,以确保主节点提供相同的地址。例如。
networks:
default:
ipv4_address: 172.20.x.xx
- 上述方法可能不适用于工作节点,因为这会影响根据负载/增长扩展工作节点的能力。
- 在这个模型(master/worker)中,如果master节点宕机,worker如何被选为leader? master/worker 是集群环境中 Couchbase 集群的正确方法吗?
如果我能获得一些关于 Couchbase swarm 模式设置的参考资料或关于如何处理 IP 地址更改的一些建议,那将会很有帮助。
【问题讨论】:
标签: docker couchbase docker-swarm docker-swarm-mode