Skip to main content

Hi,

We current have two middleware servers (1 master and 1 salve) and oracle database in the primary site. 

Our goal is to stand up a DR site so in case everything is down in primary site, we can fail over to DR without data loss, and with minimum or no downtime. 

We have enabled Data Guard between primary and DR site, so now there is a standby database (read only) database in DR. Our next step is to stand up two middleware servers (1 master and 1 slave) in DR site. 

Before we configure the two middleware servers in DR, we first shutdown IFS servers and services on the middleware server in Primary and switch over the oracle database which will make Primary as Standby, and Standby as Primary.  Then we configure the two middleware server (Master (AdminServer) and Slave) . At this point, DR site should be fully functional. 

Then we will shutdown IFS servers and services on the middleware server in DR and switch over the oracle database back to the Primary. 

So in case failover happened, the standby database will become primary, and we just need to start the IFS servers and services on the middleware server in DR. 

 

Can you please confirm this approach is workable?

 

Hi @junpei ,

You will need to reconfigure the primary site MWS instance once you setup the DR and and do the switch over from DR to Primary in order to update the endpoints and certificate wallet that gets stored in the database. If you are using the same URL for the DR and Primary and handle the name resolution in the network via DNS this wouldn’t matter much but if the URL’s are different, this would be a must do.

Cheers.
Thanks


Hi @junpei ,

You will need to reconfigure the primary site MWS instance once you setup the DR and and do the switch over from DR to Primary in order to update the endpoints and certificate wallet that gets stored in the database. If you are using the same URL for the DR and Primary and handle the name resolution in the network via DNS this wouldn’t matter much but if the URL’s are different, this would be a must do.

Cheers.
Thanks

 

thank Sajith.

Do i need to stop all server before reconfigure the primary site mws instance?


BTW, this is IFS9 on prem. 

We just installed DR site MWS. When opening IFS Enterprise Explorer, we got the following error. 

 

PLATFORM VERSION INFO
Windows : 6.3.9600.0 (Win32NT)
Common Language Runtime : 4.0.30319.42000
System.Deployment.dll : 4.8.4290.0 built by: NET48REL1LAST_B
clr.dll : 4.8.4395.0 built by: NET48REL1LAST_B
dfdll.dll : 4.8.4290.0 built by: NET48REL1LAST_B
dfshim.dll : 6.3.9600.16384 (winblue_rtm.130821-1623)

SOURCES
Deployment url : http://oci-ifsmwt1-iad.monolithicpower.com:58080/client/runtime/Ifs.Fnd.Explorer.application
Deployment Provider url : http://noserver/%20%20-%20ERROR%20-%20NO%20DEPLOYMENT%20URL%20PROVIDED%20-%20Please%20sign%20the%20deployment%20using%20F1Mage.exe/client/runtime/Ifs.Fnd.Explorer.application

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of http://oci-ifsmwt1-iad.monolithicpower.com:58080/client/runtime/Ifs.Fnd.Explorer.application resulted in exception. Following failure messages were detected:
+ Downloading http://noserver/ - ERROR - NO DEPLOYMENT URL PROVIDED - Please sign the deployment using F1Mage.exe/client/runtime/Ifs.Fnd.Explorer.application did not succeed.
+ The remote name could not be resolved: 'noserver'

COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.

WARNINGS
There were no warnings during this operation.

OPERATION PROGRESS STATUS
* 3/28/2023 5:08:54 PM] : Activation of http://oci-ifsmwt1-iad.monolithicpower.com:58080/client/runtime/Ifs.Fnd.Explorer.application has started.

ERROR DETAILS
Following errors were detected during this operation.
* 3/28/2023 5:08:56 PM] System.Deployment.Application.DeploymentDownloadException (Unknown subtype)
- Downloading http://noserver/ - ERROR - NO DEPLOYMENT URL PROVIDED - Please sign the deployment using F1Mage.exe/client/runtime/Ifs.Fnd.Explorer.application did not succeed.
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState, X509Certificate2 clientCertificate)
at System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirect(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
at System.Deployment.Application.DownloadManager.FollowDeploymentProviderUri(SubscriptionStore subStore, AssemblyManifest& deployment, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options)
at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl, Uri& deploymentUri)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
--- Inner Exception ---
System.Net.WebException
- The remote name could not be resolved: 'noserver'
- Source: System
- Stack trace:
at System.Net.HttpWebRequest.GetResponse()
at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)

COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.

 


HI @junpei ,

The error suggests that the deployment manifest has not been signed by running the F1Mage.exe which can be found in the client runtime folder after the installation. This is a mandatory step in Apps9. 

On the previous question, you don’t need to manually stop the manager servers. When you run the reconfiguration, it should restart the main servers as necessary. 

 

Cheers


Hi @junpei,

You need to think of deploying the client and server part of the deliveries (omitting database part) on the standby MW server as well.


As an optional configuration solution you can extend your primary MT cluster to also have two active servers in the secondary site. Then configure your jdbc connection strings with failover. It will then connect automatically to the secondary DB if the primary is down. The you don’t have to think of the manual failover step of  MT. You will need a external loadbalancer configured with HA as well.

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=OFF)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=ifsapp-db1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=ifsapp-db2)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ifspdb)))


Hi @junpei,

You need to think of deploying the client and server part of the deliveries (omitting database part) on the standby MW server as well.

Thank you 


As an optional configuration solution you can extend your primary MT cluster to also have two active servers in the secondary site. Then configure your jdbc connection strings with failover. It will then connect automatically to the secondary DB if the primary is down. The you don’t have to think of the manual failover step of  MT. You will need a external loadbalancer configured with HA as well.

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=OFF)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=ifsapp-db1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=ifsapp-db2)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ifspdb)))

Thank you @hhanse 

I think the problem we have is that oracle database is on OCI, and Primary and DR is in different region which result the service name are different as 

Primary:  testpdb1.ifstestdb.vcnsj.oraclevcn.com

Standby: testpdb1.ifstestdb.iadvcn.oraclevcn.com

Any idea how to resolve this?


FYI - Google is spelled with two ‘o’  😎

JDBC is very generic - you can have different service names if you need. e.g.

"jdbc:oracle:thin:@" +

 "(DESCRIPTION_LIST=" +

 "(LOAD_BALANCE=off)" +

 "(FAILOVER=on)" +

 "(DESCRIPTION=" +

 "(CONNECT_TIMEOUT=3)(RETRY_COUNT=3)" +

 "(ADDRESS_LIST=" +

 "(LOAD_BALANCE=on)" +

 "(ADDRESS=(PROTOCOL=TCP)(HOST=prmy-scan)(PORT=1521)))" +

 "(CONNECT_DATA=(SERVICE_NAME=oltpworkload.x.y)))" +

 "(DESCRIPTION=" +

 "(ADDRESS_LIST=" +

 "(LOAD_BALANCE=on)" +

 "(ADDRESS=(PROTOCOL=TCP)(HOST= stby-scan)(PORT=1521)))" +

 "(CONNECT_DATA=(SERVICE_NAME=oltpworkload.x.z))))";

The jdbc strings are take out of context, please verify (google) the correctness of them yourself. e.g. the latter has and timeouts/retries and loadbalnce = on - which i thing might be wrong.

Maybe OCI support might give you the jdbc url to use for their DG solution?


FYI - Google is spelled with two ‘o’  😎

JDBC is very generic - you can have different service names if you need. e.g.

"jdbc:oracle:thin:@" +

 "(DESCRIPTION_LIST=" +

 "(LOAD_BALANCE=off)" +

 "(FAILOVER=on)" +

 "(DESCRIPTION=" +

 "(CONNECT_TIMEOUT=3)(RETRY_COUNT=3)" +

 "(ADDRESS_LIST=" +

 "(LOAD_BALANCE=on)" +

 "(ADDRESS=(PROTOCOL=TCP)(HOST=prmy-scan)(PORT=1521)))" +

 "(CONNECT_DATA=(SERVICE_NAME=oltpworkload.x.y)))" +

 "(DESCRIPTION=" +

 "(ADDRESS_LIST=" +

 "(LOAD_BALANCE=on)" +

 "(ADDRESS=(PROTOCOL=TCP)(HOST= stby-scan)(PORT=1521)))" +

 "(CONNECT_DATA=(SERVICE_NAME=oltpworkload.x.z))))";

The jdbc strings are take out of context, please verify (google) the correctness of them yourself. e.g. the latter has and timeouts/retries and loadbalnce = on - which i thing might be wrong.

Maybe OCI support might give you the jdbc url to use for their DG solution?

 

Thank you @hhanse  

I will confirm the jdbc url with OCI support.

I would assume we just need to put the jdbc URL in the advance mode. Am i correct?

 


Reply