一般动作
为了获取更高性能与更高可用性,一些较大的项目常常采用集群的部署方式,本文对集群环境下的部署做一些常见问题与注意事项的说明。
默认情况下,集群配置都是默认启用和自动配置的,包括在 web.xml 中生成 distributable 标签以便启用 tomcat 集群、ehcache、cometd 等。
如需禁用集群,可以在 Config.groovy 中如下配置即可:
如果主机打开了防火墙的话,一般情况下,需要过滤下列端口:
1、HTTP 服务端口,如 80、443
2、Tomcat 端口,如 8080
3、Tomcat 集群端口,如 4000
通过启动日志检查:Receiver Server Socket bound to
4、EhCache 集群端口(UDP),如 4446
通过启动日志检查:EhCache multicast port
5、ComedD 集群端口(UDP),如 5577
通过启动日志检查:CometD oort multicast port
EhCache 的同步地址是通过主机名计算的,但是某些 Linux 发行版中(如 Ubuntu),主机名会自动映射到 127.xxx 的地址上,导致缓存无法同步,因此部署时需要检查一下 /etc/hosts 中的主机名映射关系。
如果映射关系有误,可以修改 hosts,或者配置 clusters.properties 来解决该问题。
集群环境下,系统附件、模板、ckeditor/ueditor上传的图片需要能通过任意一台服务器均可访问到,因此需要保存到一个共享的存储空间中。
一般可以通过 NAS 设备 + 各种共享协议(如NFS、网络邻居/Samba等)挂载到各个主机上;或者挂载到某台主机上后,通过NFS、网络邻居/Samba共享到其他主机的相同路径。
然后配置各类系统参数资源路径(bropen.framework.resource.XXXX)等。
系统配置(不是 Config.groovy)中有一条 grails.serverURL,默认为 http://localhost:8080,集群环境或非集群环境下,需要配置为服务地址和IP,如 http://bpm.bropen.cn,以免导致一些特定场景下生成的 URL 错误。
此外集群环境下,肯定有一个负载均衡的前端进行分发,如 Apache Http Server、NGIX、四层交换等,服务地址应该映射到这些前端上,而不是各个集群节点。
由于我们选择的 EhCache 同步机制的原因,在一台主机上部署垂直集群时,需要将不同的 jvm 绑定到不同的 IP 地址上,因此需要给主机配置多个 IP 地址,同时配置各节点的 clusters.properties 指定对应的 IP 地址。
一般情况下,都不需要这个配置文件,但是一些特定的情况下必须配置,比如垂直集群、主机名映射在127.xx地址上等。
详细说明可以直接参考文件中的注释。
除了本文开头几个启、禁用集群的配置外,还有下面几个配置: