我有一个来自nginx负载均衡器的多个上游服务器:
upstream app {
# Make each client IP address stick to the same server
# See http://nginx.org/en/docs/http/load_balancing.html
ip_hash;
# Use IP addresses: see recommendation at https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
server 1.1.1.1:6666; # app-server-a
server 2.2.2.2:6666; # app-server-a
}
现在我通过关闭每个服务器(例如systemctl myapp stop
)来使服务器处于活动/密码配置中,然后让nginx检测到服务器已关闭。
但是,我希望能够以动态方式更改上游服务器,而无需关闭应用服务器或nginx OSS。我知道nginx Plus的proprietary upstream_conf
module但使用的是nginx OSS。
如何在nginx OSS上动态动态重新配置上游服务器?
答案 0 :(得分:1)
您可以使用:
openresty具有lua脚本编写能力的OSS nginx包
使用lua脚本编写nginx(您可以使用nginx OSS和luajit自行配置)来实现此目的。
dynx可以实现您正在寻找的目标,它仍在进行中,但动态上游功能已经存在,并且可以通过其他API进行配置。
我正在添加有关如何部署和配置dynx的详细信息:
在需要部署堆栈之后,例如,使用此命令(您需要在dynx git root上):
docker stack deploy -c docker-compose.yml dynx
要检查应用程序是否已正确部署,您可以使用以下命令:
docker stack services dynx
要配置您可以通过api使用的位置,例如:
curl -v "http://localhost:8888/configure?location=/httpbin&upstream=http://www.httpbin.org/anything&ttl=10"
测试它是否有效:
curl -v http://localhost:8666/httpbin
如果你无法让它工作,请不要犹豫与我联系或在github上打开一个问题