Posts mit dem Label Distributed Computing werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Distributed Computing werden angezeigt. Alle Posts anzeigen

Montag, 13. Juni 2016

Wie bekomme ich die IPs von meinen Digital Ocean Servern?

Erzeuge einen API Token bei Digital Ocean, oben im Menü und setze eine Shell Variable, der Einfachheit halber.
export TOKEN=e21558xx1111111111111222333

Hole alle Informationen deiner Droplets via Digital Ocean REST API:
curl  -sS -X GET "https://api.digitalocean.com/v2/droplets?per_page=200" -H "Authorization: Bearer $TOKEN"  > droplets.json

Vorsicht mit der Aufteilung der Antwort in mehrere Seiten. Dazu gibt es in der Antwort die Links:
cat droplets.json | jq '.links'
{
  "pages": {
    "last": "https://api.digitalocean.com/v2/droplets?page=2&per_page=200",
    "next": "https://api.digitalocean.com/v2/droplets?page=2&per_page=200"
  }


}

Die nächste Seite erhält man:
curl  -sS -X GET "https://api.digitalocean.com/v2/droplets?page=2&per_page=200" -H "Authorization: Bearer $TOKEN"  > droplets.json

Filter aus den Agenten die dich interessieren z.B. bezüglich des Namens und hole dir die IP4 Adressen.


cat droplets.json | jq '.droplets[] | .name+";"+.networks.v4[].ip_address' | tr -d "\"" | grep imageservertest-agent | awk -F ';' '{ print $2}' > agents.txt


Das ergibt dann ein schöne IP Liste als Datei. 
wc -l agents.txt 
22 agents.txt

Erweiterung um Droplet IDs
Die Droplet Ids benötigt man z.B. wenn man automatisiert seine Droplet zerstören (löschen) möchte.

cat droplets.json | jq -r '.droplets[] | [ .name+";"+.networks.v4[].ip_address, .id|tostring] | join(";")' | grep "imageservertest-agent" > agents.csv

Interessant sind die beiden Verkettungen in JQ. Einmal werden zwei String via + verkettet. Das zweite mal wird eine Zahl in einen Stein umgewandelt und danach mittels join zu eine CSV Datei verkettet.

Anmerkung: Durch die JQ option -r werden die umschliessenden Double Ticks verhindert. Dadurch kann im zweiten Beispiel der tr Schritt ausgelassen werden.

Dienstag, 18. Mai 2010

Distributed Computing

Wenn es um ein Number Crunching Problem geht, steht man vor der Frage, ob man nicht einen Computer-Cluster bzw. eine Menge von Desktop-PCs an Stelle eines Servers einsetzen sollte. Natürlich ist Distributed Computing seit Seti@Home ein hippes Thema, doch bringt Distributes Computing mit PCs nüchtern betrachtet Vorteile gegenüber der Nutzung eines grossen Servers?
In meinem Fall habe ich einen Referenz-Server, d.h. ich muss mittels Ditribueted Computing mindestens die selbe Rechenenleistung erreichen wie der Server. Natürlich muss ich vorher abschätzen, ob dies ein realisitsches Ziel ist. Die Aufage ist extrem gut parallelisierbar und damit sowohl für den Einsatz auf einem Multi-Core-Server als auch auf einem Rechner-Cluster gut geeignet. Zum abschätzen der zu erwartenden Performance der Computer bei meinem Problem nehme ich den SPECint_rate_base2006, weil er gut zu meinem Problem passt und weil SPEC-Werte für viele Systeme auf der Seite der SPEC zu finden sind. Das Referenz-System erreicht einen SPECint_rate_base2006 Wert von 268. Die Desktop-PCs schätze ich mit einem Wert von 11 (Pentium 4) und einer Arbeitszeit von 14  h pro Tag. Damit ergiebt sich folgende Formel:
P * C * h =  R * 24 ; wobei C die Anzahl der Desktop-PCs ist die benötig werden um die  Leistung des Referenzsystem R bei einer Arbeitszeit der PCs von h Stunden zu erreichen. P ist die durchschnittliche PC-Leistung. Nach dem Umstellen erhält man C = R * 24 / P / h. Für meinen Fall ergab diese Formel das ich 42 PCs benötige. Das ist eine Menge. Besser wird dieser Wert, wenn man neben den PCs auch dedizierte Server einsetzt oder die Desktop-PCs ersetzt. Mit einem Zwei-Sockel-Server (SPECint_rate_base2006  = 158) ergibt sich dann einen PC Anzahl von nur 18. Distributed Computing lohnt sich nur, wenn ausreichend ungenutzte Rechenkapazität in Form von PCs zur Vergung steht. Weiterhin wurd in der Formel nicht beachtet, dass man die Aufgaben an verschiedene Clients mehrfach vergibt, um durch Überkreuzprüfung die Richtigkeit der zurückgelieferten Werte sicherstellt.
Ein weiterer Vorteil des Ditrubted Computing Ansatzen mit PCs besteht darin, dass diese Lösung automatisch mitwächsed. Normale PCs werden alle 2 bis 3 Jahr ausgetauscht und damit erneuert sich auch der PC-Cluster, es sind keine zusätzlichen Investitionen nötig. Aber es ist davon auszugehen, dass der Aufwand für das Datenmanagement beim Distributed Computing leicht erhöht ist und dass die Software angepasst werden muss.