页面树结构
转至元数据结尾
转至元数据起始

smartbi_proxy.war

 

1、配置集群应用的必要条件

  • 集群中的所有 Server 服务器日期和时间必须一致,否则同步会存在问题。

    注:同步各个服务器的时间,在windows  环境可以运行SyncTime.exe(需要.Net 2.0环境)进行各个服务器的时间同步 SyncTime.exe 此程序同步官方时间服务器的。


  • 集群中的所有 Server 必须位于同一网段,并且必须是 IP 广播(UDP)可到达的。

  • 集群中的所有 Server 必须使用永久的静态 IP 地址,动态分配 IP 地址不能用于集群环境。

文档目录:

注意!

如果您正在使用的是 Smartbi Spreadsheet 电子表格版本,下文中所有涉及到 smartbi、smartbi.war 名称的地方需要全部替换为 spreadsheet、spreadsheet.war。千万注意!

2、配置前的准备工作

在配置集群应用前要对集群环境有一个良好的设计,下面就是我们这次配置的集群信息,在同一网段内的不同机器上配置集群。

操作系统

硬件配置(IP、端口)

角色

描述

Win2003 Server

IP:192.168.1.8 ,PORT:8003

Proxy Server

负载均衡服务器,负责请求分发。

Win2003 Server

IP:192.168.1.8 ,PORT:8001

Smartbi Server1

Smartbi 服务器1。

Win2003 Server

IP:192.168.1.9 ,PORT:8001

Smartbi Server2

Smartbi 服务器2。

 

3、部署文件说明

文件名

作用说明

smartbi.war

Smartbi 服务器手工部署包,该文件不建议改名。

smartbi_proxy.war

代理分发包,负责 Smartbi 所有请求的转发。

 

4、部署和配置Smartbi服务器

在各个机器上分别部署和配置 Smartbi 服务器,具体步骤如下。

  1. 在指定的服务器上安装 Tomcat 应用服务器。

  2. 修改<Tomcat>\conf\server.xml文件。查找<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">标签,在其中加上jvmRoute="tomcat1"属性。注意:每个服务器上的 tomcat 都要修改,并且必须保证每个Server都使用不相同的值,不允许多个服务器使用相同的 jvmRoute 值。

  3. 配置ehcache.xml :
    注意:该部分部署内容,只适用于Smartbi V8.5及以下版本。Smartbi V8.5.5及以上版本的集群部署请参见 集群配置 内容。
    方案一:修改war包,将smartbi.war\WEB-INF\ehcache.xml 文件删除;然后将smartbi.war\WEB-INF\ehcache_cluster.xml 文件重命名为 ehcache.xml。
    方案二:修改war包,将smartbi.war\WEB-INF\ehcache.xml 文件删除;然后将smartbi.war\WEB-INF\ehcache_cluster_manual.xml 文件重命名为 ehcache.xml,然后参考下图修改各个节点对应的ehcache.xml。


    注:1、建议使用方案一( IP 广播(UDP)可到达的使用方案一),如何测试是否广播可达,请参考wiki文档:分组广播测试 
           2、为避免每次替换war包需要重复此操作,可在smartbi.properties文件中配置增加smartbi.ehcacheFileDir路径(如放在tomcat/bin目录下,可配置为smartbi.ehcacheFileDir=. ),将ehcache.xml放在相应路径下。
           3、若是是在同一个机器部署两个节点,采取方案二的时候,可通过如下设置相同的IP不同的缓存同步端口:



  4. 接下来几步部署smartbi.war,更详细的步骤可以参考“在各种应用服务器上手工部署”文档中部署到 tomcat 章节。
  5. 将修改后的 smartbi.war 包复制到每个<Tomcat>\webapps 目录下。
  6. 运行<Tomcat>\bin\startup.bat,启动 Tomcat 服务器。
  7. 分别登录smartbi 配置页面,设置知识库信息,上传License文件,完成系统配置。注意:所有服务器节点必须连同一个知识库,这样才能在连接到任一节点时都看到相同的资源。
  8. 重启应用。
  9. 至此一个节点部署完毕,重复上述步骤,再部署其它节点。

5、配置负载均衡服务器

在集群环境中的一台机器上部署负载均衡包,由其将请求分发到各个节点上。

参考:代理服务器部署方案-方案一、部署在Java应用服务器

6、通过代理访问Smartbi

  1. 重启所有 Server 上的 Smartbi 应用。
  2. 单独访问每一个 Smartbi 服务器,确认其可以正常访问。另外请访问每一个 Smartbi 服务器上的 listcaches.jsp 页面,查看其中 Peers 列节点同步信息是否正确,该页面地址:http://192.168.1.8:8001/smartbi/vision/monitor/listcaches.jsp
  3. 访问代理分发服务器 http://192.168.1.8:8003/smartbi,此时应该显示 Smartbi 登录页面,与单独访问某个节点一样。
  4. 代理分发的原理是,按次序分发。假如有两个服务节点,第一个用户登录被分发到服务器1,并且其之后的所有请求都在服务器1上,直到注销;第二个用户被分发到服务器2,并且其之后的所有请求都在服务器2上,直到注销。第三个用户会被分发到服务器1,并且其之后的所有请求都在服务器1上,直到注销;依次循环。如果某个服务器节点故障,则请求分发时会跳过该节点。

7、疑难问题

7.1 问题1:如果后台不断输出WARN/INFO日志信息的问题

该问题如下图所示:

说明:此问题有可能原因是:

         1)集群缓存没有配置好,所以需要测试缓存是否成功同步,可以通过以下步骤测试,如果集成缓存同步正常,进行2)操作,如果测试不正常,需要重新配置缓存文件。

                     测试集群缓存是否生效,详细步骤如下:

                        1、分别在不同机器上用浏览器访问不同的smartbi节点。

                        2、在节点1和节点2上都展示“ 资源定制 ”目录。

                        3、在节点1的“资源定制”目录下新建一个目录。

                        4、在节点2上,选择“资源定制”目录,右键刷新,然后查看是否有节点1上新建好的目录存在,若是不存在,就说明集群缓存已经同步不成功。

                        5、同理,按照以上方法测试各个节点之间的缓存是否能正常同步。

         2)确定缓存正常同步,确定各个节点的服务器时间是否一致(要求各个服务器的时间必须同步,只要打印了截图上的日志信息,表示两个服务器之间的时间相差有点大,不太推荐 )

                      如果是Unix(Linux通常需要root),可以在服务器A上运行ssh user@serverOther sudo date -s @`( date -u +"%s" )`,将日期设置到serverOther上。
                      如果是windows环境可以这样做:
                      1、如果可以上网,则使用SyncTime.exe(需要.Net 2.0环境)与指定的时间服务器同步(默认是time.nist.gov )
                      2、如果不可以止网,可以其中一台为准,其它机器这样操作:
                          a) 以管理员运行命令提示符
                          b) 运行net use \\serverA /user:<登录用户名>
                          c) 运行net time \\serverA /set 并输入y 表示设置以serverA时间为准

         3)以上方式无法解决,可采取在config文件中增加log4j.logger.org.quartz=ERROR这个参数,设置完之后重启服务器,后台将不会再输出WARN/INFO日志信息。

           


7.2 问题2:确认集群是否部署成功

        请使用如下方法确认集群是否部署成功了。

        假如有1、2、3、4四个节点。直接登录节点1的Smartbi,在目录树上创建一个新目录。然后再分别登录到节点2、3、4的Smartbi,如果能看到刚才在节点1上创建的目录,就表明集群部署成功了。

或者,还可以查看缓存信息。打开“系统监控”页面,点击左侧的“缓存”项,打开缓存信息。查看POJO这一行,如果右侧的“Peers”列中显示出其他三个节点的信息,则表明集群配置成功。如果为null或者为空,则表明集群未部署成功。  

7.3 问题3:关于ehcache.xml配置方案二 

       1、检测hostname 属性

            执行 hostname -i 命令 如果返回的结果127.0.0.1或者其他的ip地址而不是本地真实的IP,那么则需要修改 /etc/hosts 文件, 添加本地ip地址和机器名的映射,否则也会导致同步无法成功

       2、查看jvm启动参数中是否有 -Djava.rmi.server.hostname=127.0.0.1

             通过ps -ef|grep java 查看启动的进程是否有 -Djava.rmi.server.hostname 这样的参数配置 如果有则需要删除掉,否则也会导致同步无法成功。

       3、端口的开放

          RMI实际上是分开两套端口的,一个端口(比如说wiki上指定的40000),用于列出绑定信息的端口;另一个端口是真实绑定用于远程访问的通讯的端口,而通常情况这个端口是RMI随机产生端口通讯,若是用户环境需要配置的防火墙策略,而每次重启smartbi 通讯端口都是随机的,这时候就会出现端口通讯问题。

           netstat -an|grep 192.168.199.115 查看本机与集群服务器通讯的端口;

           这个是只开放40000端口时,smartbi后台报缓存同步连接超时,如下:

为了避免每次RMI随机产生端口通讯,可以在方案二中的ehcache.xml 文件增加一个参数remoteObjectPort=41001(添加多一个属性remoteObjectPort等于指定了原本RMI随机产生端口),其他配置信息和原本的方案二配置一样,体如下:

  这样设置后,进入系统监控--》缓存界面的peer信息上可以看到,对应的节点通讯端口已经是固定的了,而不是随机的。

 

7.2 问题4:集群缓存同步慢导致系统很慢甚至登陆不进去

     有时候部署集群后,系统启动后登陆进去都非常缓慢(进入系统需要等待很久一直卡在登陆界面,甚至进不去系统,网页直接崩溃),看线程会发现大家都在等待缓存同步,这时候导致大家都在等待,此时可以考虑把缓存改成异步的。

查找name为Internal_Object_CACHE的cache配置,将replicateAsynchronously=true。