Openshift i el mode manteniment de Drupal

Abans de tot, he de dir que per comprendre totalment aquest article s’ha de conèixer què són Openshift i Drupal, què és un balancejador de càrrega i que son els codis de resposta HTTP.

Si no fos així. aquí teniu uns enllaços que us podran ajudar:

http://www.openshift.com/

http://drupal.org/

http://ca.wikipedia.org/wiki/Balan%C3%A7_de_c%C3%A0rrega

http://haproxy.1wt.eu/

http://tools.ietf.org/html/rfc2616#section-5.1.1 (6.1.1 Status Code and Reason Phrase)

Un cop llest això, ja podem començar:

Des de fa uns temps estic jugant amb Openshift i amb uns amics hem estat treballant amb un projecte que hem desplegat a una aplicació Drupal.

Vam crear una aplicació Drupal7 (cartutxos PHP5.3 i MySQL 5.1) indicant que havia de ser escalable (escollint Scale With Web Traffic a la opció Scale de la pantalla de creació d’aplicacions) L’aplicació es va desplegar a la primera i vam començar a canviar l’aspecte i a introduir els continguts.

La sorpresa la vam tenir quan vam activar el mode manteniment de Drupal i vam deixar de poder accedir a l’aplicació (ni a la pàgina per fer login /user) A més, la pàgina que havíem definit a Drupal per mostrar quan estigués en mode manteniment tampoc es veia i no sabíem el perquè.

Després d’uns dies de mirar el perquè passava això, vam posar un missatge al forum d’Openshift i al cap de poc ens van respondre amb la solució. El problema venia pel següent:

  1. Quan poses un site en mode manteniment Drupal retorna un codi HTTP 503 a totes les pàgines excepte a la pàgina per logar-se (/user)
  2. El balancejador d’Openshift (HAProxy és el que fan servir) per saber si l’aplicació està funcionant, intenta accedir a l’arrel (/) del context. Com Drupal retornava un codi HTTP 503, el balancejador creia que l’aplicació estava caiguda i generava la seva pròpia resposta de servei no disponible (codi HTTP 503).

La sol·lució va ser configurar el balancejador per que la URL per testejar fos /user en comptes de l’arrel del context (/). D’aquesta manera, totes les peticions que anaven a Drupal tornaven la pàgina de site en manteniment que havíem definit excepte quan accedies a la URL /user.

Per aplicar la nova configuració al balancejador vam modificar el fitxer de configuració de l’HAProxy (haproxy.cfg) per canviar la línia:

option httpchk GET /user 

per la següent:

option httpchk GET / user

D’aquesta manera se li indica al balancejador la URL que ha de fer servir per comprovar l’estat de l’aplicació.

Espero que aquest article us hagi servir i, si mai us trobeu amb el mateix problema, us en recordeu i estalvieu temps.

4 pensaments sobre “Openshift i el mode manteniment de Drupal

  1. heros essay Respon

    Good day! Would you mind if I share your blog with my myspace group?

    There’s a lot of folks that I think would really enjoy your content.
    Please let me know. Thank you

Respon a heros essay Cancel·la les respostes

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *