FreeBSD jails和Sockets

时间:2011-05-10 14:16:43

标签: sockets freebsd jail

我对从Linux转换freeBSD很新。

我读到了jail,解决方案听起来很棒。 所以我对我的网络服务器的想法是创建3个jails。 一个用于mysql的监狱,一个用于nginx,一个用于php-fpm。 现在监狱必须互相沟通。我该怎么做?

通过IP?这将是一个很大的开销但很安全。 这是一个例子:

  • 客户端
    • - > TCP / IP - > NGINX
    • - > TCP / IP - > PHP-FPM
    • - > TCP / IP - > MYSQL
    • - > TCP / IP - > PHP-FPM
    • - > TCP / IP - > NGINX
    • - > TCP / IP - > CLIENT

使用套接字:这将是一个安全的失败..

  • 在主机系统上创建目录
  • 在jails中创建目录
  • 合并目录

您使用哪种解决方案?或者您有更好的解决方案吗?

2 个答案:

答案 0 :(得分:3)

我不会将php-fpm分开,但这是可能的。目前,IP通信的开销并不是那么大,考虑到数据库和php处理器需要进行的处理要大得多,这一点并不重要。特别是因为没有涉及实际的电线。数据包通过环回构造通过接口进行路由,并且不会接通线路。

分离的优势在于,可以将监狱移动到另一台物理机器(如果需要),移动监狱是轻而易举的。

为了澄清为什么不在单独的监狱中移动php-fpm,修改网站成为静态内容(图像)和动态内容(php文件)的双任务流程。优点是网络服务器软件中的漏洞无法修改php代码。这也是为什么你不应该将你的php代码nullfs放到网络服务器监狱的原因,如果你打算将它分开,因为它会破坏它的优势。

答案 1 :(得分:1)

我真的不知道它是否是最好的解决方案,但是如果你可以使用Unix domain sockets,你可以在三个监狱之间共享一个坐骑。命名空间是隔离的(它们不能在共享挂载点之外创建套接字),它们应该能够进行通信。

要创建共享安装,您可以使用nullfs安装。一个不错的(相当高级的) guide about jails 也会说nullfs次坐骑。当然,此挂载点应仅用于仅用于套接字,其他文件应保持独立。

同样,我不知道这些应用程序是否可以通过Unix套接字进行通信,但是如果它们可能已经设置好了。