我们在内部托pipe我们的ASP.NET网站(在我们的DMZ内)。 当我们正在进行networking维护等,我们希望我们的网站显示一个维护页面,但我们的networking是closures的,所以我们的托pipe服务器closures。 我们不会托pipe我们的DNS条目(它是外部处理的),所以我们可以在外部托pipe一个维护页面,但是推送DNS更改以进行维护将需要很长时间。 我们可以采用什么样的解决scheme来处理networking中断,同时仍然向外部用户表明我们仍然存在? 什么为你工作,你有什么尝试?
当后端站点不可用时,指向您的实时站点的非现场反向代理可能会显示默认页面。
我使用haproxy进行精确设置。 它托pipe在外部Linux VPS上。 当代理系统能够在实际的Web服务器上成功获取健康检查页面时,就是向客户端提供的服务。 运行状况检查失败时,它会从代理VPS的本地Apache服务器提供静态页面。
这是我的haproxy.conf:
global maxconn 4096 daemon defaults mode http clitimeout 60000 srvtimeout 30000 contimeout 4000 option httpclose # Disable Keepalive listen FarmName 10.9.8.7:80 mode http stats enable stats auth admin:Fa2a6eSe balance roundrobin cookie haCookie insert nocache option httpclose option forwardfor option httpchk HEAD /healthcheck HTTP/1.0 server active 1.2.3.4:5080 check server static-backup 127.0.0.1:80 check inter 500 rise 1 fall 2 backup
那么,我不知道这是否是最佳解决scheme,因为它增加了解决scheme的复杂性:您可以在您的networking服务器(networking之外)之前放置一些反向代理(鱿鱼,MS ISA,…)和通过这些服务器运行请求。
所以,当你计划停机时,你只需要改变一些规则来显示静态的“抱歉,我们离线”的信息。
您可以设置一个DNS故障转移解决scheme(DNS Made Easy提供此选项),但取决于您的TTL设置,除了较长的中断之外,人们不可能获得更新。 当然,您还需要一个外部服务器来托pipe维护页面。
瞬间故障切换的最佳方法是在某个地方购买一个小型托pipe服务器,并在其上安装一个静态网页,然后使用工具(如linux中的心跳线 )来监视主服务器何时不可用,并让辅助服务器接pipe其IP地址。
为什么不只是configuration一个单一的工作站/服务器与IIS显示一个静态维护页面? 当您需要将Web服务器closures时,只需调出维护工作站,并确保它响应传入的Web请求…
由于简单的静态网页,你可能会得到一个小型/中型工作站,甚至可能是一台笔记本电脑……你甚至可以离开一个虚拟机,离线,直到你需要它…
看起来像所有其他的工作比必要的更多…
如果您有一个ASP.NET Web应用程序站点,并且在该站点的根目录中放置了一个名为“ app_offline.htm ”的文本文件,则该网站的所有请求都将redirect到该app_offline.htm文件。
基本上,如果您需要将整个ASP.NET站点脱机,则可以在该文件中放置一些好消息。 然后,任何对该网站的URL,任何URL的新请求都将redirect到该文件,从而允许您对网站进行维护,升级或其他任何操作。 这不是一个真正的redirect。 ASP.NET实质上closures了站点,从服务器卸载它,并停止处理对该站点的任何请求。 也就是说,直到你删除app_offline.htm文件 – 那么事情将继续正常,你的ASP.NET网站将加载并重新开始服务请求。
希望能帮助到你。 干杯!