Standard Server Architektur

Wenn man selber Dienste auf einem Linux System betreibt hat man immer wieder das Problem:

- Wo installieren
- Wie starten und stoppen
- Versionswechsel
- Rollback Szenarien bei Versionswechsel
- Wo sollen die Konfigurationsdateien liegen
- Umzug der Dienste auf einen anderen Server

Diese Probleme kann man umgehen wenn man einen eigenen Verzeichnisbaum erstellt in dem dann die Daten alle liegen. Die einzige Verbindung zum Betriebssystem wird über ein Shell Script hergestellt welches in /etc/init.d verlinkt ist.

Mal sehen ob den Verzeichnisbaum hier als Aufzählliste hin bekomme:

  • services
    • appserver
      • tomcat
        • active --> apache-tomcat-5.5.25
        • apache-tomcat-5.5.25
    • etc
      • init.d
        • mcp
        • tomcat
      • start
        • S00tomcat --> ../init.d/tomcat
      • stop
        • K00tomcat --> ../init.d/tomcat
      • sysconfig
        • j2ee
    • source
      • dists
      • tools
      • webserver
    • usr
      • local
        • apps
          • jdk
            • active --> jdk1.5.0_14
            • jdk1.5.0_14
        • bin
        • sbin


Verzeichnisstruktur
Wie man oben sehen kann bauen wir unter /services fast so eine Struktur auf wie in einem normalen Linux System. Auf den ersten Blick ist das unübersichtlich. Im weiteren erkläre ich wo den jetzt genau die Vorteile liegen.


Umzug / Installation
Diese Struktur spielt ihre Vorteile vor allem dann aus wenn es darum geht das alle zusammenhängenden Dienste umziehen sollen, oder auf einem Server neu installiert werden sollen.
Dazu reicht es aus /services in einem tar File einzupacken und auf dem Zielsystem wieder auspacken. Dann kann man den mcp wieder nach /etc/init.d verlinken und einmal chkconfig -a mcp aufrufen fertig.


Starten / Stoppen
Das Skript /services/etc/init.d/mcp ist das master control program dieses schaut in den beiden Verzeichnissen /services/etc/start und /services/etc/stop nach welche Dienste gestartet und welche gestoppt werden sollen. Diese werden dann in /services/etc/init.d gesucht und mit start oder stop als Optionen aufgerufen. Das mcp ist auch das einzigste Skript welches nach /etc/init.d verlinkt wird.

Versionswechsel / Rollback
Wenn es durch ein Sicherheitsupdate notwendig geworden ist eine neue Version einzusetzten. Oder die Entwickler eine neuere Version wegen der Features benötigen. Muss man die vorhanden Version nicht ersetzten sondern baut nur die Symbolischen Links um.
In den Start/Stop Skripten wird immer nur über den Symbolische "active" Link auf die Binarys verwiesen. Wenn man also auf eine neuere Version des apache-tomcat wechseln möchte wird dieser im selben Verzeichnis installiert wie der jetzige (apache-tomcat-5.5.25) und der Symbolische Link wird auf die neue Version gesetzt.
Klar ist das der neue auch konfiguriert werden muss, aber bei Sicherheitsupdates beleiben in aller Regel die Konfigurationsdateien die gleichen. Also einfach die "alten" Konfigurationsdateien in das neue Konfig-Verzecihnis kopieren.