共计 2277 个字符,预计需要花费 6 分钟才能阅读完成。
这期内容当中丸趣 TV 小编将会给大家带来有关如何在 Mesos 中提高网络隔离效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
众所周知,在网络架构领域,没有哪种方案能够一劳永逸地适应全部具体场景。然而,Mesos 0.23.0 版本中做出大胆实践,首次实现一容器一 IP 机制支持原生 Mesos 容器化方案,而且可满足很多特定需求。
Apache Mesos 利用 Docker 以及 Linux cgroups 等操作系统容器,旨在实现任务与资源隔离。尽管这种解决方案能够在 CPU 以及内存等本地资源层面提供良好成效,但却无法作为切实可行的跨容器网络资源管理机制发挥作用。有鉴于此,Mesos 如今开始为同一集群当中的每套容器系统提供不同的 IP 地址(即一容器一 IP 机制),这项特性于 Mesos 0.23.0 版本中首次出现。
如果没有一容器一 IP 机制 …… 容器实现方案会共享全部主机 IP 地址,并因此共享主机端口。
这意味着应用程序会被分配至非标准端口以避免端口冲突状况,最终导致其实际监听的并非已知端口。这就阻碍了其服务发现能力,并使得其它应用程序很难与容器化应用程序进行对接。
列表项目网络隔离能力缺失还会给多租户环境带来安全隐患,尤其是在一套 Mesos 集群会被多种不同类型的应用程序所共享的情况下。
举例来说,如果某家金融企业同时在单一 Mesos 集群当中运行风险分析模拟与面向客户的应用程序,那么相关管理人员将很难解决恶意应用意外访问到敏感信息的难题。另外一种风险在于,性能不佳的应用程序有可能拖累整套网络的速度表现,在这种情况下处于同一节点之上的关键性任务应用将有可能得不到充足的资源供给。
最后,每家企业都拥有不同的网络需求。在网络架构领域,没有哪种方案能够一劳永逸地适应全部具体场景。
为了解决上述难题,Mesos 社区已经对 Mesos 项目进行了强化,确保一容器一 IP 机制能够支持原生 Mesos 容器化方案(预计未来面向 Docker 容器的支持能力也将推出)。这套可插拔解决方案还允许 Calico、WeaveWorks 以及其它一些第三方网络隔离方案供应商的产品以插件形式作用于我们的 Mesos 集群。
如何实现一容器一 IP 机制支持原生 Mesos 容器化方案?
作为 Mesos 当中的一容器一 IP 机制,其设计目标之一在于建立一套可插拔架构,允许用户从现有第三方网络供应商处选择解决方案并作为网络实现基础。为了达成这一目标,其中共包含五项关键性组件:
负责为即将启用的容器指定 IP 要求的框架 / 调度标签。这是一项可选服务,能够在不带来任何副作用的前提下将一容器一 IP 能力引入现有框架当中。
由一个 Mesos master 节点与一个 Mesos agent 节点共同构建的 Mesos 集群。
套第三方 IP 地址管理(简称 IPAM)服务器,负责根据需要进行 IP 地址分配,并在 IP 地址使用完毕后将其回收。
第三方网络隔离方案供应程序负责对不同容器系统加以隔离,并允许运维人员通过配置调整其可达性及路由方式。
作为轻量级 Mesos 模块被加载至 agent 节点当中的网络隔离模块将负责通过调度程序进行任务要求审查,同时利用 IP 地址管理与网络隔离服务为对应容器提供 IP 地址。在此之后,其会进一步将 IP 地址交付至 master 节点以及框架。虽然 IP 分配与网络隔离功能完全可以由单一单元负责实现,不过立足于概念层面,Mesos 提供了两项不同的服务方案。其一设想由两家彼此独立的服务供应程序分别提供 IP 地址管理与网络隔离服务。举例来说,其中之一利用 Ubuntu FAN 实现 I P 地址分配,而另一方则利用 Calico 项目进行网络隔离。
一容器一 IP 机制的可选属性使得现有框架能够不受影响,这就使集群滚动升级成为了可能。因此,如果用户以混合模式运行多套容器系统——其中一部分采用一容器一 IP 机制,另一部分则仍按默认方式运行——那么同一集群之内不会出现任何兼容性问题。
一容器一 IP 服务的出现使得我们能够对网络隔离进行粗粒度与细粒度调整。尽管仍然需要依赖于第三方网络隔离方案供应程序,但如果只是单纯希望以粗粒度方式进行网络隔离设置,那么大家完全可以使用网络路由表。
一容器一 IP 机制的最佳实践
如果没有一容器一 IP 机制,那么应用程序必须注册 localhost, port-assignment 以实现发现服务(包括 Consul 以及 Zookeeper 等等)。另外,HAProxy 或者类似的反向代理机制必须被部署在每一个计算节点当中,从而确保流量由 localhost: 指向合适的容器端口。
在一容器一 IP 机制的支持下,当 IP 地址被分配至容器且网络隔离与路由功能全部到位,那么 Mesos master 与调度程序将会获取到 IP 地址的分配信息。在这种情况下,调度程序能够利用容器 IP 与应用程序相对接。另外,其还可以将这部分信息用于新启动的容器及应用程序。
除此之外,Mesos master 还能够通过自身状态端点实现容器 IP 可用性。这部分信息能够被各 DNS 服务供应程序所使用,包括 Mesos-DNS 以及 Mesos-Consul,从而实现域名解析。
凭借着一容器一 IP 地址所带来的诸多助益,每套容器系统都能够拥有与其 IP 相符合的完整端口区间,而且我们无需再为端口冲突之类的状况而劳心费力。在其帮助下,如今应用程序已经可以监听标准端口,并因此得以在无需反向代理辅助的情况下轻松实现服务发现。
上述就是丸趣 TV 小编为大家分享的如何在 Mesos 中提高网络隔离效果了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。