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.
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 |
Beispiele für PaaS-Anbieter für Java-Anwendungen (die Liste ist unvollständig):
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:
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
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.
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.
OpenShift-Doku:
Sehen Sie sich die OpenShift-Doku an: http://docs.redhat.com/docs/en-US/OpenShift_Express/2.0/html/User_Guide
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.
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
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".
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
Rufen Sie die im Internet eingerichtete Anwendung auf (ersetzen Sie {myrhcdomain} durch Ihren rhc-Domainnamen):
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
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
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>
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
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
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
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
Ähnlich einfach wie JSPs können Sie auch Java-Sourcen hinzufügen. Um Skalierbarkeit zu gewährleisten, sollten Sie eigenes Thread-Handling und statische Zustandsattribute vermeiden.
Alternativ zum Deployment per Maven-Struktur und pom.xml können Sie auch fertige WAR-Dateien deployen. Dies erfolgt über Kommandos, die per "Marker Files" mitgeteilt werden.
Sehen Sie sich mit
rhc-ctl-app -L
die Liste der "cartridges" für Datenbanken und Datenbankclients an. Darin enthalten sind z.B.:
mongodb-2.0, postgresql-8.4, mysql-5.1 und phpmyadmin-3.4.
Wie Sie Ihre Anwendung um eine Datenbank erweitern können, finden Sie erläutert unter: http://docs.redhat.com/docs/en-US/OpenShift_Express/2.0/html/User_Guide/sect-User_Guide-Adding_and_Managing_Database_Instances.html.