Oracle® Retail Bulk Data Integration Installation Guide Release 16.0.21 E87331-01 |
|
Previous |
Next |
Modern business application requirements are classified by the abilities that the system must provide. This list of abilities such as availability, scalability, reliability, audit ability, recoverability, portability, manageability, and maintainability determine the success or failure of a business.
With a clustered system many of these business requirement abilities gets addressed without having to do lots of development work within the business application. Clustering directly addresses availability, scalability, recoverability requirements which are very attractive to a business. In reality though it is a tradeoff, clustered system increases complexity, is normally more difficult to manage and secure, so one should evaluate the pros and cons before deciding to use clustering.
Oracle provides many clustering solutions and options; those relevant to BDI are Oracle database cluster (RAC) and WebLogic Server clusters.
BDI needs to be scaled horizontally to handle large number of concurrent jobs. Single instances of Scheduler and Process Flow can be used since they are not resource intensive. Job Admin can be very resource intensive. To handle large number of concurrent jobs, multiple instances of Job Admin can be used to distribute jobs. WebLogic Server cluster that consists of multiple managed server instances provide horizontal scalability for Job Admin.
Issue
The "System Logs" tab in Scheduler, Process Flow, and Job Admin UIs show only logs from the server that UI is connected to.
Solution
Use a common log directory for each of the BDI components.
BDI components use the following directory structure for creating log files.
$DOMAIN_HOME/logs/<server name>/<app name>
Example
$DOMAIN_HOME/logs/server1/com.oracle.retail.integration_bdi-rms-job-admin_war_16.0.21
$DOMAIN_HOME/logs/server2/com.oracle.retail.integration_bdi-rms-job-admin_war_16.0.21
Create a common log directory (e.g. /home/logs/jobadmin) for each BDI application.
Create symbolic links to the common log directory for each server using the below command from $DOMAIN_HOME/logs directory.
ln -s /home/logs/jobadmin server1/com.oracle.retail.integration_bdi-rms-job-admin_war_16.0.21 ln -s /home/logs/jobadmin server2/com.oracle.retail.integration_bdi-rms-job-admin_war_16.0.21
If the directory $DOMAIN_HOME/logs/<server>/<app> already exists, it needs to be deleted before symbolic link is created.
App needs to be restarted after symbolic link is created.
When WebLogic managed servers are in different machines a shared network disk has to be used.
Issue
When log level is updated through UI or REST end point, it updates the log level only on the server it is connected to.
Solution
Log level needs to be updated through the URL of all the nodes in the cluster using UI or REST endpoint.
Example
http://server1:port1/bdi-rms-batch-job-admin/resources/system-setting/system-logs
http://server2:port2/bdi-rms-batch-job-admin/ resources/system-setting/system-logs
Issue
When system options are created/updated/deleted using UI or REST end point, the changes are reflected only on the server that client is connected to.
Solution
The reset-cache REST endpoint needs to be invoked on the other nodes in the cluster for that application in BDI.
Example
http://server1:port1/bdi-rms-batch-job-admin/ resources/system-setting/reset-cache
Use curl command to reset cache as:
curl --user userId:password -i -X POST -H "Cot-Type:application.json" http://server1:port1/bdi-rms-batch-job-admin/resources/system-setting/reset-cache
Issue
When system credentials are created/updated/deleted using REST endpoint, the credentials are created/updated/deleted only on the server that client is connected to.
Solution
The REST endpoint that creates/updates/deletes credentials need to be invoked on all the nodes in the cluster for that application in BDI.
Example
http://server1:port1/bdi-rms-batch-job-admin/resources /system-setting/system-credentials http://server2:port2/bdi-rms-batch-job-admin/resources /system-setting/system-credentials Use curl command to create credentials on other nodes in the cluster as: curl --user userId:password -i -X PUT -H "Content-Type:application/json" http://server1:port1/bdi-rms-batch-job-admin/resources/system-setting/system-credentials -d '{"userAlias":"rmsappJobAdminBaseUrlUserAlias", "userName":"rmsjobadmin" , "userPassword":"xyzxyz"}'
Use curl command to update credentials on other nodes in the cluster as:
curl --user userId:password -i -X POST -H "Content-Type:application/json" http://server1:port1/bdi-rms-batch-job-admin/resources/system-setting/system-credentials -d '{"userAlias":" reimappJobAdminBaseUrlUserAlias", "userName":"reimjobadmin" , "userPassword":"wwwqqqq"}'
Use curl command to delete credentials on other nodes in the cluster as:
curl --user userId:password -i -X DELETE -H "Content-Type:application/json" http://server1:port1/bdi-rms-batch-job-admin/resources/system-setting/system-credentials -d '{"key":"rmsappJobAdminBaseUrl"}'
Perform the following procedure to cluster the Job Scheduler Data Source:
Specify the data source for schedule timers in the Admin Console
Login to Admin Console
Click Environment ? Clusters
Click on the cluster name
Click Scheduling
Click Lock & Edit (For Production Mode only)
Select BatchInfraDataSource for the Data Source For Job Scheduler field
g) Save
2. WebLogic EJB JAR XML
Update the weblogic-ejb-jar.xml in WEB-INF folder of the bdi-scheduler-ui-<version>.war in <bdi-home>/dist folder with the contents shown (The entry in red is the change from the existing contents of the file)
Instructions to update
cd dist
jar xf bdi-scheduler-ui-<version>.war WEB-INF/weblogic-ejb-jar.xml
Update the WEB-INF/weblogic-ejb-jar.xml with the contents below
jar uf bdi-scheduler-ui-<version>.war WEB-INF/weblogic-ejb-jar.xml
Delete dist/WEB-INF folder
Deploy the scheduler application
<weblogic-ejb-jar xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <security-role-assignment> <role-name>AdminRole</role-name> <principal-name>BdiSchedulerAdminGroup</principal-name> </security-role-assignment> <security-role-assignment> <role-name>OperatorRole</role-name> <principal-name>BdiSchedulerOperatorGroup</principal-name> </security-role-assignment> <security-role-assignment> <role-name>MonitorRole</role-name> <principal-name>BdiSchedulerMonitorGroup</principal-name> </security-role-assignment> <timer-implementation>Clustered</timer-implementation> </weblogic-ejb-jar>