Apache删除/删除/取消定义代理平衡器定义

时间:2017-02-09 17:36:19

标签: apache httpd.conf mod-proxy-balancer

我有一个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启动命令。)

1 个答案:

答案 0 :(得分:0)

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

我确认2个定义在内存中合并,以制作一个更大的定义。

我能够通过在temp_upstream.conf文件的临时配置中为每个BalancerMember定义添加“lbset = 0”(默认值)并将“lbset = 1”添加到BalancerMember,使其完全像我想要的那样工作httpd.conf中永久配置中的定义。 lbset = 1定义仅在所有lbset = 0定义失败后使用。