我们要为其中一个Java应用程序设置故障转移机制,应用程序在一台服务器上有3个实例,每个实例必须通过不同的URL访问,这些URL已经注册,并可以通过dns访问。 在辅助服务器上,我们做复制(重要的部分是,实例可以启动,只能在一台物理机上运行),因此我们build立了辅助服务器,如果主要出现故障,我们想为一个域注册多个IP,但由于应用程序旨在只有一个IP注册到实例url。 多个IP设置的另一个问题是dns的循环性质。 是否有可能为一个域注册两个IP,并通过nginx或HAproxy将其代理指向只有主服务器? 还是其他一些想法? 我的想法是,如果主要出现故障,请打开辅助服务器上的应用程序,并尽可能在nginx上更改configuration,以避免dns注册和传播时间?
我要做的是接受域名实际名称上的传入stream量,并自己手动执行路由/故障转移。
即
example.com> nginx服务器> server1。 (如果失败)> server2。
http {
上游java-app {
服务器$主要服务器;
服务器$辅助服务器备份;
}
服务器{
位置 / {
proxy_pass http:// java-app;
proxy_set_header主机“example.com”;
proxy_next_upstream错误http_502;
}
}
}
通过使用这种方法,您的后端服务器不需要担心DNS。 只有Nginx会有指向它的DNSlogging。 您的后端服务器将只需要担心处理传入的stream量,如果primary-server死亡…次要将接pipe!
通过在那里添加主机头,您的后端服务器仍然可以在代码中的“主机”头上匹配。 🙂