[JAVA] So konfigurieren Sie Hochverfügbarkeit (HA), ohne dass ein R3 Corda Load Balancer von Drittanbietern erforderlich ist

Dieser Artikel ist ein Nachdruck des Medium-Artikels von TIS Co., Ltd. (genehmigt).

Body-URL: https://medium.com/@TIS_BC_Prom/r3-corda-3rd-party%E8%A3%BD%E3%83%AD%E3%83%BC%E3%83%89%E3%83% 90% E3% 83% A9% E3% 83% B3% E3% 82% B5% E3% 82% 92% E5% BF% 85% E8% A6% 81% E3% 81% A8% E3% 81% 97% E3% 81% AA% E3% 81% 84% E9% AB% 98% E5% 8F% AF% E7% 94% A8% E6% 80% A7-ha-% E3% 81% AE% E6% A7% 8B % E6% 88% 90% E6% 96% B9% E6% B3% 95-3467f4479f6d


A. Einführung

1_Ru1l1qoLW-D9dOLbHMVq7w.jpg

Dieser Artikel beschreibt einen alternativen Ansatz zum Konfigurieren von HA-Knoten, für die der in Version 4.0 bereitgestellte Load Balancer von Drittanbietern nicht erforderlich ist. Die Überprüfungsumgebung in diesem Artikel verwendet dieselbe AWS-Umgebung wie beim letzten Mal. Der AWS Load Balancer-Dienst wird jedoch nicht verwendet. Abbildung 1 Übersicht über die HA-Einstellungen in diesem Artikel B. Erstellen von EFS und RDS Im vorherigen Beitrag haben wir die Schritte zum Erstellen von AWS EFS- und RDS-Diensten beschrieben. Bitte bauen Sie diesmal wie oben beschrieben. (Siehe Abschnitte D und E oben) C. Knotenkonfiguration

Auf der offiziellen Website von Corda wird kurz darauf hingewiesen, dass Sicherungsknoten für HA mit der Einstellung [zusätzliche P2PA-Adressen] hinzugefügt werden können. Die detaillierten Schritte für diese Konfiguration werden in diesem Kapitel beschrieben.

  1. Informationen zu den Einstellungen der Datei build.gradle Das Festlegen von Informationen zu HA ist für diese Datei nicht erforderlich. Die HA-Einstellungen werden später in der Datei "PartyB_conf" des HA-Knotens hinzugefügt und erläutert (Schritt 3). build.gradle
…<Abkürzung>…
node {
        name "O=PartyB,L=Tokyo,C=JP"
        p2pAddress  "26.132.137.54:1433"
        //Die obige p2pAddress ist die IP des Hot Party B-Knotens. Es ist nicht mehr erforderlich, p2pAddress als DNS-Namen des Load Balancers festzulegen.
        rpcSettings {
            address("localhost:10009")
            adminAddress("localhost:10049")
        }
         cordapps = [
                "$project.group:cordapp-contracts-states:$project.version",
                "$project.group:cordapp:$project.version"
        ]
        rpcUsers = [[ user: "user1", "password": "test", "permissions": ["ALL"]]]
    }
…<Abkürzung>…

* Im vorherigen Artikel wurde extraConfig beschrieben, es wurde jedoch von Version 4.0 geändert und kann nicht mehr verwendet werden.

  1. Erstellen Sie CorDapps Speichern Sie die obige Datei <build.gradle> und führen Sie "./gradlew deployNodes" im CorDapps-Verzeichnis aus, um CorDapps zu kompilieren. Dadurch wird ein Verzeichnis für alle Corda-Knoten, einschließlich PartyB, unter "build / node" erstellt. Die Datei PartyB node.conf sieht folgendermaßen aus:
#-----PartyB/node.conf right after compile "./gradlew deployNodes"-----#
devMode=true
myLegalName="O=PartyB,L=Osaka,C=JP"
p2pAddress="26.132.137.54:1433"
rpcSettings {
    address="localhost:10009"
    adminAddress="localhost:10049"
}
security {
    authService {
        dataSource {
            type=INMEMORY
            users=[
                {
                    password=test
                    permissions=[
                        ALL
                    ]
                    user=user1
                }
            ]
        }
    }
}
#-----------------------------------------------#
  1. HA-Knoten (PartyB) -Einstellungen Fügen Sie der Datei "PartyB_conf" unter / build / node Informationen zu HA-Einstellungen (zusätzliche P2PA-Adressen (Cold Node IP), gemeinsam genutzte Datenbank) hinzu.
devMode=true
myLegalName="O=PartyB,L=Osaka,C=JP" 
p2pAddress="26.132.137.54:1433"                 // this is the IP for the hot PartyB node
additionalP2PAddresses=["26.132.133.94:1433"]   // this is the IP for the cold PartyB node
// the 3rd Party DB (e.g. PostgreSQL) info., which is the shared DB by PartyB’s Hot & Cold nodes
dataSourceProperties {
    dataSource {
        password=tisbcpoc
        url="jdbc:postgresql://ce4-pgsql.*****.ap-northeast-1.rds.amazonaws.com:5432/HAPartyB"
        user=ubuntu
    }
    dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
}
database {
    runMigration="true"
    schema="my_schema"
    transactionIsolationLevel="READ_COMMITTED"
}
jarDirs=[
  //Treiber “postgresql-42.1.4.Verzeichnis, in dem sich jar befindet “
  "/home/ubuntu/driver"
]
rpcSettings {
    address="localhost:10009"
    adminAddress="localhost:10049"
}
security {
    authService {
        dataSource {
            type=INMEMORY
            users=[
                {
                    password=test
                    permissions=[
                        ALL
                    ]
                    user=user1
                }
            ]
        }
    }
}

Da mehrere P2PA-Adressen definiert werden können, werden sie mit dem Array-Typ [] definiert.

Nachdem dem Netzwerk ein neuer Knoten (Cold Node) hinzugefügt wurde, müssen Sie einen Bootstrap ausführen, um die Netzwerkparameterdatei zu aktualisieren. Bevor Sie Bootstrap ausführen, müssen Sie zuerst eine Datenmigrationsdatei für PartyB erstellen, um das erforderliche Schema für PostgreSQL DB zu erstellen.

  1. Erstellen Sie das erforderliche "Migrationsskript". Die Erläuterung des Migrationsskripts und dessen Erstellung wurden in Abschnitt I des Vorstehenden vorgestellt. Gehen Sie genauso vor, um es zu erstellen.

  2. Erstellen Sie eine NW-Konstruktion des HA-Knotens (Bootstrap). Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus. java -jar corda-tools-network-bootstrapper-4.0.jar — dir build/nodes/ Die oben verwendete Datei "corda-tools-network-bootstrapper-4.0.jar" ist eine Kopie von ~ / tools / network-bootstrapper / des Corda-Enterprise-4.0 Evaluation Pack. Wenn der Bootstrap erfolgreich ist, wird eine Konsolenmeldung angezeigt, die der folgenden ähnelt:

Bootstrapping local test network in /mnt/**-poc-CE-additionalP2PAddresses/build/nodes
Generating node directory for PartyB
Generating node directory for Regulator
Generating node directory for Notary
Generating node directory for PartyA
Nodes found in the following sub-directories: [PartyA, PartyB, Notary, Regulator]
Found the following CorDapps: []
Not copying CorDapp JARs as --copy-cordapps is set to FirstRunOnly, and it looks like this network has already been bootstrapped.
Waiting for all nodes to generate their node-info files...
Distributing all node-info files to all nodes
Loading existing network parameters... NetworkParameters {
      minimumPlatformVersion=4
      notaries=[NotaryInfo(identity=O=Notary, L=London, C=GB, validating=true)]
      maxMessageSize=10485760
      maxTransactionSize=524288000
      whitelistedContractImplementations {
      }
      eventHorizon=PT720H
      packageOwnership {

      }
      modifiedTime=2019-06-25T10:37:15.047Z
      epoch=1
  }
Gathering notary identities
Generating contract implementations whitelist
Network parameters unchanged
Bootstrapping complete!

Die Informationen zu Party B Cold Node werden jetzt zum neuen Corda-Netzwerk hinzugefügt. Nach Abschluss des Bootstraps wurde auch die Datei PartyB node.conf aktualisiert. Der aktualisierte Inhalt lautet wie folgt.

devMode=true
myLegalName="O=PartyB,L=Osaka,C=JP"
p2pAddress="26.132.137.54:1433"
additionalP2PAddresses=["26.132.133.94:1433"]
dataSourceProperties {
    dataSource {
        password=tisbcpoc
        url="jdbc:postgresql://ce4-pgsql.*****.ap-northeast-1.rds.amazonaws.com:5432/HAPartyB"
        user=ubuntu
    }
    dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
}
database {
    runMigration="true"
    schema="my_schema"
    transactionIsolationLevel="READ_COMMITTED"
}
jarDirs=[
  "/home/ubuntu/driver"
]
rpcSettings {
    address="localhost:10009"
    adminAddress="localhost:10049"
}
security {
    authService {
        dataSource {
            type=INMEMORY
            users=[
                {
                    password=test
                    permissions=[
                        ALL
                    ]
                    user=user1
                }
            ]
        }
    }
}

Ich konnte die IP (zusätzliche P2PA-Adressen) des kalten Knotens von PartyB und die gemeinsam genutzte Datenbank "HAPartyB" (dataSourceProperties) des heißen Knotens und des kalten Knotens festlegen. 6. Platzieren Sie die ParyB-Einstellungsinformationen auf dem heißen und dem kalten Knoten Kopieren Sie das in Schritt 5 erstellte Party B-Verzeichnis sowohl auf den Hot-Knoten "26.132.137.54" als auch auf den Cold-Knoten "26.132.133.94". 7. Richten Sie ein freigegebenes Laufwerk für den HA-Knoten ein Lesen Sie Abschnitt H oben und stellen Sie das gemeinsam genutzte Laufwerk (Artemis) für den heißen und kalten Knoten von Party B ein.

D. D. Starten und überprüfen Sie alle Corda-Knoten

Platzieren (kopieren) Sie alle Knotenverzeichnisse außer Partei B, die in Schritt 5 erstellt wurden, auf dem entsprechenden Knoten jeder Person. Jetzt können alle Corda-Knoten erfolgreich in die EC2-Instanz booten (siehe Abbildung 1). Informationen zum Überprüfen der Funktion der HA-Funktion von PartyB finden Sie in Abschnitt J oben und überprüfen Sie diese. Sie können bestätigen, dass es auf die gleiche Weise wie oben funktioniert. Wie oben ist es auch erforderlich, corda.jar sowohl für den heißen als auch für den kalten Knoten von PartyB zu starten. Wenn der kalte Knoten gestartet wird und der heiße Knoten ausgeführt wird, befindet er sich im Wartezustand.

Zusammenfassung

In diesem Artikel wurde ein Ansatz zum Konfigurieren von HA-Knoten ohne einen Load Balancer der Corda Enterprise-Version (CE4.0) beschrieben. CE4.0 macht den Lastausgleichsdienst eines Drittanbieters und seine Einstellungen, die in der Vergangenheit erforderlich waren, überflüssig, und wir glauben, dass eine hohe Verfügbarkeit von Knoten zu geringeren Kosten und einfacher garantiert werden kann. Wie im vorherigen Artikel erwähnt, handelt es sich jedoch nur um die HA-Konfiguration des Knotens. Im tatsächlichen Betrieb ist die HA-Konfiguration auch für die Datenbank und das gemeinsam genutzte Laufwerk erforderlich. Der nächste Artikel befasst sich mit Notarclustern. Hinweis: TIS Blockchain Promotion Office (Ra) Thanks to Kiyotaka Yamasaki.


Dieser Artikel ist ein Nachdruck des Medium-Artikels von TIS Co., Ltd. (genehmigt). Text-URL: https://medium.com/@TIS_BC_Prom/r3-corda%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AE%E9%AB%98%E5% 8F% AF% E7% 94% A8% E6% 80% A7-ha-% E3% 81% A8% E3% 81% 9D% E3% 81% AE% E6% A7% 8B% E6% 88% 90% E6 % 96% B9% E6% B3% 95-34cb5dd409d1

Anfragen zu diesem Artikel: SBI R3 Japan [email protected]

Recommended Posts

So konfigurieren Sie Hochverfügbarkeit (HA), ohne dass ein R3 Corda Load Balancer von Drittanbietern erforderlich ist
Hochverfügbarkeit (HA) des R3 Corda-Knotens und dessen Konfiguration
Wie erstelle ich einen MOD für Slay the Spire?
SDWebImage: So löschen Sie den Cache für eine bestimmte UIImageView
So geben Sie Array-Werte ohne Verwendung einer for-Anweisung aus
So erhalten Sie die neueste Live-Übermittlungs-ID für einen Kanal ohne Verwendung der YouTube-Daten-API
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge