注意!
如果您正在使用的是 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 所有请求的转发。 |
4、部署和配置Smartbi服务器
在各个机器上分别部署和配置 Smartbi 服务器,具体步骤如下。
- 在指定的服务器上安装 Tomcat 应用服务器。
- 修改<Tomcat>\conf\server.xml文件。查找<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">标签,在其中加上jvmRoute="tomcat1"属性。注意:每个服务器上的 tomcat 都要修改,并且必须保证每个Server都使用不相同的值,不允许多个服务器使用相同的 jvmRoute 值。
- 配置ehcache.xml :
方案一:修改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。
注:建议使用方案一( IP 广播(UDP)可到达的使用方案一),如何测试是否广播可达,请参考wiki文档:分组广播测试
为避免每次替换war包需要重复此操作,可在smartbi.properties文件中配置增加smartbi.ehcacheFileDir路径(如放在tomcat/bin目录下,可配置为smartbi.ehcacheFileDir=. ),将ehcache.xml放在相应路径下。 - 接下来几步部署smartbi.war,更详细的步骤可以参考“在各种应用服务器上手工部署”文档中部署到 tomcat 章节。
- 将修改后的 smartbi.war 包复制到每个<Tomcat>\webapps 目录下。
- 运行<Tomcat>\bin\startup.bat,启动 Tomcat 服务器。
- 分别登录smartbi 配置页面,设置知识库信息,上传License文件,完成系统配置。注意:所有服务器节点必须连同一个知识库,这样才能在连接到任一节点时都看到相同的资源。
- 重启应用。
- 至此一个节点部署完毕,重复上述步骤,再部署其它节点。
5、配置负载均衡服务器
在集群环境中的一台机器上部署负载均衡包,由其将请求分发到各个节点上。
- 在一台服务器上安装 Tomcat 应用服务器。
- 将代理分发包 smartbi_proxy.war 重命名为 smartbi.war,这里的名称必须与 smartbi 真实的访问上下文路径一致。
- 修改代理分发包中 WEB-INF\web.xml 配置文件,找到如下标记段<init-param><param-name>url</param-name><param-value>http://localhost:8080/smartbi/</param-value></init-param>,节点中的值为各个 smartbi 服务器的访问地址,多个服务器地址以逗号分隔。
- 将修改后的代理分发包 smartbi.war 复制到第 1 步安装的<Tomcat>\webapps 目录下。
- 运行<Tomcat>\bin\startup.bat,启动负载均衡服务器。
6、通过代理访问Smartbi
- 重启所有 Server 上的 Smartbi 应用。
- 单独访问每一个 Smartbi 服务器,确认其可以正常访问。另外请访问每一个 Smartbi 服务器上的 listcaches.jsp 页面,查看其中 Peers 列节点同步信息是否正确,该页面地址:http://192.168.1.8:8001/smartbi/vision/monitor/listcaches.jsp
- 访问代理分发服务器 http://192.168.1.8:8003/smartbi,此时应该显示 Smartbi 登录页面,与单独访问某个节点一样。
- 代理分发的原理是,按次序分发。假如有两个服务节点,第一个用户登录被分发到服务器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)确定缓存正常同步,确定各个节点的服务器时间是否一致(要求各个服务器的时间必须同步,只要打印了截图上的日志信息,表示两个服务器之间的时间相差有点大,不太推荐 )
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配置方案二
执行 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。