这里使用四台服务器bisvr01, bisvr02, bisvr03, bisvr04组成obiee + oas集群。四台服务器使用Windows Server系统,且另有一台服务器作为域控制器,服务器都加入了域。
1. OAS主要部件包括HTTP Server(Apache)和Oracle Container for Java,Apache通过oc4j module实现负载平衡,将请求发送到多个oc4j。多个HTTP Server上可以使用外部硬件负载平衡设备。
安装OAS时,选择高级安装,一路Next。注意在选择安装项目时,要部署Presentation Services,必须要安装OHS,等安装好OBIEE后如果不需要使用OHS,停止OHS即可。安装过程中还需要指定OC4J的名称,默认名称是home,OBIEE安装时需要名为home的OC4J实例。
建立集群最简便的方法是使用动态Multicast,选中“将此OC4J实例配置为Oracle Application Server集群拓扑的一部分”,然后指定Discovery地址,所有的OAS服务器均需要同样的地址和端口。
为了方便管理,建议在一个实例上安装EM,可以在安装OAS安装时,选择安装Application Server Control。
安装完成后,可以在Application Server Control中看到所有加入集群的实例。
另外,所有的OC4J实例须在同一个组中,默认情况下,home实例加入default_group。
前面说过Apache通过oc4j module实现负载平衡。使用文本编辑器打开<OAS目录>\Apache\Apache\conf\mod_oc4j.conf,可以改变默认的负载平衡的方法,在其中加入:
LoadModule oc4j_module modules/ApacheModuleOc4j.dll <IfModule mod_oc4j.c> Oc4jSelectMethod roundrobin //负载平衡的方法,推荐使用roundrobin:weighted </IfModule> |
2. 完成上述配置后,OHS接受http请求后,通过负载平衡,将请求导向其中某个OC4J实例。通过应用级集群,多个OC4J实例间可以交换会话信息。
要配置应用集群,用文本编辑器打开<OAS目录>\j2ee\home\config\application.xml,加入:
<orion-application … > ………… <cluster allow-colocation="false" write-quota="3"> // write-quota表示集群内其它实例的数量,比如有4个实例,此值为3 <replication-policy trigger="onRequestEnd" scope="allAttributes" /> //replication方式 <protocol> <multicast ip="230.230.0.1" port="45566" bind-addr="192.168.1.1" /> //replication的IP和端口,所有实例使用相同值。bind-addr是绑定的IP地址,如果服务器上有多个网卡,每个网卡使用不同的IP,选择一个作为绑带IP </protocol> </cluster> ………… </orion-application> |
修改application.xml后,部署在OC4J中所有的应用程序都加入到集群中。当然也可以只选择单个应用程序加入集群。
另外,Apache的默认配置使用了机器名做链接。比如你的OAS服务器IP是192.168.1.1,加入了bidw.MyCompany.com的域,那么通过IP访问http://192.168.1.1/em会自动转为http:// ServerName.bidw.MyCompany.com/em,没有使用内部DNS的机器访问OAS会产生麻烦。所以用文本编辑器打开<OAS目录>\Apache\Apache\conf\httpd.conf,查找“ServerName”,将“ServerName”后的值改成服务器IP地址。
至此,OAS的配置已经完成。
3. 然后分别在每台服务器上安装OBIEE,安装时选择高级安装。如果已正确配置好应用集群,可看到部署到OAS的应用程序已启用集群,如下图中的analytics。
要检验apache的负载平衡是否生效,可访问em,正常境况下一个集群中只有一个em启用。如图中,bisvr01上的em是启用的,如果通过http://bisvr03/em/也能访问成果,说明bisvr03上的OHS将请求导向正确的OC4J实例。
要检验OC4J应用集群是否生效,可以在与一个实例的web应用程序通讯时,停止此OC4J实例上的应用程序。这时应用集群内其他OC4J实例会复制session信息,接替客户端请求,用户通过浏览器可以继续访问应用程序,感觉不到任何异常。
4. 接下来的步骤是要配置OBIEE集群,先停止OBIEE所有的服务。因为集群内的服务需要共享资源的权限,所以集群内相关服务的运行帐户都必须是域账户,而非本地账户。如果在安装时没有指定帐户,需要修改OBIEE服务的运行帐户。像下图中那样。
这里我图方便直接将所有的服务都使用了DWBI域的管理员账户,出于安全性,建议另建账户。
在其中一台服务器上建立一个名为OBI_Share的共享目录。确保所有服务器上的OBIEE运行帐户能访问此目录。然后在此目录下建立“Cache”、“Prst_Catalog”、“Repository”和“Sch_Script”目录。
5. BI Server的工作是管理Repository,将其他组件的数据请求转换为数据查询,缓存查询结果。在一个集群中最多只能有16个节点,其中需要有一个主节点。
BI Server节点除了有本地缓存外,还需共享缓存存储空间,在这里,指定共享的OBI_Share\Cache目录为共享缓存空间,所有节点都需要能读写此共享目录。
BI Server节点间需要使用公用的Repository。开发人员通过Administrator Tool连接到主节点,在线修改Repository后,主BI Server将修改数据写入的共享的Repository发布目录中,其他节点读取变更,然后同步本地的Repository。这里使用的共享发布区是OBI_Share\Repository目录。确保主节点的运行帐户有读写权限,其他节点有读权限。
用文本编辑器打开OracleBI\server\Config\NQSConfig.INI,查找并修改下述内容:
# SERVER_HOSTNAME_OR_IP_ADDRESSES = "ALLNICS"; //在此行前加#号 CLUSTER_PARTICIPANT = YES; GLOBAL_CACHE_STORAGE_PATH = "\\192.168.1.1\OBI_Share\Cache" 5000 MB; //共享缓存目录,容量可以根据需要修改 REPOSITORY_PUBLISHING_DIRECTORY = "\\192.168.1.1\OBI_Share\Repository"; //共享Repository发布目录 REQUIRE_PUBLISHING_DIRECTORY = YES; |
集群中所有的节点必须使用同样的Repository,假设要使用文件名为paint.rpd的Repository,需要将此文件复制到所有节点的OracleBI\server\Repository目录,然后修改配置,使用paint.rpd。
6. 建立BI Server集群后,其他组件需要通过Cluster Controller访问BI Server集群,Cluster Controller将请求转发到集群内的节点,例如下图中Presentation Services访问BI Server集群那样。
在一个集群中,只有能有2个Cluster Controller,而且不同于其他组件的Active-Active模式,Cluster Controller使用Active-Pasive模式。既在某一时刻,只激活一个Cluster Controller实例,另一个Cluster Controller实例处于待命状态。只有当主Cluster Controller出现故障或无法启动,才激活次Cluster Controller。
用文本编辑器打开OracleBI\server\Config\NQClusterConfig.INI,查找并修改下述内容:
ENABLE_CONTROLLER = YES; PRIMARY_CONTROLLER = "bisvr01"; //主Cluster Controller服务器名称,注意不要使用全名 SECONDARY_CONTROLLER = "bisvr02"; //次Cluster Controller服务器名称,注意不要使用全名 SERVERS = "bisvr01", "bisvr02", “bisvr03”, “bisvr04”; //参与集群的服务器名称,用逗号隔开 MASTER_SERVER = "bisvr01"; //主BI Server服务器名称 |
在修改主、次Cluster Controller节点的配置文件后,就可以启动Oracle BI Cluster Controller服务和每个节点的Oracle BI Server了。
7. 因为Presentation Services和Administrator Tool需要使用ODBC数据源连接到BI Server,所以需要修改Presentation Services节点和安装有Administrator Tool客户端的ODBC配置。如下图:
8. Presentation Services通过Cluster Controller访问Scheduler和BI Server集群,并且使用负载平衡方法与Javahost集群通讯,所有的Presentation Services实例必须使用共享的Catalog。
用文本编辑器打开OracleBIData\web\config\instanceconfig.xml,查找并修改下述内容:
<ServerInstance> ………… <CatalogPath>\\192.168.1.1\OBI_Share\Prst_Catalog</CatalogPath> //共享Catalog目录 <Catalog> <AccountIndexRefreshSecs>120</AccountIndexRefreshSecs> <AccountCacheTimeoutSecs>180</AccountCacheTimeoutSecs> <CacheTimeoutSecs>120</CacheTimeoutSecs> <CacheCleanupSecs>600</CacheCleanupSecs> <PrivilegeCacheTimeoutSecs>180</PrivilegeCacheTimeoutSecs> </Catalog> ………… <JavaHostProxy> <Hosts> <Host address="bisvr01" port="9810" /> //JavaHost服务器名称和端口 <Host address="bisvr02" port="9810" /> //JavaHost服务器名称和端口 </Hosts> </JavaHostProxy> ………… </ServerInstance> |
9. OBIEE安装时将Java Servlet部署到OC4J,analytics将请求转发到Presentation Services。可以使用平衡负载将请求转发到多实例集群。
用文本编辑器打开<OAS目录>\j2ee\home\applications\analytics\analytics\WEB-INF\web.xml。将下面的内容:
<init-param> <param-name>oracle.bi.presentation.sawserver.Host</param-name> <param-value>localhost</param-value> </init-param> <init-param> <param-name>oracle.bi.presentation.sawserver.Port</param-name> <param-value>9710</param-value> </init-param> |
替换为:
<init-param> <param-name>oracle.bi.presentation.sawservers</param-name> <param-value>bisvr01:9710;bisvr02:9710;bisvr03:9710;bisvr04:9710</param-value> //Presentation Services服务器名和端口 </init-param> |
保存后,将web.xml复制到OracleBI\web\app\WEB-INF\,覆盖原文件。
重启OAS ProcessManager。
如果BI Server、Javahost、Presentation、Cluster Controller、OAS ProcessManager能正常启动就没问题了。至此,OBIEE主要的几个部件集群配置已完成,下图是集群环境的构架:
下一步就是Scheduler、Publisher、Disconnected Aanlytics的配置工作。