docker服务失败0/1,以及启动/关闭的流程

  • nebula 版本:v1
  • 部署方式(分布式 / 单机 / Docker / DBaaS):分布式 docker
  • 问题的具体描述:

一个graphd服务挂了docker service ps inspect后:

背景:三节点小集群,服务器每晚都会关机

1)当出现有部分service启动失败时,在部署阶段我会直接删除stack,重新deploy。但是在已经有数据的情况下,我这样做会出现什么潜在风险吗?常规的恢复操作应该是个什么流程呢?我尝试了docker create (通过graphd image)和docker service create,但是在studio上无法链接。有没有可以恢复多个container中某一个或者几个的方式,而不是全部重新启动呢?

2)由于服务器每晚都会关机,我需不需要先停掉container在关机呢还是可以直接关机?这个问题同求推荐操作流程。

  1. 你是用分布式 docker 部署,请问是使用 docker swarm 部署的吗?如果是,为什么在截图中又用 docker-compose 去管理所有的容器?

  2. 每晚都会关机?是说集群中的三个结点每晚都会全部关机吗?如果是用 docker swarm 的话,建议关机之前执行 stop 整个 docker stack,等所有的 service 下线之后再关闭所有的结点。

  3. studio 无法连上,nebula graphd 的 service 有没有将相应的端口暴露出来?studio 是怎么部署的?也是使用 docker swarm ?

1.是docker swarm部署的,docker-compose是我停掉studio。中间的docker-compse restart是我打错了我本来想执行docker container restart.

2.三个节点会全部关机。

  1. studio是单独部署的(和master在同一台服务器上),clone github上的nebula-web-docker-master,用docker-compose 启动

使用 docker swarm 部署的话,如果只是 graphd 的 service down 掉,影响不是很大,因为 graphd 是无状态的,可以把 graphd 的启动策略设置成总是重启就行。如果是 storage 和 meta 服务的话是有状态的,在集群里最好是本地重启,不要做迁移的操作,除非挂载的数据盘用的是云盘。

studio 的部署的访问问题,你可以修改一下 docker-compose.yaml 文件,把其中的 network 类型改成 external,名字设置成你的 docker swarm 部署 nebula 的 network,如此应该就不会有访问不通的问题。

这个是在graphd容器内更改etc/目录下的config文件吗?

本地重启指的是在状态为0/1的服务的那台服务器上 restart container吗?

graphd 重启不需要改配置项,只要你用 docker 去 restart 对应的 service 就好了

如果用 swarm 的话,最好在 master 上用 docker service 的命令启动把,你可以在部署的时候将 storage 或者 meta 能运行的结点限定好,参看我们的配置中的 docker-stack.yml

emmmm 我查了一下 docker service 没有restart这个command,docker stack也没有stop
请问stop/restart这些操作都是针对container的吗?
通过在所有服务器上 stop 所有container来达到stop stack的效果吗?

建议你还是熟悉一下 docker 相关的操作文档,或者 Google 一下如果 restart docker service,不一定是对应有 restart 命令,你可以看看 scale 命令。但这些问题不属于 nebula 的范畴。

1 个赞

好的好的