To content | To menu | To search


Tuesday 26 February 2013

déménagement (ouais encore)

Nouveau changement de serveurs pour la tourmentine: depuis dimanche soir les services sont hébergés dans 2 nouveaux datacenters !

Au niveau des nouveautés:

  • FreeBSD 9.1
  • MariaDB en remplacement de MySQL (kikoo Oracle)
  • Disques cryptés
  • HAST pour la redondance (fini les rsync qui durent des plombes), montage NFS (via ZFS) sur le serveur secondaire car le volume HAST ne peut être monté sur les deux nœuds en même temps

Il y a bien évidemment des changement de DNS, ainsi que la disparition des IPv6 virtuelles, remplacées par du round-robin DNS (c'est pas très propre mais bon), mais tout ça devrait rester relativement transparent.

La carte du failover est jouée à fond, le serveur principal étant maintenant deux fois plus puissant que le secondaire, et le failover pensé dans une optique maitre/esclave.

Il ne reste donc plus qu'a nettoyer les anciens serveurs avant de les rendre :)

Sunday 16 December 2012

L'antispam pour les nuls

Utilisateur comblé de Dotclear, j'étais victime depuis quelques temps de spam dans les commentaires, ce qui n'est pas bien grave dans le sens ou lesdits commentaires sont modéré à priori.

Mais c'est fatiguant d'avoir à surveiller les posts pour avoir 99% du temps de la merde à lire.

Or, Dotclear utilise entre autre le service Akismet pour filtrer les commentaires. Frustré par l’inefficacité de ce dernier, j'ai finalement été voir dans les paramètres, pour me rendre compte...que celui-ci était désactivé par défaut, faute de clé d'accès à l'API.

Une inscription pour obtenir cette clé plus tard, tous les nouveaux spams ont été filtrés. C'est magique.

Reste qu'envoyer des données un peu perso comme des commentaires à un service externe, c'est un peu moyen; je suis déjà à la recherche de quelques alternatives, si vous en avez faites-moi signe...dans les commentaires !

Billets connexes

Tuesday 9 October 2012

Le jour où telnet m'a sauvé la vie

Thanks, OpenSSH!

Y'a des protocoles comme ça, qui datent du début de l'internet (voir d'avant), et qui ne devraient franchement plus exister. Le FTP est l'un deux. Et puis telnet aussi.

Au boulot j'ai été horrifié de voir que les machines Solaris avaient toutes leur port telnet ouvert, et qu'en plus des gens s'en servaient encore pour se connecter aux machines...

Et puis aujourd'hui, l'accident bête. Problème de time-out SSH, classique, je rajoute la ligne qui va bien dans la conf et relance le service. Ce qui devient bête - voir même très con - c'est que je me déconnecte, plutôt que de garder ma session ouverte et d'en ouvrir une deuxième pour vérifier que tout va bien, comme tout admin normalement constitué aurai dû le faire.

Et là, c'est le drame: impossible de se loguer à la machine, SSH down...

Là j'ai plusieurs solutions:

  1. Se connecter à la carte d'admin de la machine. Problème: le câble est pas branché, et le switch m'a regardé d'un air tellement mauvais quand j'ai scruté ces ports libres que j'ai vite lâché l'affaire. Sans compter le bordel pour retrouver l'IP du bouzin, etc.
  2. Brancher un écran/clavier dessus. Facile, mais nettement moins avec du matos Sun...proprio (je suis resté un an avec une Ultra 5 inutilisable, faute de clavier pour la faire démarrer). On oublie.
  3. À l'ancienne, une bonne vieille connexion sur le port série. C'est sport, mais jouable. Par contre pour trouver un adaptateur usb ça risque de prendre la journée...
  4. Et la dernière solution, donc, qui fait mal au cul: telnet. Hourra, on peut se connecter et se rendre compte que le service SSH c'est mis "en maintenance". Le BATARD. La faute sans doute à la ligne copiée/collée un peu trop à la va-vite, puisque destinée à un OpenSSH alors que j'avais affaire à un sun ssh.

Ça apprends l'humilité un peu. Merci l'ancêtre.

Monday 8 October 2012

Building the perfect web toaster, part 1

Suite de mes aventures poundo-varnisho-lighttesques, je pense avoir trouvé la solution à mes problèmes de time-out.

En effet, après avoir testé toutes les valeurs possibles et imaginables des compteurs de PHP, après avoir testé php-fpm (uh, pas stable), testé NginX (on y reviendra à celui là), j'ai fini par...bypasser Varnish et passer les requêtes de Pound directement à Lighttpd. Et plus de time-outs. J'avais trouvé mon coupable.

Varnish, ou plus précisément une de ces sondes, paramétrée un peu trop agressivement. Le serveur ne répondant pas assez rapidement, il était déclaré "malade" et plus aucune requête ne  parvenait à lui. D'où, time-out.

Un .timeout = 5m; plus tard, je n'ai plus de problème. Je laisse tourner un varnishlog en fond, sait-on jamais, et je touche du bois.

Tuesday 2 October 2012

C'est vraiment du travail de poundé (2)

suite à l'installation de Pound, j'obtenais régulièrement le laconique message d'erreur "An internal server error occurred. Please try again later." en consultant mon agrégateur web.

et dans les logs du serveur:

Oct  2 21:35:53 web pound: (80128ac80) e500 for XXX.XXX.XXX.XXX response error read from 127.0.0.1:80/POST /backend.php HTTP/1.1: Operation timed out (15.455 secs)
Oct  2 21:35:53 web pound: (801208280) e500 for XXX.XXX.XXX.XXX response error read from 127.0.0.1:80/POST /backend.php HTTP/1.1: Operation timed out (15.455 secs)
Oct  2 21:36:04 web pound: (801205180) e500 for XXX.XXX.XXX.XXX response error read from 127.0.0.1:80/POST /backend.php HTTP/1.1: Operation timed out (15.556 secs)

ainsi que:

Oct  2 21:39:40 web pound: (801205a40) e501 bad request "PROPFIND /calendars/XXXXXXXXXXXXXXXXXXXX/9/ HTTP/1.1" from XXX.XXX.XXX.XXX

les premiers logs étaient dus à un time-out trop long de la part de lighttpd. 15 secondes me parait une valeur énorme alors que tous les processus écoutent en local, mais monter cette valeur à 60 secondes à fait disparaitre ces erreurs et - so far, so good - les problèmes d'accès.

les seconds étaient quant à eux liés à un manque d'autorisations, en effet il faut préciser explicitement à Pound qu'on autorise les commandes WebDAV et autres extensions MS.

voici donc la conf finale:

Control "/var/run/pound.sock"
User "www"
Group "www"
LogLevel 5
TimeOut 60

# Listener IPv4
ListenHTTPS
        Address 0.0.0.0
        Port    443
        Cert    "/etc/ssl/key-cert.pem"
        HeadRemove "X-Forwarded-Proto"
        AddHeader "X-Forwarded-Proto: https"
        xHTTP 3

        Service
                BackEnd
                        Address 127.0.0.1
                        Port    80
                End
        End
End

# Listener IPv6
ListenHTTPS
        Address ::
        Port    443
        Cert    "/etc/ssl/key-cert.pem"
        HeadRemove "X-Forwarded-Proto"
        AddHeader "X-Forwarded-Proto: https"
        xHTTP 3

        Service
                BackEnd
                        Address 127.0.0.1
                        Port    80
                End
        End
End

Sunday 30 September 2012

C'est vraiment du travail de poundé

Sur ce serveur j'utilise l'excellent reverse-proxy Varnish, qui permet à n'importe quelle bouse application un peu lourde de tenir la charge, et surtout, de s'exécuter plus rapidement. Mais j'utilise aussi beaucoup d'appli web (webmail, lecteur RSS, services Cloud, etc.) auquel je me connecte en mode sécurisé (https), que je juge obligatoire dès qu'il y a authentification. Or, Varnish ne supportant pas l'https, ces sites ne bénéficient pas de l'accélération...

Et puis j'ai trouvé la solution sur cette page : décrypter le flux https avant de le passer à Varnish. Il suffisait d'y penser... On déporte la gestion du SSL du serveur web vers un autre serveur, en l’occurrence et comme conseillé par ladite page, Pound.

Comme indiqué sur le site de Pound, ce n'est pas un serveur web (on continuera d'utiliser Lighttpd pour ça) ni un proxy-cache (on continuera d'utiliser Varnish). Cela lui permet d'être petit et donc, économe en mémoire.

Les infos étant un peu difficiles à trouver, voici quelques astuces:

  • pour que Pound fonctionne à la fois en IPv4 et en IPv6, il faut créer deux listeners, même si leur backend est identique. Je le fais écouter à la porc sur toutes les interfaces, mais rien ne vous empêche de préciser explicitement les IP.
  • ne pas oublier de définir un header indiquant que la page arrive en https; ce header permettra de tester si la page est en https ou non (Pound ne transmettant que du http, Varnish et Lighttpd ne "voient" que le port 80). Ce header pourra être utilisé par Varnish pour rediriger du http vers du https, par exemple.
  • pour le monitoring j'utilise le plugin Nagios check_pound_stat; pour que celui-ci fonctionne (et d'une façon générale si vous voulez utiliser l'utilitaire poundctl), il faut activer le socket d'admin qui ne l'est pas par défaut, via la directive "Control".

Voici donc ce que donne mon fichier pound.cfg:

Control "/var/run/pound.sock"

ListenHTTPS
        Address 0.0.0.0
        Port    443
        Cert    "/etc/ssl/key-cert.pem"
        HeadRemove "X-Forwarded-Proto"
        AddHeader "X-Forwarded-Proto: https"

        Service
                BackEnd
                        Address 127.0.0.1
                        Port    80
                End
        End
End
ListenHTTPS
        Address ::
        Port    443
        Cert    "/etc/ssl/key-cert.pem"
        HeadRemove "X-Forwarded-Proto"
        AddHeader "X-Forwarded-Proto: https"

        Service
                BackEnd
                        Address 127.0.0.1
                        Port    80
                End
        End
End

Côté Varnish, voila comment on redirige automatiquement un client qui se connecte en http vers le https (en fonction du vhost bien sûr, on ne veut pas du https-only partout):

sub vcl_recv {
    if ( (req.http.host ~ "^sub.toto.com" )
         && req.http.X-Forwarded-Proto !~ "(?i)https") {
        set req.http.x-Redir-Url = "https://sub.toto.com" + req.url;
        error 750 req.http.x-Redir-Url;
    }
}

sub vcl_error {
    if (obj.status == 750) {
        set obj.http.Location = obj.response;
        set obj.status = 302;
        return (deliver);
    }
}

PS: Pardon pour le titre. comme d'habitude je me suis senti obligé de faire un jeu de mot bien naze, mais n'y voyez aucun racisme ou autre incitation à la haine raciale, hein. D'ailleurs j'adore le curry et les naan fromage, et j'ai une amie plus noire qu'une indienne ;)

Saturday 18 August 2012

Le truc qui fait mal au cu...be

La fameuse rotation du cube compiz, au moins sur Ubuntu, souffre d'un bug horripilant: après chaque rotation, l'écran précédent réapparaît pendant une fraction de seconde, façon image subliminale. Parfait pour les fans de Fight Club, moins pour une utilisation quotidienne.

Heureusement en début d'année une solution a été trouvée: un patch ainsi qu'une solution conviviale pour le mettre en place.

Un petit compiz --replace et hop, problème réglé. Le patch en question a théoriquement été intégré au dépot compiz, et ce hack ne devrait plus être nécessaire à l'avenir.

Et comme je suis trop sympa, j'inclue la lib en question pour ceux qui ne veulent pas se farcir l'installation de tout l'environnement. Compilé sur un Core i5, mais devrait fonctionner sur tout x86 64bit avec le compiz 0.9.7.8 du Pangolin Précis.

Sunday 22 July 2012

TMA 2.0

petite mise à jour sur le site du TMA (eh oui, il bouge encore): la disparition progressive des fort disgracieux pop-ups servant à l'affichage des images au profit de pop-ins tout 2.0.

le script retenu est Litebox: simple, léger, fonctionnel, en plus il respecte les critères de la maison (c-a-d faire en sorte que le javascript ne soit jamais obligatoire).

Thursday 19 July 2012

VDM. (2)

Aujourd'hui j'ai envie d'un bagel. ça tombe bien, j'ai droit à un gratuit avec ma carte de fidélité. je me rends donc chez le marchand, et décide d'agrémenter mon repas d'un jus à 2€50. je n'ai pas de monnaie, je donne donc un billet de dix à la caissière.

- moi: "désolé je n'ai pas de monnaie"

- elle: "je vais devoir vous donner des centimes"

- moi: "heu d'accord".

vaguement hypnotisé par la demoiselle, je ne prête guère attention aux petits tas de rondelles jaunes qui s'accumulent...elle fini par me rendre les 7€50.

en pièces de vingt centimes.

et j'ai dit merci.

comme un con.

VDM

Monday 7 May 2012

le changement (de version), c'est maintenant.

...ou plutôt c'était vendredi dernier. en effet depuis plusieurs jours, j'essaie de mettre à jour FreeBSD vers la version 9.0, et certains changements (genre drivers SATA et autres conf IPv6) ne sont guère triviaux, surtout quand on est en région parisienne et que le serveur à mettre à jour se situe à Roubaix-plage.

l'upgrade ayant évidemment foiré pour les raisons cités plus haut, je suis reparti sur une install fraîche, ce qui m'a permis de me familiariser avec les scripts de post-install de chez ovh ; cela m'a également permis de tester mes backups, et sur ce coup là je ne me suis pas trop raté: un seul fichier de conf manquant (mysql), que j'ai pu reconstituer à partir d'un fichier situé sur le serveur miroir en changeant trois lignes.

voila donc les clés de la sérénité pour un admin: redondance, sauvegardes. ça peut paraître l'évidence même, mais je vois encore des catastrophes causées par leur manque. alors que là, je suis tranquille en train de bloguer pendant que la machine finit sa réinstallation. Et une fois quelle sera au point, elle viendra remplacer la machine qui sert ces lignes qui elle...suivra le chemin de la réinstallation.

la redondance n'a donc pas de prix...pour le coût, ça plafonne à 36€ par mois. ça va.

- page 18 of 30 -