PaaS mit der Red Hat Cloud (RHC) mit OpenShift

+ andere TechDocs
+ Google App Engine (GAE)
+ Red Hat OpenShift
+


Die Red Hat Cloud (RHC) zählt zu den Cloud-Computing-Plattformen. Beim Cloud Computing werden Anwendungen auf entfernten Servern gehostet und ausgeführt. Die wichtigsten Vorteile sind: Es muss keine eigene IT vorhanden sein und gewartet werden, die Anwendung kann bei Bedarf ("On-Demand") leicht hoch skaliert werden und es werden optimale Internet-Zugriffsgeschwindigkeiten angeboten.

Im Folgenden werden einige erste Schritte mit Red Hat OpenShift unter Windows demonstriert.



Inhalt

  1. Cloud-Typen
  2. PaaS-Anbieter für Java-Anwendungen
  3. Red Hat OpenShift
  4. OpenShift-Basisinstallation unter Windows
  5. rhc-Domain einrichten und eine erste Cloud-Applikation erzeugen
  6. Cloud-Applikation ändern und neu deployen
  7. Java, Marker Files, Datenbank



Cloud-Typen

Es gibt verschiedene Kategorisierungen für Cloud-Computing-Systeme, zum Beispiel die beiden folgenden.

Kategorisierung nach Zugänglichkeit:

Private Cloud Nur für bestimmte Anwender nutzbar, meistens nur innerhalb einer Firma.
Kann bereits wesentliche Kosteneinsparungen bringen.
Daten müssen nicht außer Haus gegeben werden.
Beispiel: Red Hat CloudForms
Public Cloud Öffentlich zugänglich und gegen Bezahlung nutzbar.
Bietet wesentlich größeres Sparpotenzial.
Könnte wegen der Datenüberlassung kritischer sein.
Beispiele: Amazon EC2, Red Hat Cloud (RHC), Google App Engine (GAE), Microsoft Azure

Kategorisierung nach Architekturebene bzw. Serviceart:

Software as a Service
(SaaS)
Software wird als Dienstleistung basierend auf Internettechniken angeboten.
Beispiele: Web-E-Mail-Dienste, Google Apps, Salesforce CRM
Platform as a Service
(PaaS)
Eine integrierte Laufzeit- (und evtl. auch Entwicklungs-)umgebung wird als Dienst für eigene Programme zur Verfügung gestellt.
In der Regel gibt es bestimmte Einschränkungen (z.B. Programmiersprache).
Beispiele: Red Hat OpenShift, Google App Engine (GAE), Microsoft Azure
Infrastructure as a Service
(IaaS)
Eine Rechnerinfrastruktur wird als Dienst zur Verfügung gestellt.
Meistens können verschiedene Betriebssysteme und beliebige Programmiersprachen eingesetzt werden.
Beispiel: Amazon EC2


PaaS-Anbieter für Java-Anwendungen

Beispiele für PaaS-Anbieter für Java-Anwendungen (die Liste ist unvollständig):



Red Hat OpenShift

Red Hat OpenShift ist eine Platform-as-a-Service-Cloud (PaaS) auf der Basis von Red Hat Enterprise Linux. OpenShift steht in zwei Varianten zur Verfügung:



OpenShift-Basisinstallation unter Windows

  1. Git:

    Git ist ähnlich wie Mercurial (hg) ein verteiltes Versionskontrollsystem (DVCS, Distributed Version Control System).

    Downloaden Sie die Git-Installationsdatei für Windows (z.B. Git-1.7.8-preview20111206.exe) von http://git-scm.com und führen Sie die Installation aus.

    Sehen Sie sich die Dokumentation zu Git an: http://git-scm.com/documentation

  2. Red-Hat-OpenShift-Account:

    Beantragen Sie auf der OpenShift-Webseite https://openshift.redhat.com einen Account unter "Sign up and try it". Lesen Sie sich vorher die Nutzungsbedingungen durch.

    Falls Sie nicht die "Confirm your Red Hat account"-E-Mail erhalten: Sehen Sie nach, ob sie vielleicht im Spam-Ordner gelandet ist.

  3. Client-Tools Cygwin, RubyGems und rhc:

    Installieren Sie benötigte Client-Tools, wie beschrieben unter https://openshift.redhat.com/app/express#quickstart:

    Downloaden Sie zu Cygwin (z.B. Version 1.7.9-1) die setup.exe-Installationsdatei von http://cygwin.com.
    Führen Sie die Cygwin-Installationsdatei aus.
    Im Folgenden wird davon ausgegangen, dass Sie als Installationsziel C:\Tools\cygwin wählen.
    Aktivieren Sie im "Cygwin Setup" im "Select Packages"-Dialog die unter https://openshift.redhat.com/app/express#win aufgelisteten Packages (openssh, ruby, make, gcc, git), indem Sie sie nacheinander im "Search"-Feld eintragen und jeweils in der Liste durch Klick auf "Skip" aktivieren.

    Downloaden Sie RubyGems (z.B. rubygems-1.8.15.zip) von http://rubyforge.org/projects/rubygems.
    Entzippen Sie die Datei nach C:\Tools\rubygems.

    Öffnen Sie das Cygwin-Terminal, entweder per:

    C:\Tools\cygwin\Cygwin.bat

    oder per:

    C:\Tools\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -

    oder per Desktop-Icon.

    Installieren Sie rhc (z.B. Version 0.84.15), indem Sie im Cygwin-Terminal ausführen:

    ruby C:/Tools/rubygems/setup.rb install

    gem install rhc

    Als Ergebnis erhalten Sie im C:\Tools\cygwin\bin-Verzeichnis diverse rhc-...-Kommandos.

  4. OpenShift-Doku:

    Sehen Sie sich die OpenShift-Doku an: http://docs.redhat.com/docs/en-US/OpenShift_Express/2.0/html/User_Guide



rhc-Domain einrichten und eine erste Cloud-Applikation erzeugen

  1. Falls Sie im Folgenden Fehlermeldungen erhalten ähnlich zu:

    ...ruby.exe: *** fatal error - unable to remap ... to same address as parent ...
    ...ruby ... fork: child ... - died waiting for dll loading, errno 11

    Dann verfahren Sie folgendermaßen:
    Führen Sie im Cygwin-Terminal aus:

    find /bin /lib /usr -iname '*.so' > /tmp/to_rebase.lst

    find /bin /lib /usr -iname '*.dll' >> /tmp/to_rebase.lst

    Beenden Sie alle Cygwin-Prozesse und schließen Sie alle Cygwin-Terminals. Starten Sie im Verzeichnis C:\Tools\cygwin\bin ash.exe mit Administratorrechten (über rechte Maustaste), und führen Sie aus:

    /usr/bin/rebaseall -T /tmp/to_rebase.lst

    exit

    Starten Sie den PC neu.

  2. Richten Sie eine rhc-Domain (bzw. einen rhc-Namespace) ein, wie beschrieben unter https://openshift.redhat.com/app/express#create_domain_name:

    Führen Sie im Cygwin-Terminal aus (ersetzen Sie dabei {myrhcdomain} unbedingt durch einen Namen, der die wesentlichen Bestandteile Ihrer Internet-Domainadresse enthält, aber kein Minuszeichen enthält, und ersetzen Sie auch überall {Meine@Email.Adresse} und {MeinRhcPasswort}):

    rhc-create-domain -l {Meine@Email.Adresse} -p {MeinRhcPasswort} -n {myrhcdomain}

    Sie erhalten: Creation successful, You may now create an application.

    Checken Sie auch:

    rhc-domain-info -l {Meine@Email.Adresse} -p {MeinRhcPasswort} -i

  3. Sehen Sie sich mit

    rhc-create-app -h

    unter der Option "-t" die Liste der erlaubten Projekttypen an. Darin enthalten ist z.B. "jbossas-7.0".

  4. Erstellen Sie eine rhc-App mit dem Namen myfirstrhcapp und vom Typ jbossas-7.0:

    rhc-create-app -l {Meine@Email.Adresse} -p {MeinRhcPasswort} -a myfirstrhcapp -t jbossas-7.0

    Sie erhalten:
    myfirstrhcapp published: http://myfirstrhcapp-{myrhcdomain}.rhcloud.com/
    git url: ssh://{MeineRhcUID}@myfirstrhcapp-{myrhcdomain}.rhcloud.com/~/git/myfirstrhcapp.git/
    Successfully created application: myfirstrhcapp

  5. Rufen Sie die im Internet eingerichtete Anwendung auf (ersetzen Sie {myrhcdomain} durch Ihren rhc-Domainnamen):

    start http://myfirstrhcapp-{myrhcdomain}.rhcloud.com

  6. Sehen Sie sich im Windows-Kommandozeilenfenster das neu erstellte Verzeichnis und die Maven-pom.xml an:

    cd /D C:\Tools\cygwin\home\%USERNAME%\myfirstrhcapp

    type pom.xml

    tree /F

    [C:\Tools\cygwin\home\%USERNAME%\myfirstrhcapp]
     |- [.git]
     |   '- ...
     |- [.openshift]
     |   '- ...
     |- [deployments]
     |   '- ...
     |- [src]
     |   '- [main]
     |       |- [java]
     |       |   '- ...
     |       |- [resources]
     |       |   '- ...
     |       '- [webapp]
     |           |- [images]
     |           |   '- ...
     |           |- [WEB-INF]
     |           |   '- web.xml
     |           |- health.jsp
     |           |- index.html
     |           '- snoop.jsp
     |- .gitignore
     '- pom.xml
    
  7. Sehen Sie sich im Cygwin-Terminal an:

    rhc-domain-info -l {Meine@Email.Adresse} -p {MeinRhcPasswort} -i

    rhc-domain-info -l {Meine@Email.Adresse} -p {MeinRhcPasswort}

    rhc-ctl-app -l {Meine@Email.Adresse} -p {MeinRhcPasswort} -a myfirstrhcapp -c status

    rhc-ctl-app -l {Meine@Email.Adresse} -p {MeinRhcPasswort} -a myfirstrhcapp -c threaddump

    rhc-tail-files -l {Meine@Email.Adresse} -p {MeinRhcPasswort} -a myfirstrhcapp

    rhc-tail-files -l {Meine@Email.Adresse} -p {MeinRhcPasswort} -a myfirstrhcapp -f myfirstrhcapp/jbossas-7.0/stdout.log



Cloud-Applikation ändern und neu deployen

  1. Wechseln Sie in das Webapp-Verzeichnis C:\Tools\cygwin\home\%USERNAME%\myfirstrhcapp\src\main\webapp und fügen Sie eine beliebige neue JSP-Datei mit dem Namen index.jsp hinzu, zum Beispiel mit folgendem Inhalt:

    <%@ page import="java.io.*" %>
    <%@ page import="java.util.*" %>
    <%@ page import="java.util.jar.*" %>
    
    <html>
    <body>
    <h2>Hallo RHC!</h2>
    <%
       String pth = getServletConfig().getServletContext().getRealPath( "/" );
       if( !pth.endsWith( "/" ) && !pth.endsWith( "\\" ) ) pth += "/";
       File mf = new File( pth + "META-INF/MANIFEST.MF" );
       if( mf.exists() ) {
          out.println( "<h4>Attribute in der META-INF/MANIFEST.MF:</h4>" );
          Manifest manifest = new Manifest( new FileInputStream( mf ) );
          for( Map.Entry<Object,Object> attr : manifest.getMainAttributes().entrySet() ) {
             out.println( attr + "<br>" );
          }
       }
    %>
    </body>
    </html>
    
  2. Konfigurieren Sie Git im Cygwin-Terminal:

    git --help

    git config -l | sort

    git config --global user.name "{Vorname} {Nachname}"

    git config --global user.email "{Meine@Email.Adresse}"

    git config --global core.editor notepad

    git config -l | sort

  3. Commiten und pushen Sie Ihre Änderungen im Cygwin-Terminal:

    pwd

    cd /home/${USERNAME}/myfirstrhcapp

    pwd

    git status

    git add *

    git commit -m "Neue JSP hinzugefuegt"

    git status

    git push

    git status

    git log

  4. Rufen Sie die neu deployte JSP übers Internet auf:
    http://myfirstrhcapp-{myrhcdomain}.rhcloud.com/index.jsp

    Sehen Sie sich auch an:
    http://myfirstrhcapp-{myrhcdomain}.rhcloud.com/snoop.jsp

  5. Falls Sie folgende Fehlermeldung erhalten:

    Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
    fatal: The remote end hung up unexpectedly

    Dann achten Sie darauf, dass Sie die Kommandos nicht im Windows-Kommandozeilenfenster, sondern im Cygwin-Terminal ausführen, und sehen Sie sich an:
    https://www.redhat.com/openshift/community/kb/kb-e1015-how-to-resolve-permission-denied-errors-permission-denied-publickeygssapi-keyexgssapi-wi
    https://www.redhat.com/openshift/community/forums/express/pull-application



Java, Marker Files, Datenbank




Weitere Themen: andere TechDocs | Google App Engine (GAE)
© 2011 Torsten Horn, Aachen