Search the FirstSpirit Knowledge Base
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
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
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
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
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.
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
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