我正在尝试设置一个负载平衡系统。我的负载平衡器 (nginx) 有一个 conf 文件,我应该在其中列出上游服务器的所有 IP。
我可以手动将 IP 放在 conf 上,但这样每次添加/删除上游服务器时我都需要更改 conf 文件。
现在我想到了两个不同的想法,但我都不太喜欢:
1 - 让每台上游机器使用导出资源创建一个包含其 IP 的文件。然后负载平衡器服务器将有一个“include conf_directory/*”,并加载上游服务器创建的所有文件。由于负载平衡器使用的是 nginx,所以可以做到这一点,但如果我稍后不想配置 conf 文件中没有“include”的内容,则此解决方案将不起作用。
2 - 如果配置不支持“include”命令,那么我们可以再次让每个上游服务器使用导出的资源创建一个带有其 IP 的文件,然后负载均衡器执行一个命令,该命令将挑选每个文件并生成配置
两个版本都采用了相同的技术,不同之处在于,当服务器(需要生成配置文件)无法识别其自身配置文件中的“include”之类的命令时,将使用版本 2。
现在,我的问题是,有没有其他方法可以做到这一点?我怀疑是有的,因为 puppet 是用来管理多台服务器的,没有一种简单的方法来配置负载均衡器似乎有点奇怪。
编辑:毕竟,第一个解决方案也不起作用,因为我无法在 nginx conf 中的上游使用 include 指令
答案1
使用RIPienaar 的 concat模块。通过它,您可以导出/收集配置文件片段,并将它们连接到目标上的单个文件中。