在单个服务器上划分服务集

在单个服务器上划分服务集

我所在的团队已经壮大,即将从使用 DigitalOcean VPS 转向使用单个共置服务器。目前,我们不需要高度分散我们的服务。这个单片服务器将运行我们几乎所有的系统,从面向公众的网站到我们的邮件服务,再到自定义守护程序和控制面板。

然而,人们担心一项服务可能会受到损害(我们过去曾是入侵的目标),并导致服务器其他部分的稳定性或安全漏洞。

我们希望以某种方式“沙盒化”某些服务和进程,限制它们能够使用的资源(RAM、CPU)数量。有人建议在不同的 VM 上运行每“组”服务,但在我看来这似乎很笨重且难以维护。我认为 Linux 会有更优雅的方式来处理这个问题。有人对实现这一目标的最佳方法有什么建议吗?

我们使用的是 CentOS 6.4 64 位。

答案1

一个名为的项目Docker最近因尝试解决这一问题而引起了广泛关注。

Docker 是一个开源项目,可轻松从任何应用程序创建轻量级、可移植、自给自足的容器。开发人员在笔记本电脑上构建和测试的同一容器可以在生产、虚拟机、裸机、OpenStack 集群、公共云等上大规模运行。

该技术利用 Linux cgroups 和其他一些功能来构建类似监狱的“容器”,这些容器可以包含运行特定服务所需的所有资源和配置,这些容器可以像软件包一样进行管理,因为它们可以在各种环境中分发、版本控制和使用。(这是一个粗略的简化。)

Docker 的主要特点是什么进一步了解它的实际工作原理。

答案2

传统上,你会使用 chroot jail 来实现这一点我强烈建议将它们分别放在各自的虚拟机中。这样彼此之间的隔离性会更好,升级/故障排除/更改服务时,您可以获得更好的粒度。能够在不使数据库服务器脱机的情况下重新启动/修补 Web 前端非常好,尤其是当您最终扩展以实现冗余时。

与大多数应用程序相比,CentOS 盒子的开销相当小。

相关内容