容器服务节点重启操作最佳实践

直接重启节点可能会导致集群出现异常。比如,对于 Swarm Mode 集群内的 Manager 节点,如果 Manager 健康节点数小于 2,则可能会导致集群无法自愈,最终导致集群不可用。本文结合阿里云历史案例经验,说明了在对容器服务进行主动运维等场景下,需要重启节点时的操作最佳实践。

检查业务高可用配置

在重启容器服务节点前,建议先检查或修正如下业务配置,以避免节点重启触发单点异常,进而导致业务可用性受损:
1. 配置数据持久化策略
建议为日志、业务配置等重要数据配置外部卷进行数据持久化,以避免容器重建后,原有容器被删除引发数据丢失。 关于容器服务数据卷的使用,可以参阅 产品文档。
2. 配置重启策略
建议为相应业务服务配置 restart: always 自重启策略,以便节点重启后,相应容器能自动拉起。
3. 配置高可用策略
建议结合产品架构,为相应业务配置 可用区调度(availability:az 属性)、指定节点调度(affinity、constraint 属性) 和 指定多节点调度(constraint 属性) 等亲和性、互斥性策略,以避免由于相应节点重启引发单点异常。比如,对于数据库业务,建议主备或多实例部署,然后结合前述特性,确保不同实例落在不同节点上,并且相关节点不会同时重启。

操作最佳实践

建议首先参阅前述说明,检查业务高可用性配置。然后 在每个节点上(切忌同时对多个节点进行操作),依次按如下步骤操作:
1. 快照备份
建议先对节点所有关联磁盘创建最新快照进行备份,以避免由于长时间未重启服务器,导致节点关机后启动过程中出现异常导致业务可用性受损。
2. 验证业务容器配置有效性(Swarm Mode 集群忽略):
对于非 Swarm Mode 集群,重启节点上的相应业务容器,确保容器能正常被重新拉起。

说明
Swarm Mode 集群的最小控制操作单元是服务。所以,不能直接在 Swarm Mode 集群节点上通过 docker start/stop 等操作直接处理业务容器,否则会引发相关报错。正确的做法,是在 容器服务管理控制台 通过重新调整应用的 REPLICAS 的方式来对业务做自动调整。
3. 修改节点角色(Swarm Mode 集群)
如果相应节点是 Swarm Mode 集群内的 Manager 节点,则先将其 设置为 Worker 节点。
4. 验证 Docker Engine 运行有效性
尝试重启 docker daemon ,确保 docker enginger 能正常重新启动。
5. 执行相关运维操作
执行计划内的相关运维操作,比如业务代码更新、系统补丁安装、系统配置调整等。
6. 重启节点
在控制台或系统内部,正常重启节点。
7. 重启后状态检查
重启完节点后,到 容器服务管理控制台 ,检查节点健康状态,检查业务容器运行状态。
8. 回调节点角色(Swarm Mode 集群)
如果相应节点是 Swarm Mode 集群内的 Manager 节点,则先将其重新 设置为 Manager 节点。

时间: 2024-10-28 21:35:48

容器服务节点重启操作最佳实践的相关文章

PostgreSQL、Greenplum DML合并操作 最佳实践

标签 PostgreSQL , Greenplum , 合并删除 , 合并更新 , 合并DML 背景 在很多场景中会涉及到数据的合并,比如 1. 某业务系统的总用户有1亿,每天的活跃用户有100万,新增用户10万,每天需要将新增.活跃用户的数据(比如他们的余额变化.等等)合并到数据仓库的用户信息表. 2. 物化视图,某个表被用户不断的增.删.改.需要将这个表(基表)的某些字段或者某部分数据提取到一个物化视图中.这个物化视图不需要对每一笔基表的DML都实施操作,比如对单条记录的操作,合并成一次操作

用OSGi应用程序开发和工作的最佳实践

简介 OSGi 模块性提供了标准机制来以 Java 应用程序应对共同挑战.在 2007 年 ,OSGi Alliance Enterprise Expert Group (EEG) 成立,以一个业务 Java 编 程模型的形式向业务应用程序开发人员引入 OSGi 基础设施.OSGi 应用程序和 IBM WebSphere Application Server 企业级服务质量共同为模块化 Web 应用程 序提供最完整和最健壮的业务服务器.您可以使用 WebSphere Application Se

在阿里云容器服务上创建一个使用Redis的Python应用

使用容器服务可以方便快速的创建应用,下面的例子展示如何在容器服务上创建一个使用Redis的Python应用,只需要简单的几步. 第一步:准备代码 由于只是一个例子,所以我不可能使用太复杂的应用代码. app.py from flask import Flask from redis import Redis app = Flask(__name__) redis = Redis(host='redis', port=6379) @app.route('/') def hello(): redis

艾伟_转载:【译】12个asp.net MVC最佳实践

       上一周我我在罗马进行了两场对于开发完成不久的http://www.dotnetromacesta.org/的Asp.net MVC的演讲.而其中一场演讲内容是关于我对于Asp.net MVC最佳实践的看法.因为这场演讲是在意大利进行的,为了大家能更好的阅读,我将演讲所用的ppt翻译成英文. 关于Controller的最佳实践 1-删除AccountController     让Demo代码在你的程序中是一个非常不好的做法.请永远不要使用AccountController. 2-隔

Docker在云平台上的最佳实践: 当容器服务遇到深度学习

12月9日云栖计算之旅线下沙龙第2期<Docker在云平台上的最佳实践>,阿里云技术专家必嘫给大家带来了"当容器服务遇到了深度学习"的演讲.本文主要从深度学习的兴起开始谈起,进而介绍了Docker技术.阿里云容器服务,重点介绍了支持云上的高性能计算应用需要哪些,包括GPU的调度.隔离和监控. 视频回顾 深度学习 人工智能已经进入了深度学习时代.传统的让机器自动化的方式已经不再适合解决一些问题,机器学习开始兴起,让机器像小孩子一样自己去认识世界.而深度学习本身是机器学习的一个

阿里云开源容器技术Cabernets在阿里云上的最佳实践

摘要:本文的整理自2017云栖大会-成都峰会上阿里云资深研发工程师谢瑶瑶(初扬)的分享讲义,讲义主要介绍了阿里云上一键部署Kubernetes的相关内容.阿里云上一键部署高可用Kubernetes集群,支持集群弹性伸缩,高度隔离的资源,丰富的安全组策略让您构建高度安全可靠的应用. 在2017云栖大会-成都峰会上,阿里云资深研发工程师谢瑶瑶(初扬)做了关于Cabernets在阿里云上的最佳实践的分享.Kubernetes拥有开源的容器编排系统,自动化部署,管理,扩展容器化的应用,支持on-prem

40+篇服务器操作及运维基础知识!实用基础、最佳实践、服务器安全…快来!

这是一篇纯干货分享帖,不谈个人经验,只搬运牛人的技术"经验". ECS是阿里云非常重要的一款云服务产品,大多数人的云端之旅也是从ECS开始,以下知识将从浅入深,从图文到视频,再到最佳实践,相信看过这些内容之后,您就可以飞升成为云计算达人啦. 第一部分:实用知识贴 1.如何选择阿里云云服务器ECS操作系统 2.ECS控制台使用小贴士 3.使用TAG标签对云服务器ECS的分组和管理 4.如何用阿里云服务器建立一个wordpress网站 5.阿里云ECS如何部署并运行一个JavaWeb项目

微服务最佳实践 【已翻译100%】

在我还不知道什么叫微服务架构的时候我就使用过它.以前,我写了一些管道程序(pipeline application),它由一些相互和队列交互的模块构成.自那之后,一批ThoughtWorks的专家也讨论过微服务.Fred George[1],接着是James Lewis[2]还有 Martin Fowler[3] 都写博文讨论微服务,使得微服务变成了下一个时髦术语,现在每个公司都想使用一些微服务. 现在有一些关于它的标签:endorsements,likes,trainings,甚至two da

8 个构建容器应用的最佳实践

容器是未来在共有云和私有云进行应用开发的主要趋势,但是容器到底是什么,为什么它们成为了一种广受欢迎的部署机制,而且你需要怎样来修改你的应用来为容器化的环境优化它? 什么是容器? 容器技术的历史始于 2000 年的 SELinux 和 2005 年的 Solaris zones.今天,容器是由包括 SELinux.Linux 命名空间和控制组(cgroup)等几项内核特性构成,提供了用户进程.网络空间和文件系统空间的隔离. 为什么它们如此流行? 最近容器技术大规模的应用在很大程度上是由于旨在使容器