6 Configuring High Availability for ODI on Oracle Cloud Marketplace
This chapter helps you to configure High Availability (HA) topology for Oracle Data Integrator on Oracle Cloud Marketplace. The sections in this chapter outline the concepts and steps that are important for designing high availability deployment.
It contains the following sections:
6.1 Prerequisites for setting up 2-Node Cluster for High Availability
Go through the following prerequisites before setting up 2-Node Cluster for High Availability. Make sure you have the following before setting up 2-Node Cluster for High Availability:
- OCI Virtual Cloud Network (VCN) setup that supports communication with all the compute instances created in its subnet.
- All the communication channels are through private IPs.
- External communication established outside the subnet are through public IPs.
- Ably configured for Ingress/Egress. For more information, see Enabling Incoming Ports and Services.
- Autonomous Transaction Processing instance having the following configuration so as to leverage auto scaling and access to the
DBMS_CLOUD
package:- Workload type: Transaction Processing
- Deployment type: Shared Infrastructure
- Network Access: Allow secure access from everywhere
- ADB or DBaaS instance created in the same subnet and VCN as described in Step 1.
- ODI compute instance 1 created in the same subnet and VCN as described in Step 1.
- ODI compute instance 2 created in the same subnet and VCN as described in Step 1 but with a different availability domain.
- Firewall configurations in all the compute instances that are part of the cluster. For more information, see Firewall Rules.
6.2 Creating and configuring the ODI Domain
This section contains the following topics:
6.2.2 Setting up the Administration Server on Node 1
6.2.3 Setting up the ODI agent on Node 1
- Start ODI Studio.
- Navigate to the Topology tab.
- Define a new agent as follows:
- Name: Specify
OracleDIAgent
as the agent name. - Host: Enter the private IP address of the ODI node (Node1).
- Port: Specify the port defined for the managed server “
ODI_server1
” (15101 / 8001).
- Name: Specify
- Save the configuration.
- Define the corresponding logical agent and save it.
- In the web browser, using the left side panel of the Weblogic Server, navigate to
Environments > Servers
. - On the right side of the screen, select Control and then select ODI_server1.
- Click Start.
- In the Server Life Cycle Assistant screen, click Yes.
- Keep refreshing the page until you see a “RUNNING” status for
ODI_server1
. - Verify the deployment. Navigate to the Deployments screen using the hierarchy pane on the left side of your screen.
- Test the agent. Using the left side panel of the WebLogic Server, navigate to
Environments > Servers
. - Drill down on Server 1 (
ODI_server1
). - On the right side of the screen, select Deployments.
- Drill down on the agent (
oraclediagent
). - On the right side of the screen, select Testing.
- Expand the
oraclediagent
node. - Click the URL available in the Test Point field.
- Save it for future reference.
- Go back to ODI Studio.
- Click Test. You should receive a “Successful test” message.
- Log out from ODI Studio.
6.3 Configuring the Load Balancer
Load balancer created can either be private or public. For more information on load balancers, refer to Overview of Load Balancing. Persistence should not be enabled on the load balancer.
Follow the below steps to create and configure the load balancer:
- Open the navigation menu. Under the Core Infrastructure group, go to Networking and click Load Balancers.
- Choose a Compartment you have permission to work in under Scope, and then click Create Load Balancer.
- Specify the attributes of the load balancer as follows:
- Load Balancer Name: Specify a name for your load balancer.
- Choose Visibility Type: Select Private.
- Choose the Maximum Total Bandwidth: Select Medium.
- Choose Networking: Select the same VCN and subnet where your ODI nodes are located.
- Click Next located at the left bottom corner of the screen.
- Click Add Backends to select resources from a list of available Compute instances.
- Select the two ODI nodes and click Add Selected Backends located at the bottom of the screen.
- Change the port of both nodes to point to the ODI Managed Servers “ODI_server1” and “ODI_server2” (8001 / 15101).
- In the Specify Health Check Policy section, provide the following information:
- Port: Provide the ODI Managed Servers port (8001/15101).
- URL Path (URl): Specify
/oraclediagent/
.
- Click Next located at the left bottom corner of the screen.
- In the Configure Listener section, provide the following information:
- Specify the type of traffic your listener handles: Select HTTP.
- Specify the port your listener monitors for ingress traffic: Specify 80.
- Click Show Advanced Options located at the bottom of the screen to access additional options.
- Specify 3600 in the Specify the Maximum Timeout in Seconds field.
- Click Submit located at the left bottom corner of the screen. This starts the provisioning process for the load balancer.
- Once the Load Balancer is provisioned, it will be shown as “Active” in the screen. Make a note of the private IP Address.
- At this time, start ODI Studio (in any node) and navigate to the Topology tab.
- Modify the agent “OracleDIAgent” as follows:
- Host: Specify the Load Balancer Private IP Address.
- Port: Specify 80.
- Click Test. The ODI Information dialog box should say, "Agent Test Successful".
6.3.1 Updating the Load Balancer Health Check
- Drill down in the Load Balancer name.
- Click the Backends hyperlink available on the left panel.
- Drill down in the backend set name.
- Click the Backends hyperlink available on the left panel.
- Click Update Health Check located at the top of the screen.
- Modify the check information and click Save Changes located at the bottom of the screen. You will receive a message about the information being accepted.
- Test the ODI agent multiple times.
6.4 Enabling Incoming Ports and Services
For establishing communication between the instances, you need to ensure that the underlying Security List (associated with VCN), has all the IP protocols enabled.
Note:
All the instances participating either directly or indirectly should be following the below ingress and egress rules.Table 6-1 Ingress and Egress Rules Table
Stateless | Source | IP Protocol | Source Port Range | Destination Port Range | Type and Code | Allows | Comments |
---|---|---|---|---|---|---|---|
No |
0.0.0.0/0 |
TCP |
All |
22 |
Nil |
TCP traffic for ports: 22 SSH Remote Login Protocol |
For SSH communication, we need to open port # 22. |
No |
0.0.0.0/0 |
ICMP |
Nil |
Nil |
3,4 |
ICMP traffic for: 3, 4 Destination Unreachable: Fragmentation Needed and Don't Fragment was Set |
ICMP is a supporting protocol and at the minimum, ingress rules should allow for type 3, 4 and 8. For more information on ICMP protocols, refer to the IANA list. |
No |
10.0.0.0/16 |
ICMP |
Nil |
Nil |
3 |
ICMP traffic for: 3 Destination Unreachable |
ICMP is a supporting protocol and at the minimum, ingress rules should allow for type 3, 4 and 8. For more information on ICMP protocols, refer to the IANA list. |
No |
0.0.0.0/0 |
ICMP |
Nil |
Nil |
8 |
ICMP traffic for: 8 Echo |
ICMP is a supporting protocol and at the minimum, ingress rules should allow for type 3, 4 and 8. For more information on ICMP protocols, refer to theIANA list. |
No |
0.0.0.0/0 |
TCP |
All |
1521 |
Nil |
TCP traffic for ports: 1521 |
Port 1521 is for database traffic. |
No |
0.0.0.0/0 |
TCP |
All |
443 |
Nil |
TCP traffic for ports: 443 HTTPS |
Port 443 is the SSL traffic. |
No |
0.0.0.0/0 |
TCP |
All |
7001 |
Nil |
TCP traffic for ports: 7001 |
WLS Admin Server communication port. |
No |
0.0.0.0/0 |
TCP |
All |
8001 |
Nil |
TCP traffic for ports : 8001 |
Managed Server communication port for all nodes. |
No |
0.0.0.0/0 |
TCP |
All |
5556 |
Nil |
TCP traffic for ports : 5556 |
Node Manager Port in Node1. |
No |
0.0.0.0/0 |
TCP |
All |
5557 |
Nil |
TCP traffic for ports : 5557 |
Node Manager Port in Node2. |
No |
0.0.0.0/0 |
UDP |
All |
7574 |
Nil |
UDP traffic for ports : 7574 |
WLS Cluster port |
No |
0.0.0.0/0 |
TCP |
All |
8095 |
Nil |
TCP traffic for ports : 8095 |
Oracle Coherence port on Node1. |
No |
0.0.0.0/0 |
TCP |
All |
8096 |
Nil |
TCP traffic for ports : 8096 |
Oracle Coherence port on Node2. |
No |
10.0.17.0/24 |
TCP |
All |
8001 |
Nil |
TCP traffic for ports : 8001 |
Oracle ODI Agents both nodes |
No |
0.0.0.0/0 |
TCP |
All |
7 |
Nil |
TCP traffic for ports : 7 ECHO |
Coherence TCP Ring/IP Monitor death detection feature. |
No |
10.0.17.0/24 |
TCP |
All |
80 |
Nil |
TCP traffic for ports : 80 |
OCI Load balancer |
6.5 Firewall Rules
Even after setting the ingress and egress rules, in some cases the instances may not allow the incoming traffic. This is because of the firewall associated with the instance. Ensure to enable all the communication ports by configuring the firewall.
The following is an example of firewall commands for the ingress/egress ports (that has enabled port communication) :
Firewall command to enable port communication between the nodes (run on both machines):
sudo firewall-cmd --permanent --new-service=odiwls
sudo firewall-cmd --permanent --service=odiwls --set-description="ODI WLS server"
sudo firewall-cmd --permanent --service=odiwls --add-port=7001/tcp
sudo firewall-cmd --permanent --add-service=odiwls
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --new-service=odimanagedwls
sudo firewall-cmd --permanent --service=odimanagedwls --set-description="ODI WLS Managed Server"
sudo firewall-cmd --permanent --service=odimanagedwls --add-port=8001/tcp
sudo firewall-cmd --permanent --add-service=odimanagedwls
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --new-service=odiwlsnodemgr1
sudo firewall-cmd --permanent --service=odiwlsnodemgr1 --set-description="ODI WLS Node Manager1"
sudo firewall-cmd --permanent --service=odiwlsnodemgr1 --add-port=5556/tcp
sudo firewall-cmd --permanent --add-service=odiwlsnodemgr1
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --new-service=odiwlsnodemgr2
sudo firewall-cmd --permanent --service=odiwlsnodemgr2 --set-description="ODI WLS Node Manager2"
sudo firewall-cmd --permanent --service=odiwlsnodemgr2 --add-port=5557/tcp
sudo firewall-cmd --permanent --add-service=odiwlsnodemgr2
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --new-service=odiwlscluster
sudo firewall-cmd --permanent --service=odiwlscluster --set-description="ODI WLS cluster"
sudo firewall-cmd --permanent --service=odiwlscluster --add-port=7574/udp
sudo firewall-cmd --permanent --add-service=odiwlscluster
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --new-service=odiwlscoherencewk1
sudo firewall-cmd --permanent --service=odiwlscoherencewk1 --set-description="ODI WLS coherence WKA1"
sudo firewall-cmd --permanent --service=odiwlscoherencewk1 --add-port=8095/tcp
sudo firewall-cmd --permanent --add-service=odiwlscoherencewk1
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --new-service=odiwlscoherencewk2
sudo firewall-cmd --permanent --service=odiwlscoherencewk2 --set-description="ODI WLS coherence WKA2"
sudo firewall-cmd --permanent --service=odiwlscoherencewk2 --add-port=8096/tcp
sudo firewall-cmd --permanent --add-service=odiwlscoherencewk2
sudo firewall-cmd --reload
TCP Ring port 32783 – Coherence Cluster
If you run a firewall, you need to configure it to enable the specified addresses and ports. Firewalls are not typically set up between cluster members. If a solution requires the use of a firewall, then ensure the following:
- The cluster port (7574 by default) is open for both UDP and TCP for both multicast and unicast configurations.
- TCP port 7 is open for the Coherence TCP Ring/IP Monitor death detection feature.
- The unicast port range is open for both UDP and TCP traffic. Ensure that the unicast listen port range is explicitly set rather than relying upon a system assigned ephemeral port.
Cluster member unicast ports are automatically assigned from the operating system's available ephemeral port range. This ensures that Coherence cannot accidentally cause port conflicts with other applications. However, if a firewall is required between cluster members (an atypical configuration), then the port must be manually configured.
You can specify the unicast port using the -D arguments as shown below:
-Dcoherence.localport=9000 -Dcoherence.localport.adjust=9200
The coherence.localhost
, coherence.localport
, and coherence.localport.adjust
system properties are used to specify the unicast port and automatic port adjustment settings instead of using the operational override file. The coherence.localport.adjust
value is the upper limit to auto adjust the local ports. In the above example, the port range values used are 9000 and 9200. You can use any other port range.
You need to add the following firewall rule on both the nodes:
sudo firewall-cmd --permanent --new-service=odicoherencecluster
sudo firewall-cmd --permanent --service=odicoherencecluster --set-description="ODI Coherence Cluster TCP Ring"
sudo firewall-cmd --permanent --service=odicoherencecluster --add-port=32783/tcp
sudo firewall-cmd --permanent --add-service=odicoherencecluster
sudo firewall-cmd --reload
TCP Port 7 – Coherence Death Detect
You need to add the following firewall rule on both the nodes:
sudo firewall-cmd --permanent --new-service=odicoherencedeathdetect
sudo firewall-cmd --permanent --service=odicoherencedeathdetect --set-description="ODI Coherence Cluster TCP Ring"
sudo firewall-cmd --permanent --service=odicoherencedeathdetect --add-port=7/tcp
sudo firewall-cmd --permanent --add-service=odicoherencedeathdetect
sudo firewall-cmd –-reload
sudo firewall-cmd --list-all
Load Balancer HTTP Traffic to both nodes
You need to add the following firewall service on both the nodes:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload