自愈机制
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
-
Swarm
管理节点会持续监控每个容器的状态。当发现某个容器退出或失败时,Swarm
会将其标记为不健康。 -
一旦
Swarm
发现某个容器不健康,它会自动在集群中的其他节点上重新创建一个新的容器,以满足服务的副本数量要求。
2.5 模拟容器失败
找到其中一个容器的 ID
,然后手动停止该容器
docker container ls
docker stop [容器ID/名称]
2.6 查看容器服务
docker service ls
docker service ps [容器服务ID/名称]
再次查看服务状态,Swarm
会自动重新创建一个新的容器来替代已停止的容器