容器云考虑多租户?

现在就是多租户不知道怎么来做,因为设计到租户,不光是存储,包括监控,日志等等,都要涉及。不知道现在对这种方案的支持。显示全部

现在就是多租户不知道怎么来做,因为设计到租户,不光是存储,包括监控,日志等等,都要涉及。
不知道现在对这种方案的支持。

收起
参与27

查看其它 2 个回答Garyy的回答

GaryyGaryy系统工程师某保险

以 SaaS 应用来说明。通过在多个客户组织(称为租户,tenant)之间共享硬件和软件资源,多租户已经取得了令人信服的降低运营成本的效果。在云计算领域中,通过划分/共用资源、减少管理和运维成本来降低运行成本。最大的成本降低效果是通过应用层面多租户(application-level multi-tenancy)来实现的,然而,这种方式会带来不同租户之间性能如何隔离(一个租户的行为不能太影响别的租户)的问题,以及如何实现不同租户不同SLA。

在 SaaS 层面,多租户是一种应用的架构形式,它使得 SaaS 提供商可以通过搭建在共享的硬件和软件架构上的一个应用来同时地服务不同租户中的用户。这么做,可以通过更好地利用基础架构资源,以及简化维护和管理来显著降低运行费用,比如,对应用做一次升级就可以使得所有用户获得最新版本。

SaaS 多租户可以在不同的层面实现:(1)利用虚拟化技术在基础架构层实现,比如给不同的租户创建单独的虚机,在虚机中运行应用 (2)在中间件层实现:共享操作系统和中间件,租户拥有单独的应用,比如容器 (3)在应用层实现:所有租户共享单个或者若干个应用,在应用内或者应用访问层实现租户隔离。其中,在应用层实现可以最大限度地提高效率:所有底层架构,包括存储、操作系统、中间件和应用都在不同的租户之间共享。

然而,在应用层实现多租户,是最难实现性能隔离的。性能隔离的目标包括:(1)阻止一个租户使用应用影响到别的租户使用应用的性能 (2)确保每个租户的可能不同的 SLA。根据租户的需求,往往是价格,每个租户的 SLA 可以不同。

举个例子,一个 SaaS 供应商提供一个在线酒店预订系统作为一个在线软件服务给他的租户,比如旅游中介。每个旅游中介的员工和客户都是该租户的一个终端用户。这种应用在季节性需求旺盛或者举行促销时,租户的请求往往达到短期的峰值。因此,对于 SaaS 供应商来说,如果确保一个需求达到峰值的租户(比如正在做促销的租户)不会影响其它租户使用该应用的性能就非常关键了。除此以外,每个租户可以要求不同的 SLA,根据他们的需要。比如,一个大型的旅游中介往往要求在峰值期间能够处理更大量的请求。

为了说明这种租户的影响,我们使用两种方式来部署应用。第一种方式,给每个租户分配一个虚机,这种情况下,应用不是多租户的。性能隔离通过虚机实现,请求大的租户也没法获得分配给他们的虚机的资源以外的更多资源。第二种方式,在物理基础设施集群上部署一个多租户的应用集群。每个虚机中运行同样应用的一个实例,所有租户都可以访问。这个集群使用一个 FIFO 的负载均衡器来转发所有租户的请求到三个虚机上。而在应用层,没有做别的事情来做性能隔离。

第一种方式中,实现了不同租户之间的性能隔离,但是,这种方式有可能造成某个应用示例出现空闲。但是,第二种方式中的应用层面的多租户,一个租户的峰值请求明显地将会影响别的租户。理想情况下,云管理系统会监控访问请求的增长,并会在它出现峰值时增加新的虚机到集群中来处理新增请求。但是,这种方式需要至少几分钟的时间来启动新的虚机。

一个私有云往往是单租户的,因为它部署在一个企业的数据中心内,被该企业内的员工使用。一个公有云往往是多租户的,因为从成本考虑,所有的租户都共享硬件或者软件资源,租户隔离粒度相对较高。但是在某些时候,私有云或者公有云也需要较高的隔离粒度,比如一个公司内的财务部门,出于安全性考虑,需要它所使用的虚机与别的部门使用的虚机隔离开来;比如一个政企部门,在公有云上,要求它的所有虚机或者存储必须在单独的服务器上。这种情况下,可以分为两种隔离粒度:

在一个云内的有限隔离粒度:虚机被物理地隔离在指定的服务器上,但是存储和网络实现逻辑隔离就够了。
在多个云内的完全隔离:这就是专有云,一个用户完全使用专属物理资源来搭建它的专有云。
隔离可以在不同的层面,使用不同的技术实现:

物理层面的隔离:这是最完全的隔离,不同的租户使用不同的物理硬件,包括计算和存储服务器和网络设备等。
计算在操作系统层面的隔离:虚机,一方面它提供较高的安全隔离性,另一方面,它结合其它技术比如 Linux cgroup 来实现性能保证。
计算在中间件层面的隔离:比如容器,它共享操作系统等底层资源,使用 Linux namespace 等技术提供一般的隔离性。
网络在逻辑层面的隔离:使用 VLAN, VxLAN,GRE 等方式来实现网络流量的逻辑隔离。
存储在应用层面的隔离:比如 Ceph 和 Swift 等共享存储,提供应用层面的租户隔离性。

保险 · 2018-05-04
浏览2472

回答者

Garyy
Garyy0410
系统工程师某保险
擅长领域: 云计算存储容器

Garyy 最近回答过的问题

回答状态

  • 发布时间:2018-05-04
  • 关注会员:3 人
  • 回答浏览:2472
  • X社区推广