在Docker Swarm模式(1.12+)中,可以创建所谓的“全局”服务,例如:
docker service create \
--name redis_2 \
--mode global \
redis:3.0.6
全局服务在每个节点上都处于活动状态。
当我向Swarm添加新节点以及当Swarm有一些待创建的服务要创建时,创建服务的顺序是什么?
Swarm 保证全局服务是首先(直到其运行状况检查通过),并且只有在Swarm创建待处理的复制服务之后?
答案 0 :(得分:0)
不,没有保证服务启动的顺序。最佳做法是将您的应用程序/服务设计为能够抵御其他服务的故障。请记住,在应用程序的生命周期中(服务更新,网络暂时不可用,节点甚至数据中心可能会崩溃),服务可能会随时中断。
如果服务依赖于其他服务,您可以(例如)实现重试循环;一个简单的例子可以在官方的WordPress图像中找到,它有一个重试循环来检查数据库服务器是否可用,并接受连接; https://github.com/docker-library/wordpress/blob/637afb53dc03b4af19149a0880e796346f97c137/php5.6/apache/docker-entrypoint.sh#L170-L181