Marcelo Nogueira
Marcelo Nogueira

Reputation: 49

Highly Available Notary Service Setup in Oracle RAC (Corda Enterprise)

Setting up the Notary Service for Oracle RAC (Corda Enterprise).

I need some help configuring Corda Enterprise in Oracle RAC (reference: "Highly Available Notary Service - Setting up the Notary Service": http://docs.corda.r3.com/running-a-notary-cluster/installing-the-notary-service.html).

My Oracle database:

dataSourceProperties = {
    dataSourceClassName = "oracle.jdbc.pool.OracleDataSource"
    dataSource.url = "jdbc:oracle:thin:@xx.xx.xxx.xxx:1521:AAAAAAA"
    dataSource.user = DEVBANCO1
    dataSource.password = Password
}
database = {
    transactionIsolationLevel = READ_COMMITTED
    exportHibernateJMXStatistics = false
    runMigration = false
    schema = DEVBANCO1
}

My "node.conf":

myLegalName="O=Notary 2,L=London,C=GB"
notary {
    validating=false
    serviceLegalName="O=Notary,L=London,C=GB"
}
p2pAddress="notarydlt.corp:10008"
messagingServerAddress = "xx.xxx.xx.xxx:10006"
messagingServerExternal = false
rpcSettings {
    address="xx.xxx.xxx.xxx:10004"
    adminAddress="xx.xxx.xxx.xxx:10038"
}
rpcUsers=[]
dataSourceProperties = {
    dataSourceClassName = "oracle.jdbc.pool.OracleDataSource"
    dataSource.url = "jdbc:oracle:thin:@xx.xx.xxx.xxx:1521:AAAAAAA"
    dataSource.user = DEVBANCO1
    dataSource.password = Password
}
database = {
    transactionIsolationLevel = READ_COMMITTED
    exportHibernateJMXStatistics = false
    runMigration = false
    schema = DEVBANCO1
}
useTestClock = false
enterpriseConfiguration = {
    externalBridge = true
    mutualExclusionConfiguration = {
        on = true
        updateInterval = 20000
        waitInterval = 40000
    }
}
devMode=false
compatibilityZoneURL : "http://xx.xxxx.xxx.xxxx:8080/"
keyStorePassword = "cordacadevpass"
trustStorePassword = "trustpass"

Upvotes: 2

Views: 401

Answers (1)

Joel
Joel

Reputation: 23140

The use of Oracle RAC to create a HA notary has not been tested. In theory, any database that can be configured to have zero data loss can be used (if the DB doesn't guarantee zero data loss, i.e. it is not strongly consistent and/or doesn't have synchronous replication, data may be lost in failover, allowing double-spends). However, the MySQL HA notary implementation uses some MySQL-specific syntax that may not work with Oracle RAC.

Regarding your specific questions:

  • Regarding the "msql" tag, is it possible to configure an Oracle RAC? Is there an "oracle" tag?

Yes, it may work. However, note the caveats above. This has not been tested and it may not work (e.g. due to MySQL-specific syntax). There is no oracle tag.

  • In the "notary" tag's "serviceLegalName" parameter where should I put the name of the Notary that the Nodes see (name of the Notary in NetworkMap)? "O = HA Notary"

Under notary.serviceLegalName.

Yes, it may work. However, note the caveats above. This has not been tested and it may not work (e.g. due to MySQL-specific syntax).

  • Can I configure the "worker 1" in Oracle RAC? How? -> myLegalName : "O=Worker 1, C=GB, L=London"

Remember that each worker needs their own local database, just like a regular Corda node. They also need a shared database that is used for notary-service-specific data.

  • Do I maintain the configuration part below pointing to my Oracle database?

Yes, that configuration looks like it may work correctly.

Upvotes: 1

Related Questions