AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 609476
Accepted
Glasnhost
Glasnhost
Asked: 2014-07-02 23:48:57 +0800 CST2014-07-02 23:48:57 +0800 CST 2014-07-02 23:48:57 +0800 CST

一个配置在多台服务器上的 Apache

  • 772

我想复制我的虚拟机并将其放在负载均衡器后面。

Apache1  Apache2 ....ApacheN
   |        |           |
-------------------------
        LoadBalancer

我只想为虚拟主机使用一个配置文件(实际上是一个包含在每个 httpd.conf 中的 conf 文件目录)、一个日志文件和一个用于所有实例的通用 DocumentRoot 目录。这可能吗,只是在虚拟机之间共享一些目录并相应地配置每个 Apache?

还是文件打开和写入会有些冲突?

是否有更好的方法来维护具有相同配置的所有机器?

我能想到的唯一另一件事是,它是一个复制主配置并重新启动所有 Apache 实例的脚本。还有一些脚本来合并所有日志......

欢迎任何建议。

更新:我认为在我的情况下性能不是问题,但是当我开始注意到日志损坏时,我停止从两个实例写入同一个日志文件。

[04/Oct/2014:17:10:34 +0200] "GET /index.html HTTP/1.0" 200 15082 22633
[04/Oct/2014:17:10:36 +0200] "GET /index.html HTTP/1.0" 200 15082 13[04/Oct/2014:17:10:38 +0200] "GET /index.html HTTP/1.0"[04/Oct/[04/Oct/2014:17:10:40 +0200] "GET /index.[04/Oct/2014:17:09:42[04/Oct/2014:17:10:42 +0200][04/Oct/2014:17:09:44 +0200] "GET /index.html HTTP/1.0" 200 15082  
apache-2.2
  • 3 3 个回答
  • 2565 Views

3 个回答

  • Voted
  1. faker
    2014-07-03T00:19:54+08:002014-07-03T00:19:54+08:00

    是否有更好的方法来维护具有相同配置的所有机器?

    是的,配置管理系统(Puppet、Chef ......)是处理这个问题的正确方法。
    他们可以自动部署更新的配置文件并在之后重新启动服务。
    日志应该通过 (r)syslog 发送到中央日志服务器。

    至于 DocumentRoot 的内容:这取决于那里的内容。
    如果它是静态代码,那么最好将其打包并通过标准操作系统工具(yum、apt-get、...)进行部署。
    它还可以更轻松地缓慢推出新版本。

    当然可以进行文件共享,但这可能会成为单点故障。
    当您添加更多服务器时,在放置新配置后检查哪台机器已经重新启动服务将会很痛苦。

    • 11
  2. Best Answer
    village
    2014-07-03T00:00:29+08:002014-07-03T00:00:29+08:00

    您可以在许多相同的机器之间共享 apache 配置和文档根目录 - 为这些目的使用例如 NFS 共享是没有问题的。

    明智的做法是不要共享 apache 日志目录,因为在重负载时您将获得许多并发写入。在一种设置中,我使用远程系统日志记录来获取常见的 apache 日志。这将是一个单独的问题,如何实现这一点。请参阅http://httpd.apache.org/docs/2.2/mod/core.html作为发送方的起点。

    您必须相应地配置您的(服务器的本地)系统日志。

    • 4
  3. DTK
    2014-10-05T09:33:28+08:002014-10-05T09:33:28+08:00

    我建议要么使用配置管理系统,例如 puppet 或 CFEngine,要么至少将配置集中存储在单个存储库中并将它们拉到所有 Web 服务器。

    对于配置管理解决方案,您可以指定必须存在的整个文件,以及在配置管理服务器上从何处获取规范副本,或者您可以使用配置管理语言为这些文件指定参数,该语言提供抽象层和简化了以正确方式引入新配置的过程。

    为了简单地集中维护和分发文件,您可能希望将配置文件签入版本控制软件,例如 CVS 或 SVN。从这里开始,有两种非常简单的方法可以将这些配置导入所有 Web 服务器。

    • 然后,您可以指示您的 Web 服务器直接从版本管理工具(cvs co或svn checkout)中提取
    • 或者,您可以做更多的工作来制作更强大、可扩展和可重用的解决方案
      • 构建所有 apache 配置文件(或您的操作系统的等效文件)的 RPM 的脚本
      • 在版本控制服务器(或您的操作系统的等效服务器)中运行 yum 存储库
      • 然后只需指示您的 Web 服务器执行yum update my-apache-configs(或您的操作系统的等效项)。

    仅限 VCS 的解决方案最容易设置,并且可以跨操作系统工作。包存储库解决方案设置起来有点困难,但它将为您打包和分发各种配置、代码和脚本铺平道路,并且更接近操作系统供应商的方法。

    包存储库解决方案的另一个好处是您可以定义依赖项和包组。这意味着您可以使my-apache-configs依赖于httpd和mod_ssl。然后,您可以创建一个空包,您可以将其称为company_com-web_server,它依赖于my-apache-configs和my-ssl-certificates以及您公司特定的任何其他包。要设置新的 Web 服务器实例,请将新安装的服务器(将您的 yum 存储库添加到 kickstart)在负载均衡器后面,发出yum -y install company_com-web_server,走开喝杯咖啡,然后回来准备-to-roll Web 服务器实例。

    ===== 编辑 =====

    这种机制的价值在于它创建了一个松散耦合的系统。如果配置管理服务器或 yum 存储库脱机,您将失去重新配置的能力,但 Web 服务器保持运行。即使在 htat 实例中,您也可以手动将更改复制到所有机器,并在 repo 恢复时手动检查更改。使用共享存储(NFS、集群文件系统等)会产生单点故障。

    • 2

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve