De:Netzdefinition
Aus YaCyWiki
YaCy erzeugt im Peer-to-Peer Modus ein Netz von YaCy-Peers die ein Cluster für eine bestimmte Web-Index Domäne definiert. In der Default-Einstellung ist dieses Suchnetz das öffentliche YaCy-Netz, dessen Domäne das öffentliche Internet ist. Das Netz wird durch das Bootstraping definiert, und alle Peers innerhalb des Netzes müssen die gleiche Bootstraping-Information über die Eigenschaften des Netzes haben. Diese Information steht in yacy.network.unit
Inhaltsverzeichnis |
Definition des YaCy-Netzes mit yacy.network.unit
Diese Datei befindet sich in jedem YaCy-Release, wird aus den Settings (yacy.init) mit der Property "network.unit.definition" referenziert und definiert u.a. folgende Properties
network.unit.name = freeworld network.unit.description = Public YaCy Community network.unit.domain = global network.unit.dhtredundancy.junior = 1 network.unit.dhtredundancy.senior = 3 network.unit.bootstrap.seedlist0 = http://www.yacy.net/yacy/seed.txt network.unit.update.location0 = http://yacy.net/yacy/Download.html
Beim Startup von YaCy wird das Netz wie folgt aufgespannt:
- die yacy.init wird geladen: die Property "network.unit.definition" in yacy.init bezeichnet "yacy.network.unit" als Netzdefinition.
- yacy.network.unit wird geladen: die Property "network.unit.bootstrap.seedlist0" in yacy.network.unit bezeichnet "http://www.yacy.net/yacy/seed.txt" als Liste von Seeds des Netzes
- http://www.yacy.net/yacy/seed.txt wird geladen und die Seeds darin werden in die Seed-DB geladen.
- Die Seeds beinhalten Informationen über die letzten bekannten Adressen der Peers
Die Peers dieses Netzes nutzen alle den in yacy.network.unit genannten Namen (network.unit.name) um sich als Teilnehmer des gleichen Netzes zu identifizieren. Die Property network.unit.description ist nur ein frei definierbarer Text der beispielsweise in der Netzgrafik angezeigt wird.
Eine sehr wichtige Information ist die Web-Domäne, die von dem Netz indexiert wird. Die zugehörige Property "network.unit.domain" bezeichnet diese Domäne und kann folgende Werte annehmen:
- global: nur URLs, die frei zugreifbar sind werden im Index akzeptiert.
- local: nur URLs, die in einem Intranet zugreifbar sind werden akzeptiert. Dies ist beispielsweise sinnvoll beim Indexieren eines Intranets.
- any: sowohl lokale als auch globale Adressen werden akzeptiert.
Eine weitere Netz-bezügliche Einstellung ist der Redundanzfaktor, der die Anzahl der Doppelverteilungen eines Indexes innerhalb der DHT angibt. In einem öffentlichen Netz kann die Verfügbarkeit eines Peers nicht sicher gestellt werden und daher ist der Redundanzfaktor 3 (network.unit.dhtredundancy.senior). Bei einem Netz mit hoher Verfügbarkeit kann dieser Faktor auf 1 gesetzt werden.
Wenn alle Peers eines Netzes von einer einzigen Person administriert werden, kann es gewünscht sein das ein automatisches Update aller Peers statt findet. Hierzu muss eine Lokation für den Download definiert sein, und ein Netzbetreiber kann selber eine Lokation angeben, um den Versionsstand bei einem automatischen Update kontrollieren zu können. Hierzu kann die Property "network.unit.update.location0" auf die URL einer Seite, die Links zu Releases beinhaltet gesetzt werden.
Sowohl zu network.unit.bootstrap.seedlist0 als auch zu network.unit.update.location0 können weitere Alternative Adressen angegeben werden; dazu können einfach weitere Properties mit erhöhter Folgenummer im Namen angelegt werden.
Anlage eines eigenen YaCy-Netzes
Die Netzdefinition muss bei allen Teilnehmern eines Netzes gleich sein, und das wird im Standardfall dadurch erreicht, dass sie im Release beiliegt. Ein YaCy-Netzbetreiber kann daran interessiert sein, dass die Netzdefinition nach Aufbau des Netzes nachträglich für alle Peers geändert wird, beipielsweise für erweiterte Sicherheitseinstellungen innerhalb dieser Datei für das Netz. Daher ist die Bezeichnung network.unit.definition der Netzdefinition in yacy.init über eine URL möglich, was wir im folgenden Beispiel nutzen. Der Aufbau eines neuen Netzes besteht aus zwei großen Schritten, zunächst in der Definition des ersten Peers des neuen Netzes und dann im Deploy der weiteren Peers die dem ersten Peer zugeordnet sind.
Konfiguration des ersten Peers eines neuen Netzes
Die Schritte sind:
- Editieren der yacy.network.unit, beispielsweise um lokale und globale Webseiten indexieren zu können, aber mit der Update-Adresse für neue Releases des globalen Netzes:
network.unit.name = mynet network.unit.description = Mein erstes eigenes YaCy-Netz network.unit.domain = any network.unit.dhtredundancy.junior = 1 network.unit.dhtredundancy.senior = 1 network.unit.bootstrap.seedlist0 = http://www.meinedomain.de/yacy.myseedlist network.unit.update.location0 = http://yacy.net/yacy/Download.html
- Upload dieser Datei, beispielsweise unter http://www.meinedomain.de/yacy.mynetdef
- Konfigurieren dieser Definition für jeden Peer vor dem initialen Start-Up indem die Datei yacy.init geöffnet wird, und der Wert
network.unit.definition = http://www.meinedomain.de/yacy.mynetdef
- gesetzt wird. Dies ist nur für die Erstinstallation notwendig, nach weitere Updates der Peers wird dieser Wert konstant bleiben und muss nicht wieder neu gesetzt werden.
- Nun kann der erste Peer des Netzes gestartet werden. Damit ein zweiter Peer ihn finden kann, muss er seine eigene IP kennen. YaCy nutzt normalerweise den Peer-Ping, um sich von einem anderen Peer seine öffentliche IP nennen zu lassen. Bei dem ersten Peer eines neuen Netzes geht das nicht, da ja noch kein anderer Peer da ist der auf einen Peer-Ping antworten könnte. Statt dessen muss die öffentliche IP über den Menüpunkt http://<addresse_erster_peer>/Settings_p.html?page=ServerAccess die eigene IP zugewiesen bekommen. Über StaticIP kann man diese IP konfigurieren.
- Der erste Peer muss als Principal Peer operieren, d.h. er muss in der Lage sein eine Seedlist zu erzeugen damit die nachfolgend gestarteten Peers den ersten Peer finden können
- Unter http://<addresse_erster_peer>/Settings_p.html?page=seed kann die Upload-Adresse für die Seedlist definiert werden. Diese wurde ja nun schon zuvor in yacy.mynetdef eingetragen und lautete http://www.meinedomain.de/yacy.myseedlist
- kontrollieren das der Peer den Principal-Status erreicht, d.h. er konnte eine Seedlist erzeugen und den Upload vollziehen.
Konfiguration der teilnehmenden Peers eines neuen Netzes
Sobald der erste Peer läuft, können weitere Peers hinzugefügt werden. Diese laden die seedlist und kontaktieren den Principal, welcher die neue Information wieder durch einen seedlist-upload den nächsten Peers bekannt macht. Damit neue Peers auch automatisch auf das neue Netz zugreift, muss ein besonderes Release mit Einstellungen zu diesem neuen Netz generiert werden. Wurde ein neuer Peer erst mal so korrekt konfiguriert, das er beim neuen Netz teilnimmt, kann er auch mit einem normalen, unveränderten Release aktualisiert werden, ohne das die Netzzugehörigkeit verloren geht. Die Schritte zur Definition des Spezial-Releases sind:
- Konfigurieren der Netzdefinition in yacy.init:
network.unit.definition = http://www.meinedomain.de/yacy.mynetdef
- Weiterhin ist es sinnvoll, die Peers gleich auf automatische Updates zu konfigurieren:
update.process = auto
- Damit bei Masseninstallationen nicht über das Setup-Menü Passwörter vergeben werden müssen, empfiehlt es sich ein Default-Passwort in der yacy-init einzustellen, ggf. entsprechend folgendem Beispiel:
adminAccount=admin:myS3cr3tPa55w0rd
- Ist die yacy.init fertig konfiguriert, kann ein eigenes Bootstrap-Release für das eigene Netz einfach durch einpacken des yacy-Verzeichnisses geschehen:
tar cf yacy_mynet.tar yacy
Für ein Massen-Deploy muss dann nur noch die yacy_mynet.tar auf die Rechner des Netzes verteilt und ausgepackt werden. Damit eine permanente Verfügbarkeit der YaCy-Installation sicher gestellt wird, empfiehlt es sich einen Cron-Job zu definieren, der regelmäßig den installierten Peer neu startet. Die /etc/crontab-Datei könnte beispielsweise folgenden Eintrag haben:
0 0 * * * yacyuser /home/yacyuser/yacy/stopYACY.sh 2 0 * * * yacyuser /home/yacyuser/yacy/killYACY.sh 4 0 * * * yacyuser /home/yacyuser/yacy/startYACY.sh -l
vorausgesetzt, YaCy läuft unter dem User 'yacyuser' und das YaCy-Verzeichnis befindet sich im Home-Verzeichnis des yacyuser.
