Jan 16

Arquitectura HA escalable

Reading time: 2 – 4 minutes

A aquestes altures tots heu sentit a parlar més o menys de AWS. Sota el meu punt de vista són un conjunt de serveis a tenir molt en compte en el futur de les empreses. En entorns que cada cop es basen de forma més forta amb la virtualització i la externalització del hardware amb arquitectures com el SaaS. Doncs bé, si penseu treballar amb AWS hi ha unes eines web de l’empresa Righscale que valen realment la pena, el dolent és que no són lliures i que les has de contractar com un SaaS, amb tot el bo i el dolent que això suposa.

Bé doncs, tot llegint el wiki dels productes de Rightscale he trobat uns gràfics molt clars i representatius de com han de ser les arquitectures HA:

Arquitectura HA

Arquitectures HA escalables sobre AWS:

Arquitectura HA w/autoscaling

I l’aplicació d’aquesta teoria sobre un cas real per l’empresa wik.is:

arquitectura de wik.is

Per altre banda també voldria recomenar un parell de pàgines d’aquest wiki que comentava:

  • Auto-Scaling setup com el nom ens indica parla de com montar una arquitectura autoescalable amb rightscale i a més també amb alta disponibilitat
  • EC2 infraestructure s’explica l’anàlisis de com es va solucionar la problemàtica de wik.is amb els productes d’AWS i Rightscale

Dec 02

Després em pregunten perquè no m’agrada el Windows…

Reading time: 2 – 2 minutes

Aquesta tarda he patit un expedient X’s, de fet, tots estem acostumats a ser víctimes d’aquests fenòmens quan treballem amb ordinadors i si és amb Win encara més. La qüestió ha estat amb una placa IB830H. Aquesta placa porta embeded una Intel PRO/100 VE una targeta més que típica i tòpica en sistemes professionals. A més podria afegir que és una de les targetes que més m’agradan. Per si fos poc el seu suport en sistemes de Microsoft estan soportadíssimes, com no podia ser d’altre forma.

Doncs la qüestió és que després d’instal·lar els drivers que havia descarregat des de la web d’intel la targeta es detectava perfectament i si esnifava el canal fins hi tot veia a passar paquets però en cap cas la targeta rebia cap paquet.

Després de fer mil proves i canviar els drivers un munt de vegades, la cosa no ha canviat gens i quan ja estava apunt de llençar la toballola he provat una cosa tan estúpida i simple com:

  • Entrar a la BIOS
  • Desactivar la targeta de xarxa
  • Arrancar el Windows
  • Després apaguem
  • Tornem a entrar a la BIOS
  • Activar la targeta de xarxa
  • Tornem a entrar al Windows
  • … i ja va tot sense tocar res!!!

Increible, eh!? doncs això és el bonic que té el Windows. He de dir que com sempre passa durant tot aquest procés incert he arrencat amb una CD de Gentoo i la targeta de xarxa sense fer totes aquestes tonteries funcionava perfectament. O sigui, que rebia i enviava paquets sense problemes. Realment això és una altre prova de com el Windows és contraproduent en molts i molts sentits!

Nov 23

Càlcul dels mm de l’òptica d’una càmara

Reading time: < 1 minute Fórmula molt simple però útil, serveix per saber quina és la mida d'una òptica d'una càmara en funció de la distància i l'espai horitzontal a registrar:

( Distància x 4’8 ) / Horitzontal = mm Òptica
S’assumeix que la distància i l’hortizontal venen donades en metres

Realment útil si penseu en sistemes de videovigilància o d’altres similars.

Nov 20

podcast 1×13: desafio networking [la solución]

This entry is part 3 of 3 in the series desafio networking

Reading time: < 1 minute A pesar de que la solución se alcanzó y aplico durante los meses de agosto y septiembre, hasta hoy no he podido grabar la solución en este podcast. Espero que haya sabido explicarla bien y que quede claro como se ha hecho para solucionar el problema, sinó preguntad.

Aug 26

digital signage, en un cop d’ull

Reading time: 1 – 2 minutes

A moltes persones els costa entendre a quin mercat esta orientat movilpoint, doncs bé, aquest setembre i per primer cop a aquest país es farà una fira a Madrid sobre Digital Signage, mercat en el qual treballa l’empresa on treballo com CTO. Doncs bé, a la web de la fira: www.total-media.es he trobat el video que penjo a continuació i que explica diria jo que molt bé de què tracta el mercat del digital signage.

No oblideu el motto de movilpoint: kiosks and digital signage technologies

Jul 29

podcast 1×11: desafio networking [el problema]

This entry is part 2 of 3 in the series desafio networking

Reading time: < 1 minute Hablando sobre el problema del articulo sobre el desafio de networking. También aprovecho para enlazar una buena referencia sobre como comprender los problemas de secuencias TCP:

Espero haberme explicado bien y haber podido describir el problema algo mejor que en el articulo anterior, ya que no es sencillo describir un problema tan inusual.

[display_podcast]

Jul 24

Desafio Networking [el problema]

This entry is part 1 of 3 in the series desafio networking

Reading time: 6 – 10 minutes

Escenario

Se dispone de un dispositivo de hardware con un linux embedded al que no se puede acceder ya que el fabricante no lo facilita, se ha intentado acceder pero no hemos sido capaces de acceder ni con nuestros medios ni con los de una importante empresa de electrónica. Creemos que el kernel es un 2.4.X por lo que observamos. El dispositivo tiene una pantalla y su finlidad es mediante un protocolo propietario y un protocolo de transporte de ficheros (FTP) descargar una playlist para reproducir en la pantalla.

A través de red se conecta al servidor del fabricante de donde recoje una playlist y unos contenidos multimedia. Escencialmente usa los puertos:

  • TCP/8889 (protocolo de control del fabricante) va en ‘plain text’ ya le hemos hecho la ingenieria inversa.
  • FTP en modo pasivo

Con el servidor del fabricante descarga el 99% de la veces correctamente y sin problemas. En el fichero adjunto ‘korea-ok.cap’ si lo examinais podreis ver que todo se desarrolla perfectamente. La IP privada que podeis ver es del dispositivo en la LAN y a través de una LMDS se conecta a Korea a la IP: 210.114.220.180, si os fijais el fabricante usa como servidor FTP un ‘Serv-U’ para Windows.

Problema

Se ha implementado el protocolo propietario del fabricante con Python y funciona perfectamente, el problema es al hacer la descarga por FTP. El dispositivo se conecta a nuestro servidor FTP y de forma completamente aleatoria cierra la transmisión sin motivo aparente y se reinicia el dispositivo. Esto siempre pasa mientras se esta haciendo una conexión FTP-control (21/tcp) o FTP-data (puerto aleatorio del ftp pasivo/tcp).

En el fichero ‘cwd-fail.cap’ se puede ver uno de los típicos fallos que tiene el dispositivo al intentar descargar a un servidor FTP local (en este caso un proftpd en una Gentoo). Concrectamente al mandar el comando FTP ‘CWD’ el dispositivo decide cerrar la conexión y no seguir con la descarga. Después de varios intentos se reinicia. Para no perderos con los paquetes he dejado en la captura sólo el socket que tiene el problema.

Para no despistar recordar que esto no tiene porqué pasar en el canal de FTP-control puede pasar también en un FTP-data, puede pasar al 1% de descarga del fichero, al 30%, 50%, 98%… es completamente aleatorio.

Para tener más ejemplos de errores se adjunta el fichero ‘local-fail.cap’ donde se puede ver como se da un error igual al anterior pero ahora en el canal de datos de FTP. Concretamente podeis ver como se cierra el socket en el paquete 916 sin motivo apararente. Comentar que los errores de checksum de TCP no son relevantes ya que son debidos a que la tarjeta de red no estaba como sigue:

# ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: off
tx-checksumming: off
scatter-gather: off
tcp segmentation offload: off
udp fragmentation offload: off
generic segmentation offload: off

En otras pruebas se han hecho con los parametros comentados y el error es el mismo. A pesar de que ya no aparecen las alertas por ‘checksum error’. Si se cree vital tener una captura sin los errores de checksum no hay problema en hacerla. Pero después de meses de pruebas esta claro que esto no es relevante.

Para demostrar que el comportamiento es aleatorio a continuación se adjunta un fichero ‘local-ok.cap’ con la captura de una sesión en el serividor FTP local que ha funcionado perfectamente. Se puede observar en el paquete: 18975 que se descarga bien el contenido de un fichero, concretamente un fichero .mpg, con este fichero finaliza todo el traspaso de datos correctamente.

Hardware y soft probado

Se han hecho infinidad de pruebas y de combinaciones:

5 servidores distintos:

  • 1 debian con kernel 2.6.24.5-grsec-xxxx-grs-ipv4-64 en el proveedor ovh.es (100Mpbs simétricos sin restricciones), servidor FTP proftpd puerto 2090/tcp
  • 1 debian con kernel 2.6.18-5-686 proveedor jazztel sin fw, ni restricción de ningún tipo 100Mbps simétricos contra internet y servidores FTP en el puerto 21 pure-ftpd y en el puerto 2090 proftpd.
  • 1 ubuntu con kernel 2.6.24-16-server proveedor jazztel con fortinet como fw en modo transparente, proftpd en puerto 2090.
  • 1 gentoo con kernel 2.6.25-gentoo-r5 en red local con proftpd en puerto 2090.
  • 1 windows xp virtualizado con vmware workstation 6 sobre gentoo con un servidor FTP Serv-U, la tarjeta de red virtual en modo bridget con la del sistema operativo host.

el comportamiento es el mismo con todas la combinaciones

Intuición de solución

Jugando con los parámetros del kernel de TCP (/proc/sys/net/ipv4) se consiguen hacer cambios de comportamiento en el error. Por ejemplo, se han hecho pruebas con:

tcp_adv_win_sacle = 0,1,2
tcp_allowed_congestion_control = cubic, bic, reno, etc.
tcp_base_mss = 512, 1024, 1500
tcp_dsack = 0,1
tcp_ecn = 0,1
tcp_fack = 0,1
tcp_sack = 0,1
tcp_syncookies = 0,1
tcp_timestamps = 0,1
tcp_workaround_signed_windows = 0,1
tcp_window_scaling = 0,1

infinidad de valores y combinaciones probadas en:

tcp_mem
tcp_moderate_rcvbuf
tcp_mtu_probing
tcp_rmem
tcp_tso_win_divisor
tcp_wmem

También se han hecho pruebas limitando el ancho de banda, y con algunos otros parámetros de kernel que ahora no recuerdo. Se ha probado de opimitzar los servers para rendir al máximo, al mínimo, por defecto… etc.

Lo que se consigue con todo esto es conseguir que algunas veces se haga la descarga, pero no se consigue afianzar patrones de forma feaciente, es decir, a menudo se sigue cerrando la conexión TCP.

FAQ de obviedades

  1. Es obvio que el firmware del dispositivo esta mal hecho, pero esto no se puede tocar.
  2. El dispositivo se puede configurar via una compact flash, donde se guarda un fichero de configuración, un fichero binario compilado para ARM y el contenido multimedia que se va descargando.
  3. Se ha intentado hablar mil veces con el fabricante pero es como hablar con una pared, a parte los técnicos no hablan inglés, sólo coreano. Increible, no?
  4. El problema lo tiene el stack TCP del dispositivo o algún otro elemento similar. Este es el que cierra la conexión!!! no se puede mantener la conexión abierta des del servidor cuando el dispositivo la ha cerrado, lo único que se puede hacer es evitar que el cliente la cierre. El problema es como.
  5. Si! el server del fabricante descarga bien via FTP en el 99% de los casos. Este es el gran probleam, parece tonta la pregunta pero me la han hecho como 20 veces, así que merecia estar aquí.

Ficheros

Los ficheros de los que se habla en este correo de pueden descargar de:

  • http://oriolrius.cat/downloads/korea-ok.cap
  • http://oriolrius.cat/downloads/cwd-fail.cap
  • http://oriolrius.cat/downloads/local-fail.cap
  • http://oriolrius.cat/downloads/local-ok.cap

Desafio

El entorno de laboratorio lo tengo montado en la oficina, esta abierta 24×7 para quedar conmigo para hacer pruebas in-situ. Obviamente responderé todo lo que sea online y orientaré con lo que pueda y más.

Este problema lo arrastro desde hace unos 4 meses y llevo casi 4 dias sin vida, sólo obsesionado buscando la solución pero no hay manera de ver la luz.

No dispongo de muchos recursos, debido a que ya he perdido muchísmo dinero buscando la solución durante todo este tiempo, pero bajo resultados se recompensará tanto como sea posible a la mente privilegiada que consiga dar con la solución.

Ya tengo solución

Después de darle vueltas al tema de momento no contaré las varias soluciones que a dia de hoy ya he enontrado al problemón. Así pue aprovecharé el problema para lanzar el podcast 1×11 describiendo con todo detalle el problema y dando algunas pistas de como llegar a la solución. Quizá a nadie le pique tanto la curiosidad como para seguir la solución con este detalle pero de esta forma mantengo un poco la intriga y si alguien realmente necesita saber la solución sin seguir el culebrón sólo tiene que mandarme un correo privado y se lo contaré. Para hacer boca deciros que la intuición de solución que tenia no era mala.

Jun 02

VMWare trick: usar màquines virtuals creades en versions més noves en motors vells

Reading time: 2 – 2 minutes

Quan creem una màquina virtual d’VMWare amb una versió nova del Workstation, per exemple, si després volem usar aquesta màquina amb VMWare server 1.0.x la definició de la màquina virtual que es troba dins del fitxer .vmx no és compatible amb el motor esmentat. Així doncs, no podem llençar la màquina i el que veurem és un error que diu:

Configuration file was created by a VMware product with more features than this version

Doncs bé, aprofitant que les definicions de les màquines virtuals estan fetes amb fitxers de text podem editar-los i arreglar aquest problema, almenys jo ho he pogut fer gràcies a le notes de l’article: How To Convert VMware Server 2.0 Beta VMs into VMware Server 1.0.4 escrit a Desktop Virtualization.

Els canvis a fer són molt simples, primer cal modificar el fitxer .vmx que defineix la nostre màquina. Dins del fitxerlocalitzem on posa:

virtualHW.version = “6″

canviem la versió per:

virtualHW.version = “4″

Ara cal canviar també el fitxer on es defineix el disc dur virtual que usarà la màquina, això ho trobareu al fitxer .vmdk localitzem la part del codi on posa:

ddb.virtualHWVersion = “6″

i la canviem per:

ddb.virtualHWVersion = “4″

A mi m’ha funcionat, de totes formes el meu escenari era molt concret no sé si funcionarà per qualsevol escenari similar, tot i que jo opino que si.

May 26

phpList: newsletters i mailings de correu OpenSource

Reading time: 6 – 9 minutes

phpList logoFa temps l’O.Manyà em va demanar una aplicació per fer just això i no n’hi vaig saber dir cap, el més frustrant és que ja coneixia aquesta eina de fa molt de temps però mai li havia fet massa cas. De fet, la veia com una evolució del mailman. Però ara me’n adono que és algo molt més corporatiu, és a dir, no és pas una eina per gestionar llistes de correu (diria que no és capaç de fer-ho). Sinó que esta molt més orientat al concepte de newsletter o de mailings. O sigui, ideal per emetre comunicats d’empresa als nostres clients o per escriure mailings personalitzats als nostres clients informant del que sigui. Després de fer un repàs per les moltíssimes funcionalitats què té diria que la pinta és excel·lent. A més si ús passeu per la web del phpList veure-ho que té força screenshots i screencasts que poden donar-vos una idea molt aproximada de tota la funcionalitat que té l’eina.
A continuació adjunto el llistat de funcionalitats que té l’eina, com deia val la pena invertir-hi una estona en donar un cop d’ull. M’ha cridat molt l’atenció la possibilitat de poder generar mailings a partir de subscripcions a RSS. Així doncs, si a l’empresa tenim un blog podriem emetre un butlletí de notícies de forma automàtica gràcies a aquesta funcionalitat.

  • The Web Interface lets you write and send messages, and manage phplist over the internet.
  • phplist keeps sending messages from your web server, even after you shut down your computer.
  • 100 000 + subscribers. phplist is designed to manage mailing lists with hundreds of thousands of subscribers. phplist is excellent with smaller lists too!
  • No duplicate messages. No ‘forgotten’ messages. phplist manages message delivery with a message queue, ensuring that every subscriber gets the email message, and that no subscribers receive two copies, even if they’re subscribed to more than one list!
  • Open/View Tracking tells you how many users opened your email message. This provides a minimum statistic, as many email clients with privacy or security policies block images (gmail, thunderbird, and others).
  • Click Tracking tracks links and URLs. Statistics can be viewed by message, URL or subscriber.
  • Multiple Subscribe Pages allow you to choose many different combinations of templates, languages, user attributes and lists.
  • Templates are completely customizable, and make site integration a breeze.
  • Multiple Templates on different subscribe pages can integrate phplist with several different web sites.
  • Subscriber Attributes like ‘name’, ‘country’, and other personal information, are completely customizable. You can specify what information you need to get from users when they subscribe.
  • User Specific Content. You can use Subscriber Attributes in message content to make each and every email message personalized with the subscribers name, country, or any other attribute.
  • HTML email messages. Subscribers can be given the choice between text or html email messages. You decide whether subscribers can choose, what the default choice is, and what format a message is sent in: text only, html only, or both!
  • The HTML Editor allows you to edit html messages from phplist using FCKeditor. TinyMCE is also available.
  • Internationalization. phplist is available in English, French, German, Spanish, Portuguese, Traditional Chinese, Dutch, Vietname and Japanese and translation work is in progress for other languages.
  • Easy Install via Fantastico, FTP upload, or SSH.
  • Multiple List Administrators. The super-admin can assign lists to List Managers, who can manage their users and lists. The super-admin user can ‘prepare’ messages that can be sent by list managers to their lists.
  • Subscriber Preferences. Every email message contains personalized URLs for subscribers to update their preferences or unsubscribe. Subscribers can update their own information and keep your database up to date. Unlike most other mailing list managers, in phplist subscribers can change their email address.
  • The User Management tools are excellent to manage and maintain large databases of subscribers.
  • Bounce Processing keeps your database clean of unused and non-existent email addresses.
  • Advanced Bounce handling let’s you teach phplist to distinguish between permanent and temporary message-delivery errors. You can define automated actions on receipt of bounce messages according to matches with your regular expressions.
  • CSV Import and Export. Use CSV and tab delimited files to import your existing list of users or to export the users on the phplist system for use in your in-house database. phplist’s database has a ‘foreign key’ to help keep multiple copies of databases synchronized without duplicating users.
  • Attachments can be uploaded and included in messages for download.
  • Send a Web page. Tell phplist the URL of a web page you want to send to your users, and phplist will fetch it and send it. You can even put subscriber-specific parameters in the URL.
  • RSS feeds can be automatically sent to a mailing list weekly, daily, or monthly.
  • PDF messages can be automatically created and sent as attachments to ensure that your message is seen the way it was designed by all your subscribers, regardless of their email message reader.
  • Batch Processing is useful in shared hosting environments. Set the maximum number of sent messages in a given time period.
  • Throttling can limit the load on your server so it doesn’t overload.
  • Domain Throttling limits the number of emails to specific domains to keep on the friendly side of their system administrators.
  • Scheduled Sending let’s you tell phplist when the message is to be sent.
  • Repetition. A message can be repeated automatically to send updated dynamic content and attachments.
  • Text from HTML. Text email messages are managed fluently in phplist. phplist will automatically create a text version of an html message. Optionally the message composer can create it manually.
  • PGP signing and encrypting (soon).
    Send your message digitally signed or encrypted, or both.
  • Email to Fax (soon).
    Configure the details of your favourite email 2 fax gateway and phplist will send the HTML version of the message as a PDF attachment to your fax gateway. The fax will include the images in the HTML.
  • Integration with other tools. Several systems exist on the internet that integrate phplist with your favourite CMS or blogging tool. Check out the Documentation for a list.

Nov 28

Eliminar una URL indexada per Google

Reading time: 2 – 2 minutes

És un cas que no he requerit personalment però que ahir el Law em va haver d’explicar com es fa per poder ajudar a en Martin. La cosa és ben simple, els bots de google són molt inquiets i en un moment donat poder arribar a indexar webs o parts de webs que no ens interessa que estiguis accessibles a través del buscador. Doncs bé, si teniu la necessitat de donar de baixa alguna cosa que no volieu que s’indexés cal que a través de les google webmaster tools la doneu de baixa, concretament a l’screenshot següent podeu veure la secció exacte on fer-ho.

google-remove.png

Doncs bé després de complimentar adequadament el procés i en unes 48h la URL hauria de deixar d’estar indexada.

Per altre banda, i perquè això no torni a passar és important que a l’arrel del vostre servidor web afegiu, si no ho teniu, el fitxer robots.txt. Amb, per exemple, el següent contingut:

  • Exemple 1: Cap robot de cap buscador indexa res del nostre site
  • User-agent: *
    Disallow: /
    
  • Exemple 2: Cap robot de cap buscador indexa res de la URI /admimn/.
  • User-agent: *
    Disallow: /admin/
    

En princpi amb aquest parell d’idees hauria de ser suficient perquè pogueu dormir tranquils.