0

我有一个 Apache 配置,需要实现一个平衡器,该平衡器使用一组临时上游服务器几个月,然后用永久集替换它们。我正在尝试设计一种方法,使我可以在安装时提供两种配置,并且以后可以轻松地以编程方式切换它们。这需要在大约 40 台具有独特配置的服务器上完成。

到目前为止我尝试过的...

我在 httpd.conf 文件中添加了以下代码:

<proxy balancer://upstream>
  balancermember http://permanentserver1:80
  balancermember http://permanentserver2:80 status=+H
  balancermember http://permanentserver3:80 status=+H
</proxy>
include conf\temp_upstream.conf

..然后在 temp_upstream.conf 文件中,我尝试覆盖平衡器的定义

<proxy balancer://upstream>>
  balancermember http://temporaryserver1:80
  balancermember http://temporaryserver2:80 status=+H
  balancermember http://temporaryserver3:80 status=+H
</proxy>

……但它似乎不起作用。第二个平衡器定义似乎被忽略了(尽管它可能被合并 - 我不能轻易说出)。

我使用这种方法的原因是,当需要执行切换时,我可以将 temp_upstream.conf 文件替换为空文件 - 然后重新启动 Apache。

有什么办法可以使这个配置工作吗?有没有一种方法可以取消定义/删除脚本中先前定义的平衡器,以便接受第二个定义?(我确实知道我可以在启动行上传递一个变量并用于IfDefine有条件地处理正确的定义——但这意味着修改我不想做的 Apache 启动命令。)

4

1 回答 1

0

我最近找到了一个完美的解决方案来解决我的问题。

我确认这两个定义在内存中合并以形成一个更大的定义。

通过将“lbset=0”(默认值)添加到 temp_upstream.conf 文件的临时配置中的每个 BalancerMember 定义并将“lbset=1”添加到httpd.conf 中的永久配置。lbset=1 定义仅在所有 lbset=0 定义都失败后使用。

于 2017-03-21T03:07:41.337 回答