跳到主要内容

自愈机制

2024年07月23日
柏拉文
越努力,越幸运

一、认识


Docker Swarm 中,如果某个容器失败并退出,Swarm 会自动重新创建一个新的容器,以确保服务的期望状态与实际状态一致。这个过程称为自愈(self-healing)。Swarm 的这种自愈机制可以保证服务的高可用性和稳定性。

二、模拟


2.1 初始化集群

选择一个主机作为管理节点(manager),初始化 Swarm 集群。

docker swarm init 

或者在其他主机上作为工作节点(worker)加入集群。

docker swarm join --token <token> <manager-ip>:<manager-port>

2.2 部署容器服务

docker service create --name my_service -p 80:80 my_image

2.3 查看容器服务

通过 docker service ls 获取 容器服务ID/名称

docker service ls 


docker service ps [容器服务ID/名称]

2.4 扩展容器服务

创建一个具有 3 个副本的服务

docker service scale [容器ID/名称]=3

// 或者

docker service update [容器ID/名称] --replicas 3
  1. Swarm 管理节点会持续监控每个容器的状态。当发现某个容器退出或失败时,Swarm 会将其标记为不健康。

  2. 一旦 Swarm 发现某个容器不健康,它会自动在集群中的其他节点上重新创建一个新的容器,以满足服务的副本数量要求。

2.5 模拟容器失败

找到其中一个容器的 ID,然后手动停止该容器

docker container ls 

docker stop [容器ID/名称]

2.6 查看容器服务

docker service ls 

docker service ps [容器服务ID/名称]

再次查看服务状态,Swarm 会自动重新创建一个新的容器来替代已停止的容器