十年架构设计总结!阿里华为等大厂都这么做容器调度和服务编排

简介: 十年架构设计总结!阿里华为等大厂都这么做容器调度和服务编排
  • 镜像仓库
    解决Docker镜像存储和访问
  • 资源调度
    决定Docker镜像可分发到哪些机器


这些解决后,就该考虑如何在集群中创建容器,即容器调度

容器创建后如何运作才能对外提供服务,即容器调度

1 容器调度

当服务需要发布的时候,该选择哪些机器部署容器。

若集群机器规模上百台,要发布的服务上百个,就不能靠人肉运维,需要有专门容器调度系统,所以很多基于Docker的容器调度系统,比如Swarm、Mesos。Kubernetes

它们能解决哪些问题呢?

主机过滤

解决容器创建时什么样的机器可以使用:

  • 存活过滤
    必须选择存活的节点,因为主机也有可能下线、故障态。
  • 硬件过滤
    比如Web集群往往用作计算节点,它的CPU一般配置比较高
    大数据集群往往用作数据存储,它的磁盘一般配置比较高


以上都是针对主机层次的过滤方式。

调度策略

为解决容器创建时选择哪些主机最合适,一般通过给主机打分。

比如Swarm包含两种类似策略:spread和binpack,都会根据每台主机的可用CPU、内存以及正在运行的容器的数量来给每台主机打分:

  • spread策略
    会选择一个资源使用最少的节点,以使容器尽可能的分布在不同的主机上运行。好处:可以使每台主机的负载都比较平均,而且如果有一台主机有故障,受影响的容器也最少
  • binpack策略
    正好相反,会选择一个资源使用最多的节点,好让容器尽可能的运行在少数机器上,节省资源的同时也避免了主机使用资源的碎片化

适用场景

各主机配置基本相同,使用也较简单,一台主机上只创建一个容器。每次创建容器时,直接从尚未创建过容器的主机中,随机选择一台

某些在线、离线业务混布场景,为达到主机资源使用率最高,需综合考量容器中的任务特点:

  • 在线业务主要使用CPU
  • 离线业务主要使用磁盘和I/O


这两种业务的容器大部分情况下适合混跑在一起

还有一种业务场景,主机资源都充足,每个容器只要划定所用资源限制,理论上跑在一起是没问题。但有时会出现对每个资源的抢占,比如都是CPU密集型或者I/O密集型的业务就不适合容器混布一台主机。

2 服务编排

服务依赖

若服务A调度的前提是先有服务B,容器调度时,就要考虑服务间这种依赖关系。

所以Docker提供Docker Compose。允许用户通过一个单独的docker-compose.yaml定义一组相互关联的容器组成一个项目,以项目形式管理应用。

比如要实现一个Web项目,要创建:

  • Web容器比如Tomcat容器
  • 数据库容器比如MySQL容器
  • 负载均衡容器比如Nginx容器等

就可以通过docker-compose.yaml配置这个Web项目里包含的三个容器的创建。

服务发现

容器调度完成后,就可以启动了。但此时容器还不能对外服务,服务消费者并不知道这个新的节点,必须具备服务发现机制,使得新容器节点能够加入到线上服务。

常用的服务发现机制:

基于Nginx的服务发现

针对提供HTTP服务的。

当有新容器节点时,修改Nginx的节点list配置,然后利用Nginx的reload,重新读取配置,加载新节点。

基于注册中心的服务发现

针对提供RPC服务的。


当有新的容器节点时,需要调用注册中心提供的服务注册接口。使用这种方式时,如果服务部署在多个IDC,就要求容器节点分IDC进行注册,以便实现同IDC内就近访问。以微博的业务为例,微博服务除了部署在内部的两个IDC,还在阿里云上也有部署,这样的话,内部机房上创建的容器节点就应该加入到内部IDC分组,而云上的节点应该加入到阿里云的IDC。

弹性扩容

大部分互联网业务的访问呈现出访问时间的规律性。在高峰期,增加容器的数量,确保服务稳定性;低峰期减少容器数量,减少服务使用的资源成本。可以根据容器的CPU负载,设置一个扩缩容的容器数量或比例。比如可以设定容器的CPU使用率不超过50%,一旦超过这个使用率就扩一倍节点。

目录
相关文章
|
10月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
486 146
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
709 59
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
867 11
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
752 82
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
818 78
|
机器学习/深度学习 计算机视觉
Make U-Nets Great Again!北大&华为提出扩散架构U-DiT,六分之一算力即可超越DiT
北京大学和华为研究人员提出U-shaped Diffusion Transformers(U-DiTs),重新审视U-Net架构在扩散模型中的潜力。通过引入Token Downsampling方法,U-DiTs在ImageNet 256x256和512x512生成任务中显著提升性能并降低计算成本。实验表明,U-DiT模型不仅超越了DiT模型的性能,在计算效率上也更具优势。论文地址:https://arxiv.org/pdf/2405.02730
554 43
|
Kubernetes 安全 数据安全/隐私保护
容器云服务是什么?
容器云基于容器技术,实现应用及其依赖的标准化封装,支持跨平台快速部署和高效管理。与传统虚拟机相比,容器共享宿主机操作系统内核,资源占用少、启动快,但隔离性稍弱。Docker Engine通过Dockerfile定义应用环境并生成容器镜像,适合单机场景;Kubernetes作为行业标准编排工具,支持自动扩缩容和服务发现,适用于大规模集群管理;OpenShift提供企业级全流程平台,满足合规要求;Rancher简化多云环境下的Kubernetes管理;CoreOS Tectonic专注于安全性,适用于高安全需求领域。容器云正朝着无服务器化、智能运维和边缘协同等方向发展。
1096 1
|
人工智能 监控 安全
容器化AI模型的安全防护:构建可信的AI服务
在AI模型广泛应用的背景下,容器化AI模型的安全防护至关重要。主要安全威胁包括数据窃取、模型窃取、对抗样本攻击和模型后门攻击等。为应对这些威胁,需采取多层次防护措施:容器安全(如使用可信镜像、限制权限)、模型安全(如加密、水印)、数据安全(如加密、脱敏)和推理安全(如输入验证、异常检测)。此外,利用开源工具如Anchore Engine、Falco和ART等,可进一步加强防护。遵循安全开发生命周期、最小权限原则和深度防御等最佳实践,确保AI服务的安全性和可信度。
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
1054 24