"We are back" « oc.at

Bestimmten Server/Dienst in geschlossenem Netzwerk automatisch finden

XeroXs 04.08.2015 - 12:19 5819 44
Posts

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Prinzipiell gibt es 3 Möglichkeiten in Service orientierten Netzwerken Services zu finden, wenn man von der Infrastruktur komplett unabhängig sein möchte:

1) Service Provider kündigen ihren Service mit z.B. Broadcast-Nachrichten regelmäßig an.
2) Service Clients "suchen" im Netzwerk mittels Broadcast-Nachrichten nach Services (Service Provider antworten mit Unicast-Nachrichten).
3) Du hast eine Service Registry, in welcher alle Services eingetragen sind und Clients wie in einem Telefonbuch "nachschlagen" können. Hierfür gibt es wiederum mehrere Ansätze. Da es für deinen Fall aber kompletter Overkill ist imho, gehe ich darauf nicht weiter ein.

Stichwort: Service Discovery in Service Oriented Architectures

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
2.) Klingt ideal - bedingt aber dass ich das Subnetz meines Services kennen muss oder? (oder ich halt eine Liste an Möglichkeiten absuche..)

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Leider kenne ich mich mit Subnetzmasken nicht mehr sooo gut aus (länger her, dass ich das in der Uni hatte und privat habe ich damit nichts am Hut), aber könnten config-Files hier vllt helfen? Hier könnte man vllt direkt die IP-Adressen der Server angeben, auf welchen die Services laufen? Wäre ja von dem eigentlich Programm unabhängig.

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Dort stehe ich momentan - und es ist einfach richtig unpraktisch beim ausrollen von hundert und mehr Clients.

Noch dazu gehts um Mobile Apps - d.h. die Config muss irgendwie aufs Device, und bei iOS sogar direkt ins Bundle.. sehr unpraktisch, und skaliert halt überhaupt nicht.

Auf der anderen Seite den Server konfigurieren wäre kein Problem - deshalb ist die Broadcast Funktion (wenn sie vom Server in ein gezieltes Subnetz geht) durchaus möglich.

Traumvariante wäre natürlich ganz ohne Konfiguration, wo sich die beiden einfach so finden ;-)
Bearbeitet von XeroXs am 04.08.2015, 14:51

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Hmm okay, da hast du Recht. Einzige Lösung die mir einfällt diesbezüglich wäre in der App ein Menüpunkt, wo jeder Client die IP-Adressen einmalig eingeben müsste. Würde direkt in der App funktionieren und muss nur einmal (von jedem Client) erledigt werden.

edit (wegen deinem edit): Oder das am Server zu konfigurieren und jede x sec vom Server nen Broadcast zum "Ankündigen" des Services verschicken.

Falls sowas Flach fällt und theoretisch Services in anderen Subnetzen laufen könnten, musst du Broadcast-Nachrichten "dorthin" schicken. Da die App ja nicht wissen kann, welche Subnetze existieren, müsste die App nach meiner Logik alle Subnetze "abklappern".

Vielleicht hilft dir das hier: http://stackoverflow.com/questions/...-across-subnets

Ich sag mal so: Technisch sollte es umsetzbar sein. Aber wenn jeder Client das ganze Netzwerk + alle möglichen Subnetze mit Broadcast-Nachrichten flutet ists bissl hässlich. Im Lan aber nicht sooo tragisch vom Traffic.
Bearbeitet von Denne am 04.08.2015, 14:58

roscoe

tinkerer
Avatar
Registered: Mar 2005
Location: 1050 Wien
Posts: 721
Wenn Du eine Lösung willst, die überall und immer ohne individuelle Konfiguration (auf Kundenebene oder auf Geräte-/Servicebene) funktioniert, geht das mE nicht ohne Eingriff in die Infrastruktur, sei das jetzt DNS oder Router.

Der Router entscheidet anhand seiner Konfiguration, ob er Broadcasts (und wenn ja, welche) er wohin durchlässt, ein gezieltes Schicken am Router "vorbei" geht nicht.

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
@Denne:
Dein Link klingt auch eher so als könnt ich mir das Broadcasten vom Server ins Client-Subnetz abschminken :(

@roscoe scheint so :/

XXXprod

I'm gonna be made!
Avatar
Registered: Jan 2003
Location: Vienna
Posts: 945
Broadcasten in ein fremdes Subnetz glaub ich nicht das funktionieren wird. Aber wenn es eine selbstgestrickte Lösung sein soll, was spricht dagegen einen zentralen Ansprechpunkt zu erstellen, den alle Clients erreichen und der gibt den Clients nur zurück, welche Server(Dienste) es gibt. (Ähnlich wie bereits vorgeschlagen nur halt selbst implementiert).

Diese zentrale Stelle müsste nicht mal die Server kennen, sondern die Server registrieren sich selbstständig bei ihr. Dadurch fällt der ganze Broadcast murks weg und du bist nicht an irgendwelche dritten Tools gebunden.

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Okay ja, ich da kommt wohl auf die Router an was ich gerade so lese. Scheint wohl nicht immer gegeben zu sein, dass Router Broadcast und/oder IP Multicast in andere Subnetze zulassen :/

XXXprod: Dafür müssten die Clients die IP von der zentralen Stelle kennen. Wenn das möglich wäre, könnten die Clients auch direkt die IPs von den Serven haben. Oder verstehe ich was falsch?

XXXprod

I'm gonna be made!
Avatar
Registered: Jan 2003
Location: Vienna
Posts: 945
Naja in dem Fall müssten alle Clients (und dazugehörigen Server) nur genau 1 IP(bzw. Namen) kennen, wobei sich die Serverkonstellation beliebig verändern könnte.


//Edit: Ich hab glaub ich die Aufgabenstellung auch nicht komplett verstanden. Warum dürfen die Clients nichts von den Servern wissen?

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Aber sie müssten eben eine IP kennen und hier liegt das Problem, soweit ich das verstanden habe :)
Genau das (Konfiguration der Clients, weil bei jedem Kunden im Netzwerk die zentrale Stelle ja eine andere IP haben könnte) soll ja vermieden werden, wenn möglich.

@ XXXprod: Dürfen sie schon. Hier geht es darum, dass Clients ohne Konfiguration die Server finden sollen. Man kann die Server-Adressen nicht "hardcoden", da sie in jedem Netzwerk anders sein können und es soll ohne Konfiguration der App funktionieren. Von daher braucht man einen "universalen" Weg, die Server im Netzwerk zu finden.
Bearbeitet von Denne am 04.08.2015, 15:13

XXXprod

I'm gonna be made!
Avatar
Registered: Jan 2003
Location: Vienna
Posts: 945
Ich denke das man mit DNS hier am besten fährt. Kenn mich da zwar nicht so gut aus, aber es muss ja möglich sein einen überall eindeutigen Namen zu definieren, der dann nur per DNS konfiguriert wird und alle Clients verwenden dann diesen Namen.

mr.nice.

differential image maker
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6577
Es gibt einige Protokolle die dafür in Frage kämen, abhängig von mehreren Faktoren wie Art der Umsetzung , Betriebssystem der Clients...

Zeroconf (avahi oder bonjour), Multicast DNS, Simple Service Discovery Protocol, Link-Local Multicast Name Resolution, Service Location Protocol, um einige zu nennen.

XeroXs

Vereinsmitglied
doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10350
Die ServerIP kann (und ist) jedes mal anders.
Der Servername ist ebenfalls jedes mal anders (Gegeben durch die Richtlinien der Netzbetreiber).

Die Clients vorkonfigurieren bedeutet für jeden Kunden eigene Builds - in der Pflege und Wartung extrem aufwendig, und skaliert einfach überhaupt nicht.

Ein Alias am DNS wäre denkbar - würde ich gerne vermeiden, denn damit wird das ganze sehr schnell zum "Projekt" in einer Firma, und damit verschlechtern sich die Chancen des Rollout. Außerdem wäre ein einheitlicher Name nicht möglich - es gibt durchaus Situationen wo mehrere Server in einem Netz erreichbar sind.

@mr.nice. danke, schau ich mir mal an. Clients sind Android/iOS.

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Wieso müssen die Clients vorkonfiguriert sein? Kann nicht jeder Kunde von euch bzw Benutzer der App einfach unter Einstellungen selbst die Server IPs für das Netzwerk, in welchem er die App verwendet, eintragen? Ich habe bisher gegen diesen Vorschlag noch kein Argument gelesen, welches dagegen sprechen würde.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz