osswald
I'm new here

Mongo DB austauschen

Hallo zusammen,

unser Kunde möchte aus Performance und juristischen Gründen nicht die MongoDB des CaaS innerhalb des Clusters nutzen, sondern stattdessen eine eigene dedizierte MongoDB außerhalb der Cloud anbinden.

Wie groß ist der Aufwand dafür? Ist das überhaupt vorgesehen?

Vielen Dank schon mal für Eure Antworten Smiley Happy

0 Kudos
15 Replies

Hallo Tanja,

ich denke, dass wir aktuell zuerst zwei andere Issues mit der Verbindung haben. Aber erstmal eine gute Nachricht: Vom Pod der RestAPI komme ich mit Curl ganz generell auf den MongoDB Service.

/ $ curl -i 5b4cbd6e-0ac1-41fb-903a-c8e5af8ffeec-0.659dc287bad647f9b4fe17c4e4c38dcc.databases.appdomain.cloud:30494

HTTP/1.0 200 OK

Connection: close

Content-Type: text/plain

Content-Length: 84

It looks like you are trying to access MongoDB over HTTP on the native driver port.

Allerdings habe ich festgestellt dass wir eine Exception bekommen, wenn ein GET kommt. Dann versucht der DefaulServerMonitor auf die Adresse des Arbiters zu verbinden und bekommt eine UnkownHostException (siehe Logfile im Anhang). Mich wundert auch, wie die Adresse des Arbiters zustande kommt.

Der zweite Punkt betrifft den Connection String. Ihr baut diesen ja wie folgt zusammen:

mongo-uri: mongodb://%CAAS_REPO_USER%:%CAAS_REPO_PASSWORD%@%CAAS_REPO_SERVER%/?authSource=admin&%CAAS_REPO_ADDITIONS%

Was wir aber benötigen wäre:

mongo-uri: mongodb://%CAAS_REPO_USER%:%CAAS_REPO_PASSWORD%@%CAAS_REPO_SERVER%/ibmclouddb?authSource=admin&%CAAS_REPO_ADDITIONS%

Kann man das umstellen?

Viele Grüße

Uli

0 Kudos

Hallo Uli,

wie sieht denn Eure values.yml jetzt aus, also konkret die Werte für caasRepoServer und caasRepoAdditions?

Soll mit "ibmclouddb" die Authentication Database benannt werden?

Frohe Ostern!

Tanja

0 Kudos

Hallo Tanja,

hier die Werte für die beiden Keys sind aktuell wie folgt:

caasRepoServer  = 5b4cbd6e-0ac1-41fb-903a-c8e5af8ffeec-0.659dc287bad647f9b4fe17c4e4c38dcc.databases.appdomain.cloud:30494

caasRepoAdditions = replicaSet=replset\&ssl=true\&authSource=admin\&readPreference=secondaryPreferred\&serverSelectionTimeoutMS=5000

Ich habe /ibmclouddb erstmal weggelassen, da ich es nicht ganz verstehe. IBM nennt folgenden Connection String:

mongodb://<USER>:<PASSWORD>@5b4cbd6e-0ac1-41fb-903a-c8e5af8ffeec-0.659dc287bad647f9b4fe17c4e4c38dcc.databases.appdomain.cloud:30494,5b4cbd6e-0ac1-41fb-903a-c8e5af8ffeec-1.659dc287bad647f9b4fe17c4e4c38dcc.databases.appdomain.cloud:30494/ibmclouddb?authSource=admin&replicaSet=replset

Aber die authSource wird mit admin angegeben und das Funktioniert auch. Eine DB mit Namen ibmclouddb kann ich auch nicht finden wenn ich show dbs mache:

replset:PRIMARY> show dbs

admin      0.000GB

examples  0.000GB

local      0.006GB

myMongoDb  0.000GB

Also daher denke ich, dass es klappen sollte. Im Logfile kann man auch sehen, dass die Verbindung aufgebaut wird.

Kann unser Problem eher mit der Monitoring-Exception zusammenhängen die man in den Logs sieht? Ansonsten erhalte ich mit einem GET-Request ein 403 (siehe Log im Anhang).

Viele Grüße

Uli

0 Kudos

Hallo Uli,

meinem Verständnis nach gibt es also zwei Probleme:

1. der Monitor-Thread meldet Fehler:

     a) ursprünglich einen SSL-Fehler (vg. Post von Marcel am 09.04.), welcher aber jetzt nicht mehr auftritt (?)

     b) jetzt den Fehler, dass der DNS-Name des Arbiters nicht aufgelöst werden kann.

2. ein 403-Status bei GET

Zu 1.

Der Monitor-Thread wird vom Treiber gestartet - evtl. gibt es ein Kompatibilitätproblem. Gibt es seitens IBM eine Empfehlung, welcher Java-Treiber zu verwenden ist?

Was passiert, wenn Du den Connection-String genauso angibst, wie von IBM genannt - es sollte möglich sein, den Wert in caasRepoServer anzugeben.

zu 2.

Kannst Du auf MongoDB-Seite Logs sehen, die mehr Infos zu dem 403 auf GET zu bekommen? Existiert der User, den Du angibst, dort überhaupt? Und existiert die "caas_admin"-DB für die API Keys?

Viele Grüße,

Tanja

Nachtrag:

Ich habe gerade noch diesen Post hier gefunden: [JAVA-3103] Do not monitor the arbiters - MongoDB

Das hört sich dann für mich so an, als ob man den Fehler des Monitor-Thread ignorieren kann - zumal er auch nur als INFO geloggt wird.

0 Kudos

Hallo Tanja,

vielen Dank für den Hinweis! Das Bootstrap war nicht korrekt. Jetzt geht es, lag tatsächlich am API Key.

Viele Grüße

Uli

0 Kudos

Hallo Uli,

das ist schön zu hören! Wenn das Thema nun erledigt ist, wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Gerne kannst Du natürlich auch noch nähere Details zur Lösung teilen, falls diese für die Allgemeinheit (und uns natürlich :-)) interessant sein könnten.

Viele Grüße,

Tanja

0 Kudos