Dienstag, 22. Dezember 2015

Virtual Box installieren (ohne Software Center) und weitere Anmerkungen

als erstes die Paketquelle der Repository hinzufügen, damit sie mit aktualisiert wird:
sudo add-apt repository  'deb http://download.virtualbox.org/virtualbox/debian trusty contrib

Danach in einem Kombinationsbefehl das Paket holen und den Key registrieren:
wget -q https://download.virtualbox.org/oracle_box.asc -O- | sudo apt-key add -

Einmal kurz updaten:
sudo apt-get update

Und nun installieren:
sudo apt-get install virtualbox-5.0

Fertig!

Sollte dkms auf dem Hostrechner noch nicht installiert sein, sollte man das nachholen, um zu gewährleiten, dass die Kernelmodule von VirtualBox immer mit auf dem aktuellen Stand gehalten werden:
sudo apt-get install dkms

Installation VirtualBox 5.x:

Bitte beachten, dass die Gasterweiterung nicht über das Terminal mit dem Befehl sudo apt-get install virtualbox-guest-addition-iso installieren. Dieses hätte zur Folge, dass VirtualBox 5.x wieder entfernt wird. Auf der Oracle-Seite kann die Gasterweiterung für 5.x direkt unter VirtualBox geöffnet und installiert werden. 

Gemeinsamer Ordner:

Nachdem der gemeinsame Ordner angelegt und definiert wurde, muss im Gastsystem mit Hilfe des Befehls:
sudo usermod -aG vboxsf BENUTZERAME
der User der Gruppe vboxsf hinzugefügt werden. Danach ist der Zugriff auf den Ordner möglich.


TTY Terminal aufrufen aus VM heraus:

Versucht man ein tty Terminal aus dem Guest heraus mit Str+Alt+F1 aufzurufen, ruft man das tty des Hosts auf. Bei mir funktioniert folgendes: Wenn man den Fokus im Guest hat, kann ich das tty mit RightStrg+F1 aufrufen

Aufruf des GRUB-Auswahlmenüs:

Beim Bootvorgang muss die Shift-Taste gehalten werden, dann gelangt man in das Auswahlmenü





Montag, 21. Dezember 2015

Unity Desktop funktioniert nicht mehr

So, heute hatte ich eine ganz besondere Challenge, aus der ich ohne Hilfe der Gruppe UbuntuFun auf Telegram nicht raus gekommen wäre ;-)

Ich starte meinen Laptop, er fährt in den Anmeldebildschirm, ich melde mich an und dann... NICHTS! Ich hatte einen Desktop mit meinem personalisierten Hintergrund, aber ansonsten nichts. Keine Menüleiste, kein Dash es war nichts da. Das einzige was noch funktionierte war die rechte Maustaste, mit Hilfe derer ich Kontextmenüs aufrufen konnte, die mich aber nicht weiter brachten.

Nach meinem Hilferuf in die Telegram-Gruppe (nach 2 harten Restarts meines Systems) gingen wir auf Fehlersuche. Währenddessen stellten wir fest, dass auch ein Terminal über die Tastenkombination Str Alt t nicht möglich war. Nachdem ich an mein Macbook eine USB Tastatur angeschlossen hatte, konnte ich in das tty Terminal mit der Tastenkombination Str Alt F1. Dort muss man sich mit seinem User erst einmal anmelden und dann kann es los gehen. Also erstes machte ich mal ein Systemupdate mit sudo apt-get update und sudo at-get upgrade. Allerdings musste ich feststellen, dass nach einem reboot sich das Problem noch nicht in Luft aufgelöst hatte. 

Daraufhin probierte ich den Befehl unity --reset worauf mir mein System erklärte, dass er Unity nicht kennen würde! Danach ging es in die Abteilung compizconfig. Ich bin nach der Anleitung auf der seite http://www.iws.net/node/55 vorgegangen und habe den compizconfigurator erneut installiert, allerdings erklärte mir das System, dass er schon installiert sei. Ich bin dann mit Str Alt F7 in den ccsm gesprungen und versuchte dort Unity zu aktivieren. Nachdem ich Screenshots von meinen netten Helfern bekommen hatte, musste ich feststellen, dass in ccsm kein Unity Plugin vorhanden war. Auf Empfehlung versuchte ich dann dconf reset -f /org/compiz, was er scheinbar noch gemacht hat, und dann sollte ich setsid unity ausführen, was mit einer Fehlermeldung quittiert wurde. Daraufhin wurden dann mal die installierten Komponenten gesucht dpkg -l | grep unity . Dieser Befehl zeigte mir eine Reihe von installierten Koponenten an. Unter anderem auch eine installierte Unity Version. Daraufhin schaute ich mit der gleichen Funktion mal nach dem Ubunt Desktop dpkg -l | grep ubuntu-desktop wobei festzustellen war, dass dieses nicht (mehr) vorhanden war. Nach einem sudo apt-get install ubuntu-desktop und einem reboot war der Desktop wieder verfügbar. 

Interessant an dieser Stelle war dann zu beobachten, dass u.a. Evolution und Pidgin nicht mehr vorhanden waren. Dafür war Empathy wieder da, welches ich vor Monaten gelöscht hatte. Nach erneuter Installation der fehlenden Programme, warren diese inklusiver aller Daten wieder verfügbar, als ob nichts geschehen wäre.

Wenn ich nun noch wüßte, was ich falsch gemacht habe, könnte ich das zumindestens in Zukunft vermeiden... Nochmal Danke an die Telegram-Gruppe UbuntuFun.de :-)

Donnerstag, 17. Dezember 2015

Reservierte IP-Adressen und Subnetze

Im theoretisch möglichen Adressbereich sind bestimmte IP- Adressen und Subnetze für spezielle Anwendungen reserviert. Die Kenntnis dieser Ausnahmen ist wichtig, um Fehlkonfigurationen und Designfehler zu erkennen und zu vermeiden.


Erste und letzte IP- Adresse eines Subnetzes

Die erste und die letzte IP- Adresse eines definierten Subnetzes sind jeweils die Subnetz- Adresse beziehungsweise die Broadcast- Adresse. Die Subnetz- Adresse definiert das Subnetz, während die Broadcast- Adresse dazu dient, alle Adressen im Subnetz gleichzeitig ansprechen zu können.


0.0.0.0/8 (0.0.0.0 bis 0.255.255.255)


IP-Adressen in diesem Bereich dienen als sogenannte "Standard- Routen", stehen also für das Subnetz selbst.


10.0.0.0/8 (10.0.0.0 bis 10.255.255.255)

172.16.0.0/12 (172.16.0.0 bis 172.31.255.255)

192.168.0.0/16 (192.168.0.0 bis 192.168.255.255)

"Diese Bereiche unterschiedlicher Größe sind für private Netzwerke reserviert. Alle IP- Adressen aus diesen Bereichen werden nicht im Internet geroutet und dienen dazu, interne Netzwerke aufzubauen, ohne dafür öffentliche IP- Adressen zu benötigen.


127.0.0.0/8 (127.0.0.0 bis 127.255.255.255)

Local Loop oder auch Loopback- IP Adresse des lokalen Hosts.


169.254.0.0/16 (169.254.0.0 bis 169.254.255.255)

IP- Adressen aus diesem Bereich sind für den sogenannten Local Link reserviert. Diesen Adressbereich nutzen z. Bsp. Rechner, wenn sie eine IP- Adresse automatisch von einem DHCP- Server beziehen sollen, diesen aber nicht finden können.

Einrichten eines Netzwerks mit Server, der eine statische IP hat:

  • Ermitteln der Gatewayadresse und Subnetzmaske über den Befehl route -n
  • Aus der Gatewayadresse die IP-Adresse des Rechners ableiten: z.B. Gateway 192.168.10.1 -> IP 192.168.10.156 und auch welche Schnittstelle verwendet wird (meistens eth0 wenn nur eine Netzwerkkarte vorhanden ist)
  • DNS-Server ermitteln (meist die gleiche Adresse wie das Gateway)
  • Dann die Daten in die Datei /etc/network/interfaces eintragen:
    auto eth0
    iface eth0 inet static
    address 192.168.10.156
    netmask 255.255.255.0
    gateway 192.168.10.1
    dns-nameserver 192.168.10.1 
  • auto eht0 sorgt dafür, dass die Einstellungen automatisch geladen werden
  • iface eth0 inet static beschreiben die Verbindungsart und das es sich um eine statische Einstellung handelt. Alternativ steht hier gerne dhcp drin, wenn die IP automatisch vergeben wird.
  • address ist die IP Adresse des REchners
  • netmask = Subnetz
  • gateway = Adresse des Routers  
  • dns-nameserver = IP des Nameservers -> Die ist wichtig, da der Server in meinem Fall nicht ins Internet kam
  • sudo /etc/init.d/networking restart
  • In meinem Fall hat der restart nicht ausgereicht. Ein reboot brachte dann aber den gewünschten Erfolg


Sonntag, 29. November 2015

Hadoop

Apache Hadoop

  • Projekt zur Entwicklung offener Software für sichere, skalierbare und verteilte Systeme
  • Software Bibliothek die einen Framework bereit stellt, der es ermöglicht großen Datenmengen die in Computer Cluster verteilt sind, unter zu Hilfenahme einfacher Programmiermodellen zu verwalten
  • Skalierbarkeit von einem Server bis hin zu mehreren tausend Servern, jeder mit eigenem Speicher und Berechnungen
  • dabei stellt die Library selbst sicher, dass Fehler auf dem Application Layer direkt behoben werden, um so einen hochverfügbaren Service mit geringer Anfälligkeit zu erzeugen
  • Apache Hadoop selbst besteht aus folgenden Modulen:
    • Hadoop Common: Allgemeine Werkzeuge, die die anderen Module unterstützen
    • Hadoop Distributed File System (HDFS): verteiltes Dateisystem, welches eine schnelle Zugriffszeit auf Daten bereit stellt
    • Hadoop YARN: Framework um die Cluster-Resourcen und Jobs zu organisieren. Dabei ist die Definition eines Jobs, die Verarbeitung eines vollstängen Datensatzes durch ein Programm. Im Gegensatz dazu ist ein Task ein einzelner Map- und Reducevorgang innerhalb des Jobs
    • Hadoop MapReduce: ein YARN basierter Framework um große Datensätze parallel bearbeiten zu können
  • dann gibt es auch noch weitere Hadoop-relevante Projekte:
    • Ambari: ein web-basiertes Tool zur Versorgung, Verwaltung und Überwachung von Hadoop Clustern. Enthält Support für HDFS, Hadoop MapReduce, Hive, HCatalog, HBase, ZooKeeper, Oozie, Pig und Sqoop. Ambari stellt ebenfalls ein Dashboard zur Darstellung der Cluster-Health in Form von Heatmaps und der Diagnose der Perfomance Charakteristik mit Hilfe von MapReduce, Pig und Hive
    • Avro: System um Daten zu ordnen
    • Cassandra: Eine skalierbare Multi-Master Datenbank ohne "Einzelpunkt-Fehler" (??) (Single-Point failure)
    • Chukwa: Daten-Sammler für große verteilte Systeme
    • HBase: skalierbare, verteile Datenbank, die strukturierten Datenspeicher für große Tabellen unterstützt
    • Hive: Daten Warehouse Infrastructure, die Datensammlungen und ad hoc Abfragen bereit stellt
    • Mahout: a scalable machine learning and data mining library
    • Pig: Platform zur Programmierung von MapReduce Programmen mit Hilfe der Programmiersprache Pig Latin
    • Spark: Schnelle und allgemeine Rechenmaschine für Hadoop-Daten. Unterstützt einfaches, eindrucksvolles Programmiermodell, welches eine große Anzahl von Anwendungen (inkl. ETL), maschinelles Lernen, Stream processing und grafische Berechnungen beinhaltet.
    • Tez: Allgemeiner Framework für Datenfluß-Programmierung, der auf YARN aufbaut. Er stellt eine starke und flexible Maschine zur Verfügung, die eine beliebige Zahl von DAGs (Database Availability Group) für passive und aktive Anwendungsfälle verarbeiten kann
    • ZooKeeper: ein hochperformanter Koordinations-Service für verteilte Anwendungen

Hadoop Single Node Installation


Single Node Hadoop Installation

Anleitung:
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html

Vorraussetzungen:
  • Java muss installiert sein -> musste ich noch machen sudo apt-get install openjdk-7-jre icedtea-7-plugin Nach Sichtung der Readme-Datei auf der Downloadseite für das aktuelle Release, habe ich erst einmal entschieden, dass ich keinen Key brauche, da ich ja schon einen Server mit ssh in Betrieb habe. Ich gehe derzeit davon aus, dass ich diese User ebenfalls für Hadoop verwenden kann. Nachdem ich soweit war und erste Versuche unternahm, bestätigte sich diese Annahme. Für die Installation des Single Nodes habe ich den Standarduser meines Servers genutzt. Die Einstellungen für den Server finden sich unter dem Post zur OpenStack Installation.
  • Ich habe mich dazu entschlossen, das Archiv "hadoop-2.7.1.tar.gz" herunter zu laden Da ich ja mit einem Ubuntuserver in einer VirtualBox arbeite, musste ich nun das Archiv irgendwie auf den Server bringen, um es dort entpacken zu können. Daher kopierte ich das Archiv in den gemeinsamen Ordner, der auf dem Server dann unter /media/sf_Gemeinsamer_Ordner zu finden war. Ich habe das Archiv dann nach home/davinia/hadoop kopiert. (Anlage des Verzeichnis "hadoop" mit mkdir, kopieren mit cp aus dem media-Verzeichnis heraus nach ~/hadoop) Entpacken des Archivs mit dem Befehl tar -xzf hadoop-2.7.1.tar.gz im Verzeichnis (die Optionen -xzf bedeuten: x = Dateien aus Archiv extrahieren, z = Archiv zusätzlich mit gzip(de) komprimieren, f = Dateien in den angegebenen Ordner extrahieren. Wenn kein Zielordner angegeben ist, wird das aktuelle Verzeichnis verwendet)
  • Nach dem Entpacken in das hadoop-Verzeichnis wechseln. Dort wechseln wir wiederum in das Verzeichnis etc/hadoop wechseln um die Datei hadoop-env.sh bearbeiten. In meinem Fall nutze ich den Editor "nano" zur Bearbeitung der Files. nano hadoop-env.sh Es ist dabei zu beachten, dass die Angaben für Java geändert werden müssen.
  • Danach soll das Kommando $bin/hadoop probiert werden. Diese Angaben beziehen sich alle auf die entpackte Ordnerstruktur von Hadoop. In meinem Fall ~/hadoop/hadoop-2.7.1
  • Nachdem die Einstellungen Java betreffend vorgenommen wurden, gehe ich zum nächsten Schritt über: einen Hadoop Cluster im Standalone Mode starten. Die Anleitung lässt uns erst einen neuen Ordner "input" anlegen. Auch hier ist in meinem Fall zu beachten, dass ich mich im Verzeichnis ~/hadoop/hadoop-2.7.1 befinde, da sonst das Skript nicht aufgerufen werden kann (habe ich gestestet, indem ich den Ordner an einem anderen Ort angelegt habe ;-)
  • Kopieren aller xml-Files hat funktioniert ($ cp etc/hadoop/* .xml input).
  • Allerdings gibt es bei dem Aufruf des Scriptes ($ bin/hadoop jar share/hadoop/mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+') eine Fehlermeldung bezüglich der Java-Version.Nach langem Suchen und diversen Fehlermeldungen (z.B. dass er das Verzeichnis /usr/bin/java//bin/java nicht findet; wird auch schwierig, wegen der beiden Slashs hintereinander...) habe ich die Lösung für den Java Pfad in einem Forum gefunden: http://stackoverflow.com/questions/20303815/hadoop-single-node-cluster-installation-on-ubuntu Ich habe nach dieser Anleitung einen Softlink ($ ln -s java-7-openjdk-amd64/ jdk) erstellt. Naürlich habe ich mich vorher davon überzeugt, dass an der Stelle die entsprechende Datei bzw. Ordner vorhanden ist. Diesen habe ich dann in die Datei hadoop-env.sh eingetragen. Entgegen der Bescheibung aus dem Forum habe ich den Eintrag in der bashrc nicht geändert, da ich diese auch gar nicht gefunden habe. Nach diesen Schritten lies sich der Befehl aus der Hadoop Anleitung ohne Fehlermeldung ausführen
  • $ bin/hadoop jar share/hadoop/mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+' mit bin/hadoop wird das Skript aus der Datei hadoop im Verzeichnis bin unter ~/hadoop/hadoop-2.7.1 aufgerufen. Innerhalb dieses Scripts wird mit dem Befehl jar wiederum die Klasse org.apache.hadoop.util.RunJar aufgerufen, die einen Hadoop job jar ausführt. Dabei wird ein .jar Archiv ausgeführt und nach input kopiert. In diesem Archiv werden dann mit grep nach dem definierten String gesucht und alle Übereinstimmungen in dem Ordner output abgelegt. Nach erfolgreichem Durchlauf des Befehls erzeugte der Befehl die Datei part-r-00000
Die "Installation" von Hadoop scheint lediglich in dem Entpacken des herunter geladenen Archivs zu bestehen.
Und mal wieder muss ich zum Ende feststellen, dass ich die Aufgabe zwar erfolgreich bewältigt habe, aber keine Ahnung habe, was ich damit anfangen soll.

Sonntag, 8. November 2015

Welche Cloud, wann?

Quelle: Canonical_Checklist_04_1012.pdf

Public Cloud:

Budget
  • kein CAPEX Budget verfügbar
  • minimales OPEX Budget verwendbar
  • das Projekt soll kostengünstig gestaltet werden
Resourcen
  • kleines technisches Team
  • Team hat keinerlei Erfahrung mit Virtualisierung oder Clouding
  • Einstellung von Entwicklern oder Systemadmins mit Fachkenntnissen stellt ein Problem dar
Projektdauer
  • Das Projekt soll schnell an den Start kommen
Anforderungen
  • Anforderungen an Anwendungen oder Services im Vorfeld nicht kalkulierbar
  • Anforderung an Cloud Betreuer würde extreme Spitzen und Täler beinhalten
  • Aktuelle IT Infrastruktur würde mit dem Workload Handling Probleme haben
Compliance 
  • Anwendungen und Daten sollen an externer Stelle gespeichert werden
  • Verfügbarkeit der Anwendungen und Daten für Kunden über das öffentliche Internet ist völlig ausreichend
Beachten, dass die Erzeugung einer unbekannten Menge an virtuellen Maschinen auf Grundlage lizenzbasierter System eine massive Kostenspirale verursachen kann -> Alternativ können kostenfreie Lizenzen eingesetzt werden (z.B. Ubuntu)

Private Cloud:


Budget
  • CAPEX ist verfügbar, d.h. neue Hardware zum Aufbau einer Cloud Infrastruktur kann beschafft werden
  • Ebenfalls ist OPEX Kapital verfügbar um die benötigte Infrastruktur aufzubauen
  • Das Projekt hat ein Budget zur Verfügung, welches die Betreuung und Verwaltung der entstandenen Infrastruktur erlaubt
Resourcen
  • Technisches Team intern ist gut aufgestellt
  • Das Team hat Erfahrung in Virtualizierung und Clouding
  • Es ist Budget vorhanden, um weitere Entwickler und Systemadministratoren mit Cloud-Erfahrung zu aquirieren
Projektdauer
  • Es gibt die Möglichkeit vor der Entwicklung des eigentlichen Projektes die Cloud Infrastruktur zu planen und vorzuhalten
  • Eine Cloud-Infrastruktur ist schon vorhanden
Anforderungen
  • Die aktuelle Struktur ist in der Lage auch hohe Anforderungen durch User (Kunden) abzufangen
Compliance 
  • Es sind Daten vorhanden, die unbedingt privat bleiben müssen
  • Die Compliance sieht vor, dass eigene Daten unbedingt auf eigenen Systemen beheimated sein müssen
  • Und zusätzlich sollten die Daten ebenfalls im eigenen Land bleiben
  • Diese Vorgaben sind auch in den SLAs/ IT Governance verankert 

Hybrid Cloud:


Budget
  • CAPEX ist verfügbar, d.h. neue Hardware zum Aufbau/ Erweiterung einer Cloud Infrastruktur kann beschafft werden
  • Ebenfalls ist OPEX Kapital verfügbar um die benötigte Infrastruktur aufzubauen/ zu erweitern
  • Das Projekt hat ein Budget zur Verfügung, welches die Betreuung und Verwaltung der Infrastruktur erlaubt
  • Zusätzlich ist auch Budget vorhanden, um Public Cloud Resourcen bei Bedarf zu aktivieren 
Resourcen
  • Eine Cloud Infrastruktur ist schon vorhanden und kann genutzt werden
  • Technisches Team intern ist gut aufgestellt
  • Das Team hat Erfahrung in Virtualizierung und Clouding
  • Es ist Budget vorhanden, um weitere Entwickler und Systemadministratoren mit Cloud-Erfahrung zu aquirieren
Projektdauer
  • Es gibt die Möglichkeit vor der Entwicklung des eigentlichen Projektes die Cloud Infrastruktur zu planen und vorzuhalten
Aber: Es wird flexibler Zugang zu Resourcen und Fähigkeiten benötigt, den das Team nicht decken kann und die Abdeckung ziemlich kostenintensiv wäre
 
Anforderungen 
  • Die interne Cloud Infrastruktur wird wahrscheinlich nicht in der Lage sein, extreme Anforderungs-Spitzen durch User- oder App-Anfragen zu bewältigen
  • Außerdem wird die Infrastruktur ebenfalls die angestiegenen Anforderungen der Daten-Verarbeitung bzw. -Analytik nicht bewältigen können
Compliance 
  • Es sind Daten vorhanden, die unbedingt privat bleiben müssen
  • Die Compliance sieht vor, dass eigene Daten unbedingt auf eigenen Systemen beheimated sein müssen
  • Und zusätzlich sollten die Daten ebenfalls im eigenen Land bleiben
  • Diese Vorgaben sind auch in den SLAs/ IT Governance verankert
Aber: Es soll eine Infrastruktur bereit gestellt werden, in der die Anwendungen und Buisness-Logik in der Public Cloud bereit gestellt werden, die Daten aber weiterhin im eigenen Bereich verbleiben.

Außerdem sollen die Möglichkeiten erhalten bleiben, das Projekt in Zukunft sowohl vollständig in die Private Cloud, oder auch in die Public Cloud um zu ziehen.
 

Donnerstag, 15. Oktober 2015

Terminalbefehle und ihre Bedeutung

  • touch: Änderung von Zugriffs- und Änderungszeitstempel. Existiert die Datei noch nicht, wird sie neu angelegt
  • cat: ursprünglich zum zusammensetzen von Dateien gedacht, wird aber zwischenzeitlich hauptsächlich eingesetzt um kleinere Dateien im Terminal anzuzeigen
  • wget: Dateien von HTTP oder FTP Seiten downloaden
  • apt-key: Aktionen den Schlüsselbund betreffend
  • wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
  • Download der angegebenen Datei im "quiet" Modus (-q) und Ausgabe im Terminal (-O-) und Übergabe der Ausgabe (-) an den apt-key add, damit der Schlüssel hinzugefügt werden kann
  • apt-get: Paketverwaltung! update, upgrade, install, remove, autoremove, etc.(siehe auch: https://wiki.ubuntuusers.de/apt/apt-get)
  • pwd: gibt das aktuelle Verzeichnis zurück, indem man sich gerade befindet, print working directory
  • git clone git://ADRESSE: Herunterladen nur den Quellcode aus dem Git-Repository
  • cd: change directory (Wechsel der Verszeichnisse)
  • mkdir: Anlegen eines Verzeichnisses
  • sollte die Uhr aus dem Panel verschwunden sein:
    pkill -f indicator-datetime-service , nachdem man sich vergewissert hat, dass in den Systemeinstellungen die Uhr für das Panel aktiviert ist
  • VERBOSE: Ausführungsmodus von Computerprogrammen (meist Aufruf aus einer Kommandozeile), der dafür sorgt, dass die Ausführung des Programms mit geloggt wird. Verwendung erfolgt meist mit -v oder --verbose und kann z.B. bei chmod, mkdir, cd, rm, cat verwendet werden. 
  • tar -xzf Dateiname: (Ent)packen von tar-Archiven. Bei den Optionen müssen immer die Dateiendungen beachtet werden. Handelt es sich nicht nur um ein gepacktes, sondern auch komprimiertes Archiv, müssen die Optionen entsprechend angepasst werden siehe auch: wiki.ubuntuusers.de/tar
  • ln: Erzeugung eines Links; Entweder ein Softlink -s, oder ein Hardlink (ohne Option) 
  • uname -r: Kernelversion ermitteln 
  • sudo apt-get install linux-headers-$(uname -r): Aktuellen Kernel installieren 
  • usermod -d /Verzeichnis/ -m "Benutzer": Benutzer Home-Verzeichnis ändern 
  • möchte man in einem Server den aktuellen Benutzer abmelden, weil man sich vielleicht mit einem anderen anmelden möchte, benutzt man einfach den Befehlt exit
  • ip link show (device) ip a s
  • md5sum: Quersumme einer Datei bilden -> z.B. kann man damit abgleichen, ob eine Datei auch vollständig und korrekt kopiert wurde
  • iotop: Anzeige der laufenden Prozesse des Systems im Terminal 
  • free: zeigt die momentane Speicherbelegung des RAM an (Option -m: Angabe in MByte)
  • vmstat (Sekunden): tabellarische Auskunft über Prozesse, Arbeitsspeicher, Auslagerung- sowie Festplatten und Prozessor-Aktivitäten
  • apt-get install <paketname1> <paketname2> ...
  • apt-get remove <paketname1> <paketname2> ...
  • apt-get purge <paketname1> <paketname2> ...
  • apt-cache search <paketname>
  • dpkg -l : Installierte Pakete zeigen lassen
  • dpkg -l | grep <Suchbegriff> In den installierten Paketen nach einem bestimmten suchen
  • less : pager zur Ausgabe von (Text-) Dateien im Terminal
  • head Datei: Ausgabe der ersten 10 Zeilen der Datei

Donnerstag, 8. Oktober 2015

OpenStack

  • Initiiert wurde das Softwareprojekt von  Rackspace & NASA und wird unterstützt durch z.B. Firmen wie SUSE Linux GmbH, Dell, Canonical, etc
  • OpenStack wird als freie Software in Python unter Apache Lizenz entwickelt
  • Cloud Computing (als Dienstleistung) umfasst das gesamte Spektrum der Informationstechnologie (Infrastruktur => z.B. Rechenerleistung, Speicherplatz), Plattformen & Software) 
OpenStack => Software, die aus vielen unterschiedlichen Einzelprodukten besteht:
  • OpenStack Compute -> Nova:
    • Kann Gruppen von virtuellen Maschinen verwalten
    • unterstützt Hypervisoren -> XEN & KVM & Hyper-V(MS)
    • Ansteuerung über libvirt
    • Bereitstellung von Storage: iSCSI, sheepDog oder Swift
    • Bereitstellung von Object Storage: Glance
    • Verwaltung erfolgt über REST API, die mit dem CLI von Eucalyptus angesteuert wird
    • Für den Betrieb von Nova ist noch eine Datenbank notwendig
  • OpenStack Storage -> Swift:
    • verantwortlich für reduntante Datenspeicherung (Object Storage)
    • Als Backend für Glance oder Cinder einsetzbar
    • Für Dateiverwaltung z.B. Cyberduck
  •  OpenStack Image Service -> Glance:
    • stellt den OpenStack Usern Images für virtuelle Maschinen zur Verfügung
    • Images dienen Nova dazu, Instanzen zu kompilieren
  •   OpenStack Identity ->Keystone:
    • Authentifizierungs- und Rechtesystem zwischen den OpenStack Komponenten
    • Gliederung des Projektzugriffs in sog. Mandanten (tenants)
    • Der Tenenat ist Mieter der Cloud und hat mind. einen zugeordenten Benutzer
    • Verschiedene Benutzer mit unterschiedlichen Rechten pro Mandant möglich
    • Token System zur Authorisierung
    • Anbindung anderer Authentifizierungssysteme möglich (z.B. LDAP)
    • Abstrahieren der Authentifizierung auf vorgelagerten Webservern möglich -> Erweiterung der Authentifizierungssysteme
  • OpenStack Dashboard -> Horizon:
    • Webinterface zur Verwaltung der OpenStack Cloud
    • Bereitstellung der wichtigsten Funktionen der OpenStack Komponenten in einer GUI
  • OpenStack Block Storage -> Cinder
    • Bereitstellung virtuellen Blockspeichers in Form virtualisierter Speichermedien (Festplatten, CDs, etc.)
    • Blockspeicher kann an VMs angehängt werden
    • Über eine API-Schnittstelle lässt sich Cinder mit Swift verbinden => Blockspeicher kann mit Objektspeicher kommunizieren 
  • OpenStack Networking -> Neutron (ehem. Quantum)
    • Netzwerkdienst für OpenStack
    • Verwaltung von Netzwerken, Subnetze, IP-Adressen/ Floating IPs
    • Floating IP: IP die als Schnittstelle zwischen dem öffentlichen und internen Netzwerk dient
    • Unterstützung von Load Balancer (?), HA-Proxy(?), Health-Monitor, sowie VLAN & VPN
    • Firewall mit vielseitigen Portregeln 
  • OpenStack Database Service -> Trove
    • befindet sich noch in der Entwicklungsphase
    • soll sowohl NoSQL Datenbank (z.B. MongoDB) als auch SQL-Datenbanken (z.B. MariaDB) in der Cloud als DBaaS (Datenbank as a Service) bereitstellen
  • OpenStack Orchestration -> Heat
    • Erzeugung von Stacks
    • Stack: Konfigurationen aus verschiedenen Cloud-Komponenten z.B. Instanzen, Load Balancer, Sicherheitsgruppen, etc.
    • Realisierung von Deployment- und Autoscaling Prozessen direkt im OpenStack
    • Ablage der Konfiguration in einem Heat Orchestration Template (HOT) im YAML-Format
    • Mit einem Template können gesamte Infrastrukturen automatisiert erzeugt werden
  • OpenStack Telemetry -> Ceilometer
    • Erfassen und Abfragen von Nutzungsdaten der OpenStack Cloud
    • Wird von Heat verwendet um Leistungszahlen für Autoscaling zu ermitteln
  •  OpenStack Data processing service -> Sahara
    • Datenverarbeitungssystem
    • Dem Nutzer einfachen Zugang zu Datenverarbeitungscluster bereitstellen
    • Wikipedia-Artikel wird an diesem Punkt zu chinesisch... SPÄTER noch mal lesen

Mittwoch, 7. Oktober 2015

Hadoop, Dockers und noch vieles mehr

OpenStack
  • Cloud erzeugen, verwalten, bearbeiten
Ceph
  • Bereitstellung von Objekt-, Block- oder Dateisytem-Speicher
  • schneller Zugriff, parallel große Anzahl von Zugriffen möglich
  • RADOS Reliable Autonomic Distributed Object Store
  • Ausführung in einem Storage-Cluster
  • Applikationen in C, C++, Java, Python & PHP möglich
  • RADOS Gateway unterstützt OpenStack Swift & Amazon S3
  • Ceph bietet ein File System mit POSIX Semantik an, was andere Systeme wohl nicht haben
  • RBD RADOS Block Device
 Apache Hadoop
  • Framework für skalierbare, verteilt arbeitende Software
  • freie Software in Java geschrieben
  • basiert auf einem MapReduce Algorithmus von Google
  • Hadoop ermöglicht es intensive Rechenprozesse mit großen Datenmengen auf Computerclustern durchzuführen
  • HDFS (Hadoop Distributed File System) ist ein hochverfügbares Dateisystem zur Speicherung sehr großer Datenmengen auf den Dateisystemen mehrer Rechner
  • HBASE skalierbare Datenbank zur Verwaltung sehr großer Datenmengen innerhalb eines Hadoop Clusters; basiert auf Google Big Table (Hochleistungs Datenbanksystem)
  • HIVE -> Erweiterung um Data Warehouse Funktionalität; Anfragesprache HIVE QL und Indizes (SQL ähnlich)
  • Pig: Erstellen von MapReduce Programme für Hadoop mit der Sprache Pig Latin
  • Chukwa: Echtzeitüberwachung sehr großer verteilter Systeme
  • ZooKeeper: Dient der verteilten Konfiguration von verteilten Systemen
  • auf der Homepage werden noch wesentlich mehr Module beschrieben
Elasticsearch
  • Suchmaschine
  • Vusalisierung heißt Marvel
  • JSON Dokumente -> Daten sind immer Dokumente
Dockers
  • Container Verwaltung, die unterschiedlichste Anwendungen (in Containern) bereitstellt. Dabei ist es völlig unerheblich aus welcher Umbegung sue aufgerufen wird
  • Im Gegensatz zu VMs fehlt Dockers das GuestOS. Dockers teilt den Kernel mit allen anderen Containern. Sie laufen als isolierter Prozess auf dem Host-System
LinuxContainers
  • Bereitstellung einer Distro- & Anbieter-neutralen Umgebung zur Entwicklung von LinuxContainer Technologien
  • Bereitstellung einer Umgebung ohne Kernel & Hardware Simulation (wie es bei einer VM der Fall ist)
  • LXC (lex-cee): Set mit WErkzeugen, Templates,, Bibliotheken und Programmierschnittstellen -> Erzeugung von Containern
  • LXD (leex-dee): Container-Hypervisor
    • systemweiter Daemon (lxd)
    • Kommandozeilen Client (lxc)
    • OpenStack Nova plugin (nova-compute-lxd) was ab Ubuntu 15.04 mitgeliefert wird
    • REST-API wird über den Daemon bereitgestellt (lokal & über Netzwerk)
  • LXCFS: Dateisystem, welches aktuell noch mit einigen Beschränkungen auf dem Linux-Kernel arbeitet. Möglich ist u.a.:
    • Bereitstellung eines cgroupfs-like Baum, der dem Container bekannt ist und mit dem CG Manger arbeitet
    • Bereitstellung eines Datei-Sets, welches über die originale /proc eingebunden wird um CGroup-Werte bereit zustellen
REST (Representational State Transfer)
  • Programmierparadigma für verteilte Systeme, insbesonders für Webseiten
  • Abstraktion der Struktur und Verhalten des WWW
MapReduce
  • Programmiermodul von Google für nebenläufige Berechnungen über mehrere Petabyte große Datenmengen auf Computerclustern
NAS (Network Attached Storage)
  • Speicher der direkt an ein Netzwerk angeschlossen ist
  • Verwaltung der Dateien über Netzwerkprotokolle wie SMP/ CIFS, NFS (dateibasiert) oder iSCSI und FCoE (blockbasiert)
  • NAS-Systeme arbeiten autonom
Hypervisor:
  • Virtual Machine Monitor (VMM)
  • abstrahierende Schicht zwischen tatsächlicher Hardware (inkl. installiertem OS) und weiteren Betreibssystemen
  • Definition einer virtuellen Umgebung (hardwareresourcen, z.B. CPU, Speicher, FEstplattenplatz, verfügbare Peripherie)
  • Die definierte Umgebung ist völlig unabhängig von der realen Hardware, auf der sie eingerichtet wurde
  • VirtualBox, VMWare, XEN
KVM (Kernel-based Virtual Machine)
  • Hypervisor ohne Bedienoberfläche
  • Im Linux-Kerne fest implementiert
XEN
  • Hypervisor 
  • Citrix-Systems
Object Storage
Block Storage
Dateisystem Storage
Cluster
RabbitMQ


Donnerstag, 1. Oktober 2015

Definitionen und Abkürzungen

  • Broadcast Adresse: höchste IP Adresse (255.255.255.255) ist reserviert um ein Nachricht gleichzeitig an alle Teilnehmer zu senden
  • DNS: Domain Name Server; Server auf dem die Namen zu den Netzwerkadressen gespeichert sind -> 167.216.245.249 = www.linuxcare.com (nicht mehr erreichbar ;-))
  • FQDN: Fully Qualify Domain Name; Vollständiger Domainname, z.B. www.example.com. -> . => roor-label, .com => Top Level Domain, .example => second level domain, www => third level domain
  • LVM (Logic Volume Manager) notwendige Definitionen:
    • Physical Volume (PV): physikalisches Laufwerk, Partintion, RAID System, welches als LVM PV konfiguriert ist
    • Volume Group (VG): Gruppe aus einem oder mehreren PVs, welche durch weitere PVs erweitert werden kann. Es handelt sich um ein virtuelles Laufwerk, von dem ein oder mehrere logische Laufwerk abgeleitet werden kann
    • Logical Volume (LV): enspricht einer Partition auf einem nicht LVM System. Ein LV wurde im verlangten Format formatiert (EXT3, XFS, JFS, etc.). Das Laufwerk kann dann einfach gemounted und als Speicher verwendet werden
  • Dash:
    • Debian Almquist Shell -> Standardshell für Shellskripte, wird aber aufgrund ihrer Unkonfortabilität eher selten genutzt -> Bash
    • Unter Unity ist die Dash das Schnellstartmenü, in der das System nach Anwendungen, Dateien, etc. durchsucht werden kann 
     
  • Bash: Bourne again Shell
  • Apache: Webserver, der in Kombination mit MYSQL, PHP, Pearl oder Python zum LAMP (Linux, Apache, MySQL, PHP) Server wird
  • RC: Release Candidate 
  • FOSS: Free and Open Source Software 
  • systemd: Daemon für Linux-Systeme, das als erstes Programm, init-Programm, zum Starten, Überwachen und Beenden anderer Programme dient (seit Ubuntu 15.04)
  • Daemon: Unter Linux (oder Unix) ein Programm, was im Hintergrund abläuft
  • PaaS: Platform as a Service
  • SaaS: Software as a Service
  • IaaS: Infrastructure as a Service
  • QEMU: Quick Emulator ist eine freie virtuelle Maschine, die die gesamte Hardware eines Computers emuliert und durch die dynamische Übersetzung der Prozessorinstruktionen des Gastprozessors in Instruktionen für den Host-Prozessor eine sehr gute Ausführungsgeschwindigkeit erreicht
  • Puppet: Systemkonfigurationswerkzeug mit dem z.B. automatisiert mehrere Computer via Netzwerk konfiguriert werden können
  • RabbitMQ ist eine Open Source Message Broker Software, die das Advanced Message Queuing Protocol (AMQP) implementiert (Middleware, die zur Nachrichtenübertragung dient) ich habe keine Ahnung was das bedeutet :-(
  • ARM: Mikroprozessortechnik, die vor allem im embedded Bereich weit verbreitet ist. Advanced RISC Machines
  • CLI: Command Line Interface Kommandozeilen-Interaktionen
  • SDK: Software Developer Kit
  • LVM: Logical Volume Manager
  • DKMS: Dynamic Kernel Module Support
  • MTP: Media Transfer Protocol
  • ADB: Android Debug Bridge
  • RBAC: Role Based Access Control
  • TTL: Time to life (Gültigkeitsdauer)
  • VLAN: Virtual Local Area Network   
  • VPN: Virtual Private Network 
  • ETL: Extract, Transform, Load Prozess, mit dessen Hilfe Daten aus (veschiedenen) Systemen in einem Zielsystem vereinigt werden. Wird vor allen Dingen im Warehouse-Data Bereich verwendet
  • DAG: Database Availability Group: Eine DAG ist ein hochverfügbares und DAten absicherndes Feature von Exchange Server 2010 
  • JRE: Java Runtime Environment 
  • MTBF: Mean Time Between Failures -> mittlere Betriebsdauer zwischen Ausfällen 
  • WORM: Write Once read many 
  • NFV: Network Functions Virtualization 
  • VIP (external, internal):virtual IP 
  • ICMP: Internet Control Message Protocol 
  • CM: Configuration Management
  • Tarballs: komprimiertes Archiv mit der Endung tar.gz
  • IRQ: Interrupt ReQuest
  • ISR: Interrupt Service Routine
  • AHCI: Advanced Host Controller Interface offener Schnittstellen Standard für SATA-Controller
  • ACPI: Advanced Configuration and Power Interface, offener Industriestandard zur Energieverwaltung von Notebooks, Desktops und Servern