我在试着看看这是否可能。我将首先介绍应用程序当前如何运行的背景信息。
应用程序部署到4个单独的节点(使用'all‘配置)。ServerA上有2个节点,ServerB上有2个节点,分别命名为node1、node2、node3、node4。该应用程序位于运行apache和mod_jk以重定向通信量的web服务器后面。假设1.0.0版本当前已部署。我将尝试部署1.0.1,这将只有一个小的改变。
其目标将是取消node4,将1.0.1版本部署到node4 (同时node1-node3仍在启动和运行)。他们将共享同一个数据库,理论上应该是可以的,只要我们的代码不要求我们更新数据库中的任何内容。下一步将是使用apache + mod_jk引导通信量,使其只使用负载平衡节点1-node1 3。node4将被直接访问。运行1.0.1版本的node4将被测试。Apache + mod_jk将被更改为服务于node4。版本1.0.1将部署到node1-node3。所有节点现在都应该运行版本1.0.1。
我知道这是非常高的水平,我已经面临问题(更不用说应用程序特定的问题了)。
我只想知道处理这个问题或JBoss特定问题的其他方法是什么,我可以遇到什么。
我是否应该将hotdeploy节点放在不同的集群中,然后让rest连接?
任何建议都会有帮助。谢谢。
发布于 2015-03-01 12:09:35
您可以利用前面有mod_jk的Apache,假设您的配置中有以下内容:
JkMount /myapp/* workerApp
JkWorkersFile /etc/httpd/conf/workerApp.properties与其使用名为workerApp.properties的文件,不如使用以下3个文件:
现在,wokerApp.properties不是一个文件,而是一个链接,因此在正常情况下:
ln -s workerApp-normal.properties workerApp.properties当您部署新版本时
rm -f workerApp.properties
ln -s workerApp-deploy2.properties workerApp.properties
reload apache现在您可以在node4上部署新版本,所有请求都将通过节点1、2和3进行路由。
rm -f workerApp.properties
ln -s workerApp-deploy1.properties workerApp.properties
reload apache在这种情况下,所有客户端都是节点4的路由器,您可以在其他节点上升级版本。当你做完之后:
rm -f workerApp.properties
ln -s workerApp-normal.properties workerApp.properties
reload apache所有的请求都能在服务器之间得到平衡。
这还有另一个优点,例如,您可以使用不同的工作人员集来定义类似于VirtualHost的preflighttest.yourcompany.com,这样您就可以在节点4上测试新版本,然后才能在生产中有效地滚动它。
希望能帮上忙。
https://stackoverflow.com/questions/28769071
复制相似问题