Setting up ODI marketplace High Availability

Eloi Lopes
4 min readSep 7, 2020

--

To configure High Availability in ODI from Cloud Marketplace we can use the current documentation that is available here and also this article of oracle’s A-TEAM.

Please read documentation first to be aware what ports, firewall rules or security rules you must be configured. Nevertheless, can be very challenging to set up an high availability environment for ODI.

That’s why I’m writing this post. So, let’s do it.

Initial Setup

  • First, create an ODI Instance from Marketplace, let’s call ODI Node 1 . Here you will configure an autonomous database to store ODI repositories. This instance is running on Availability Domain 1.
  • Create a second ODI instance (make sure that you are choosing the same version) and here you won’t create a new ODI repository but connect to the same ODI repository that you have created before. Let’s call this instance ODI Node 2.This instance is running on Availability Domain 2.

Note: between the creation of the first instance and the second one, wait 20 minutes because in background are being created the repositories.

Oracle Fusion Middleware

Both instances are up and running, now it’s time to setting up the Oracle Fusion Middleware.

To not have a enormous post I decided to create one post/tutorial only for configuration of middleware. Follow all the steps documented here.

Additional Configurations

Before starting Weblogic server we need to perform some additional configurations:

  • Navigate to oracle/user_projects/domains/base_domain/config/fmwconfig, edit the file jps-config.xml and add this:

<property name=”javax.net.ssl.trustStore” value=”/home/opc/wallet_ADWEloi/cwallet.sso”/>

<property name=”oracle.net.authentication_service” value=”TCPS”/>

<property name=”oracle.net.ssl_server_dn_match” value=”false”/>

<property name=”javax.net.ssl.keyStoreType” value=”SSO”/>

<property name=”javax.net.ssl.trustStoreType” value=”SSO”/>

<property name=”javax.net.ssl.keyStore” value=”/home/opc/wallet_ADWEloi/cwallet.sso”/>

Finally, edit the file /u01/oracle/mwh/user_projects/domains/base_domain/nodemanager/nodemanger.properties and change the property SecureListener= false.

Starting Weblogic Server

Starting node manager on ODI Node 1:

  • nohup /home/opc/oracle/user_projects/domains/base_domain/bin ./startNodeManager.sh > /home/opc/StartNodemangerODI_Server1Log.out&
  • Check the log to see if it is running;

Starting Weblogic Admin Server on ODI Node 1:

  • nohup /home/opc/oracle/user_projects/domains/base_domain/bin ./startWebLogic.sh > /home/opc/WeblogicLog.out&

We are using ODI Node 1 as a Weblogic server and ODI instance at same time, that’s why are now starting the Managed Server ODI_server1, before we have started the Admin server.

In case you got an error like this:

Server is running in Development Mode and the System Console to read the password securely from the command line was not found. You need to create the Boot.properties file, more info here.

Pack and unpack the Weblogic domain

On ODI Node 1 — pack the domain

  • /home/opc/oracle/oracle_common/common/bin ./pack.sh -domain=/home/opc/oracle/user_projects/domains/base_domain -template=DomainNode1.jar -template_name=DomainNode1 -managed=true
  • It will generate a jar file(DomainNode1.jar) that is our domain. You must move this file to ODI Node 2.

On ODI Node 2 — unpack the domain

  • § /home/opc/oracle/oracle_common/common/bin ./unpack.sh -domain=/home/opc/oracle/user_projects/domains/base_domain -template=/home/opc/DomainNode1.jar

After done this, my advice is to stop the ODI Node 1 (only the Managed server) by command line or through the admin console.

At this point you only have the Admin server running and both managed servers stopped.

Let’s start the managed servers again but this time in different way including coherence parameters to connect ODI agents to the same coherence cluster.

Starting ODI Node 1:

nohup ./startManagedWebLogic.sh ODI_server1 http://<admin console IP>:7001 -Dtangosol.coherence.localport=8095 -Doracle.odi.coherence.wka1= <IP ODI Node 1> -Doracle.odi.coherence.wka1.port = 8095 -Doracle.odi.coherence.wka2=<IP ODI Node 2> -Doracle.odi.coherence.wka2.port=8096 > /home/opc/StartNodemangeODI_Server1Log.out&

Starting ODI Node 2:

nohup ./startManagedWebLogic.sh ODI_server2 http://<admin console IP>:7001 -Dtangosol.coherence.localport=8096 -Doracle.odi.coherence.wka1 =<IP ODI Node 1> -Doracle.odi.coherence.wka1.port = 8095 -Doracle.odi.coherence.wka2=<IP ODI Node 2> -Doracle.odi.coherence.wka2.port=8096 > /home/opc/StartNodemangeODI_Server2Log.out&

Both servers should be up and running and using coherence.

Configuring OCI Load Balancer

Create OCI Load Balancer, add both instances to Backend configure the load balancer to use port 8001 (the port where odi agents are running) and don’t forget to add “/oraclediagent/” in url path:

Backend configuration
Health Check configuration

Last but not least, change the your ODI agent to point to Load balancer:

If you have any issue with the Load Balancer check you firewall rules or security rules. Otherwise you can reach me out on LinkedIn.

Disclaimer

This disclaimer informs readers that the views, thoughts, and opinions expressed in the text belong solely to the author, and not necessarily to the author’s employer, organization, committee or other group or individual.

--

--

Eloi Lopes

Opinions expressed are solely my own and do not express the views or opinions of my employer Oracle. https://www.linkedin.com/in/eloilopes/