我来自.NET的背景,有很多我喜欢的东西,我喜欢旁边的许多事情我讨厌。 一般来说,IIS是我讨厌的事情之一。
但是,IIS的一个非常好的function是可以在服务器节点上放置一个“排水口”。 这会将所有新stream量redirect到其他节点,但允许当前在线的用户在完全closuresIIS之前完成其会话。
这对于在不中断用户会话的情况下进行部署非常方便。
在我的新公司,我们不是.NET,而是热爱它。 我们在EC2上使用JRuby和Java,使用Apache作为前端,Tomcat作为我们的后端。
任何人都可以运行任何提供与Tomcat,Nginx或Apache类似function的解决scheme吗?
我做了一些search,但无法提出任何有用的东西。 Axis2怎么样? 有没有人有任何经验呢?
如果你想closures本地的apache站点,让当前的用户完成他们目前的任务做一个优雅的Apache停止。 我假设你有一些其他架构可以将用户redirect到另一个运营网站,让他们继续(即负载平衡器等)。
从Apache网站:
信号:WINCH apachectl -k优雅停止
“WINCH或优美停止信号会导致父进程通知孩子在他们当前的请求之后退出(或者如果他们没有提供任何服务,立即退出),然后父母将删除它的PidFile并停止监听所有的端口。父节点将继续运行,并监控正在处理请求的子节点,一旦所有子节点都已经完成并退出,或者已经到达了GracefulShutdownTimeout指定的超时时间,父节点也将退出,如果超时,则剩余的子节点发出TERM信号强迫他们退出。
当处于“优美”状态时,TERM信号将立即终止父进程和所有subprocess。 但是,由于PidFile将被删除,您将无法使用apachectl或httpd发送此信号。 “
实际上,简单地说
apache2ctl graceful
将优雅地重新启动Apache进程允许它加载一个新的configuration
在这里举个例子,假设你有www.v1和www.v2的开发工具
<VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/vhosts/example.com/www.v1 [...] </VirtualHost> <VirtualHost *:80> ServerName dev.exemple.com DocumentRoot /var/www/vhosts/example.com/www.v2 [...] </VirtualHost>
现在准备把开发投入生产? 编辑configuration(没有什么会改变在线,直到你做一个Apache重启/优雅更好地看你的logrotate发生时,它会抛出一个“apache2ctl优美”)
<VirtualHost *:80> ServerName old.example.com DocumentRoot /var/www/vhosts/example.com/www.v1 [...] </VirtualHost> <VirtualHost *:80> ServerName www.exemple.com DocumentRoot /var/www/vhosts/example.com/www.v2 [...] </VirtualHost>
当你感觉一切都准备好了…交叉你的手指,你的新版本工作在新的域名;)
apache2ctl graceful
而魔法师应该发生:)
请注意,“apache2ctl优雅”会自动做一个“apache2ctl configtest”,并不会崩溃,如果你在你的Apacheconfiguration明显的错误