我使用 Chef 管理多台服务器。它们都属于同一个网络,与外部互联网的带宽相比,它们之间的带宽很大。
问题是:很多时候需要从互联网上下载一些档案。当我在需要的每台服务器上运行 chef-client 时,它们都会访问互联网并从那里下载。这需要一些时间,而它们可以先访问 LAN 内的某个服务器并检查此文件是否已经存在。
我需要的是一些代理服务器apt-cacher-ng,但对于普通文件,它们可以根据 url 或文件校验和进行存储。这样,每个 chef-client 都可以先在这个缓存器中检查文件,然后如果缓存中没有所需的文件,则只在互联网上检查。理想情况下,这个缓存器可以充当代理 - 这样,一旦它收到某个 url 的请求,它就会下载文件本身,将其存储在某处并将其返回给请求者。
问题是:我可以配置apt-cacher-ng怎么做?或者还有其他方法吗?代理人或者缓存有哪些有用的服务器(apache、nginx)?
我只需要对此代理服务器进行配置的帮助,因为一旦它准备就绪,我就可以自己更改 chef-clients 的配置。
答案1
我认为你只需要配置http_proxy选项,那么 chef 将使用它进行 http 下载。
当然,代理服务器本身必须由您自己设置。您可以使用 squid、Apache mod_proxy 和 IIRC 以及 ngnix 来设置缓存代理。Polipo 也是一款非常出色的代理。
答案2
Squid 是一种常见的缓存代理,您可以将其用于此目的。Nginx 和 apache 并非真正为执行您所需的正向代理和缓存而构建。
http_proxy
基本上,只要按照您喜欢的方式进行设置即可,对于基本的缓存代理来说,它并不太复杂,然后在 chef 配置中将chef 指向它。