Barangolás az OpenShift világában

Posted by | · · · | Szoftverfejlesztés | Nincs hozzászólás a(z) Barangolás az OpenShift világában bejegyzéshez

Van egy remek garázs projekted, de az üzemeltetés kérdése álmatlan éjszakákat okoz? Akkor a platform szolgáltatást, közismertebb nevén a Platform as a Service-t (PaaS) Neked (is) találták ki! A PaaS egy felhő alapú szolgáltatás, amely leveszi az üzemeltetési infrastruktúra építési és karbantartási feladatokat a fejlesztők válláról. A szolgáltató biztosítja a hálózatot, a tárhelyet, a szervereket és egyéb erőforrásokat, így a programozóknak csak a fejlesztéssel kell foglalkozni. A különböző PaaS szolgáltatók a legkülönbözőbb nyelvekre biztosítanak webszervert, adatbázis szervert és más, a fejlesztés világához szorosan kötődő támogató alkalmazást (pl. continuous integration eszközt). Én a következő Java side projektemhez kerestem ingyenes platform szolgáltatást és végül (a Cloud Foundry, Heroku, Google App Engine, Amazon Web Services stb. helyett) az OpenShift mellett döntöttem.

 

Az OpenShift a Red Hat platform szolgáltatása. Számos különböző nyelven lehet rá fejleszteni, mint például a Java, PHP, Node.js, Python, Ruby és a Perl, illetve többféle fejlesztői keretrendszert is támogat (CakePHP, Codelgniter, Drupal, Rails, Spring, Symfony, WordPress, Zend stb…). Az alkalmazások alá pedig különböző adatbázis szervereket is rakhatunk, mint például a MySQL, MongoDB vagy a PostgreSQL.

Vágjunk bele!

Regisztráció után az ingyenes csomaghoz van hozzáférésünk, ami 3 kicsi alkalmazáskonténert (gear) tartalmaz. Ezek egyenként 512 MB memóriát és 1 GB tárhelyet kapnak. Mindegyik csomag tartalmazza ezt a 3 ingyenes gear-t, szóval érdemes lehet a havidíjmentes Bronz csomagra váltani, már csak azért is, mert az ingyenes csomagban 24 órányi üresjárat után idle státuszba küldik az alkalmazásunkat (ahonnan állítólag újra futó állapotba kerül, ha kérés érkezik, de sajnos én nem ezt tapasztaltam). A Bronz csomagban is csak a 4. gear-től kezdve jelentkeznek kiadások, viszont cserébe dolgozhatunk csapatban is és használhatunk egyedi SSL tanúsítványokat a különböző domain-ekhez.
pricing

Alkalmazásaink kezeléséhez több eszköz közül is választhatunk. Az OpenShift biztosít nekünk egy online web konzolt, amelyen könnyedén módosíthatunk a profilunkon és menedzselhetjük az alkalmazásainkat. Ugyanezt megtehetjük az OpenShift kliens eszközével, az rhc-vel is, ha a parancssoros felületet jobban kedveljük.
(Tipp: Az rhc ruby-n futó alkalmazás, de nekem Windows 7-en az rhc setup parancs hibára futott a legújabb ruby verzióval, a 2.2.3.-assal. Az eggyel korábbi 2.1.7-es verzióval hiba nélkül lefutott.)
Ezen kívül érdemes megemlíteni, hogy az OpenShift Git verziókövetőt használ a forráskód és az alkalmazások beállításainak menedzselésére, amellyel szintén elérhetjük az alkalmazásunk fájljait. Illetve használhatunk bármilyen SSH, SCP, SFTP eszközöket is. Mindezek használatához meg kell adnunk a profilunkon legalább egy publikus kulcsot, amellyel azonosítani tudjuk magunkat. Ha már van ilyenünk, akkor egyszerűen csak megadjuk, de ennek hiányát az rhc eszköz első setup futtatáskor érzékeli, és legenerálja nekünk, illetve kérésre fel is tölti a profilunkba.

Do It Yourself TomEE!

Mint már korábban említettem, egy Java projekt kedvéért kezdtem bele a PaaS kutatásba. Az OpenShift új Java alkalmazás létrehozásához a következő cartridge-okat (környezet, amelyen az alkalmazásod fogod futtatni) kínálja fel:

  • JBoss 7
  • Tomcat 6, Tomcat 7
  • Vert.x 2.1
  • WildFly 8.2.1, WildFly 9, WildFly 10

Én ezzel szemben a már megszokott TomEE (1.7.0) alkalmazás szervert kívántam használni, amelyre az OpenShift a Do-It-Yourself egyéni cartridge-ot kínálja megoldásként. Ekkor a fejlesztő szabad kezet kap, hogy milyen szervert és keretrendszereket használ az alkalmazásához. A következő lépések szükségesek a TomEE (1.7.0) alkalmazás szerver OpenShift-en való használatához:

  1. Csináljunk egy DIY alkalmazást az OpenShift-en
    rhc app create tomee diy
  2. Állítsuk le az alkalmazást
    Alapértelmezetten egy ruby szerver fut az újonnan létrehozott DIY cartridge-unkon, amelyet le kell állítani.
    rhc app stop -a tomee
  3. Töröljük a felesleges fájlokat
    Gittel klónozzuk az alkalmazásunk repository-ját (ha még nem tettük meg), majd töröljük a következő fájlokat:diy/index.html
    diy/testrubyserver.rb
    ezek után töröljük a következő két fájl tartalmát:.openshift\action_hooks\start
    .openshift\action_hooks\stop

    Commit-oljuk és push-oljuk a változtatásokat

  4.  

  5. Lépjünk be valamely SSH/SCP eszközünkkel az alkalmazásunk tárhelyére és másoljuk fel az $OPENSHIFT_DATA_DIR környezeti változó által mutatott helyre (/app-root/data) a TomEE alkalmazás szervert. Én a saját fejlesztői szerveremet másoltam, mert abban minden szükséges lib rendelkezésre állt már.
    (Tipp: A Red Hat javaslata alapján minden perzisztens fájlt a $OPENSHIFT_DATA_DIR mappában tároljunk, mert ez az egyedüli perzisztens mappa.)
    (Tipp2: Windows-ról másolva a startup.sh, shutdown.sh és catalina.sh fájloknak meg kell adni az executable opciót a tulajdonosnak másolás után.)
  6.  

  7. Módosítsuk a server.xml fájlt
    Szükségünk lesz az OpensShift által az alkalmazásnak kiosztott IP címre:
    env | grep OPENSHIFT_DIY_IPEzen kívűl szükséges még a 8080-as porton kívűl minden más alapértelmezett port megváltoztatása, ugyanis az OpenShift nem engedélyezi az 15000 alatti portok használatát (kivéve a 8080-at). Illetve az IP címet is meg kell adni mindenhol.Tehát a server.xml-ben írjuk át:
    Ezt:

    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

    Erre:

    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000" address="$OPENSHIFT_DIY_IP"
    redirectPort="8443" />

    (Értelemszerűen behelyettesítve a kinyert IP címet.)

     

    A shutdown portot írjuk át így:
    <Server port="8005" shutdown="SHUTDOWN">

    helyett:

    <Server port="15005" shutdown="SHUTDOWN" address="$OPENSHIFT_DIY_IP">

     

    És a AJP 1.3 connector-t így:

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

    helyett:

    <Connector port="15009" protocol="AJP/1.3" redirectPort="8443" address="$OPENSHIFT_DIY_IP"/>

  8. Módosítsuk az action hook-okat
    (Feltételezve, hogy a tomee mappájának neve a következő: apache-tomee-plus-1.7.0)
    A .openshift\action_hooks\start tartalma:
    $OPENSHIFT_DATA_DIR/apache-tomee-plus-1.7.0/bin/startup.sh
    A .openshift\action_hooks\stop tartalma:
    $OPENSHIFT_DATA_DIR/apache-tomee-plus-1.7.0/bin/shutdown.sh

Ezzel el is készültünk, az alkalmazás szerverünk készen áll az alkalmazásunk fogadására. Nincs más dolgunk, mint feltölteni a war fájlunkat a TomEE webapps mappájába.
(Tipp: A vaadin projektem Sass scss-t használ, de az OpenShift nem képes on-the-fly fordítani azt, így előfordítás szükséges, hogy a megfelelő stílust használja az alkalmazás. Tehát fordítsuk bele a css-t a war-ba és úgy töltsük fel.)


No Comments

Leave a comment