Antoine Benkemoun

Cet article sera un petit retour d’expérience sur l’utilisation d’une sonnette Ring dans un système de domotique. Il s’agit d’un produit Américain de sonnette connectée par Wifi. C’est une sorte de visiophone mais avec plus de hype et de buzzwords.

Le besoin

La notion de besoin est toujours relative en matière de domotique mais allons-y quand même.

Le problème d’une sonnette classique c’est qu’elle sonne quand on l’utilise. C’est le but mais quand les enfants dorment c’est tout de suite beaucoup moins amusant. L’idée était donc de passer via une sonnette intégrable à un système domotique afin de pouvoir contrôler plus finement quand du bruit doit être produit et quand il vaut mieux notifier de manière alternative.

La sonnette connectée

Il y a plusieurs produits issus du marché Américain dont Ring et Google Nest Hello. Le premier problème de ces produits c’est qu’ils sont chers. 200-300€ pour une « sonnette » c’est beaucoup. Le produit d’entrée de gamme de Ring est à 99€ ce qui était un peu la limite psychologique que je m’étais fixé.

Les Ring Video Doorbell 1 & 2 sont des sonnettes à batterie LiPo qui peuvent être connectées de manière optionnelle.

Si vous regardez toutes les vidéos de tests de ces produits, vous remarquerez que les testeurs ne l’utilisent que sur batterie. Sauf que je considère que ce n’est pas un cas d’utilisation souhaitable car on a déjà largement suffisamment d’équipements électroniques à charger dans nos vies. Si en plus, il faut recharger sa sonnette tous les deux mois, ça ne va pas.

Il faut donc la connecter électriquement. Et c’est là que les problèmes commencent.

Raccordement électrique

Le raccordement électrique est décrit par Ring comme simple et intégrable aux sonnettes existantes. Oui. Peut être. Mais pas avec la plupart des sonnettes que nous avons par ici.

Ma sonnette existante était une sonnette 220V AC. L’interrupteur extérieur était connecté en série avec le carillon et l’activait lorsque l’interrupteur était actionné.

Pour Ring, il faut alimenter la sonnette en 8-24V AC (courant alternatif, pas courant continu ou DC comme ce qui est fourni par tous les autres transformateurs qu’on trouve communément à la maison) pour 40VA maximum. Apparemment il s’agit du standard des sonnettes américaines.

Il faut donc trouver un transformateur permettant d’alimenter la sonnette conformément à ces exigences. J’ai commandé chez Legrand le transformateur de référence 413093. Je pense que c’est probablement surdimensionné pour les produits Ring avec batterie mais n’ayant que des connaissances très limitées en électricité je n’avais pas d’éléments pour pouvoir prévoir plus juste.

Selon vos aptitudes en électricité et votre motivation à mettre les mains là-dedans, c’est peut être aussi le moment d’appeler un électricien.

MAIS ! Ca ne suffit pas. Ce n’est pas marquée de manière très explicite sur le site de Ring mais si vous alimentez votre sonnette directement avec un transformateur tel qu’expliqué sur leur page produit, ça comporte apparemment un risque d’incendie. Cette information devrait être marquée en rouge clignotant mais ce n’est absolument pas le cas.

La documentation détaillant le raccordement à un transformateur tel que celui mentionné précédemment est ici.

Il vous donc impérativement ajouter une résistance 25 ohm, 50 watts compatible 220V. Ça se trouve sur Amazon assez facilement en made in China. Pour le raccordement, il faudra prévoir un peu de soudure et de la gaine thermorétractable.

Autres aspects électriques

Tant que nous y sommes à faire de l’électricité, il vous faudra également réfléchir si vous souhaitez reproduire la sonnerie audio ou pas. Les notifications push c’est pratique mais nous n’avons pas toujours notre téléphone à la main. Enfin, presque.

Vous pouvez soit acheter un carillon chez Ring pour la modique somme de 35€ ou 60€ pour la version Pro (oui du carillon. Le carillon Pro.). Soit bricoler quelque chose avec votre système de domotique.

J’ai choisi d’acheter un module sonnette Legrand et y ajouter un Fibaro FGS211 qui trainait d’un logement précédent. Mis bout à bout ça fait plus cher que le carillon Ring Chime Pro mais j’avais déjà le module Fibaro qui trainait dans un carton. L’autre problème du carillon Ring c’est qu’il n’est, à ma connaissance, pas possible de l’intégrer à la domotique donc tout l’intérêt de ce mini-projet disparaissait.

Ensuite, il faudra trouver où mettre tout ce matériel car cela fait en largeur 6 modules DIN. J’aurais souhaité le mettre dans le tableau électrique de la maison mais ça n’était pas possible car la sonnette était reliée en série à d’autres prises.

J’ai donc mis un mini tableau électrique Haier à la place de l’ancien carillon.

Ce n’est pas idéal esthétiquement mais c’était la seule solution et c’est pas SI gênant au final. L’installation physique a passé le WAF en tout cas. C’est environ 2 fois plus gros en volume que le module carillon précédent.

Oui, c’est écrit à l’envers. Je sais. Mais de loin, ca ne se voit pas :P

Autre aspect sympathique dont je me suis rendu compte qu’une fois avoir tout démonté. Vu que ma sonnette était reliée en série à l’interrupteur, il n’y avait pas assez de fils pour faire passer le 220VAC et le 24VAC. J’ai donc du en tirer un certain nombre en faisant un détour par un interrupteur car les gaines ont été installée de cette manière. Un joli casse-tête.

Les autres problèmes

Une fois le raccordement électrique effectué, le plus dur a été fait. Enfin, peut être.

Le premier problème va être la réception Wifi. Ces sonnettes ont besoin d’un très fort signal Wifi. Il y a des centaines de personnes qui s’en plaignent sur les divers forums.

Dans mon cas, j’ai un Ubiquiti AP-AC-LR à environ 5 mètres avec une planche de bibliothèque IKEA et le mur de la maison à traverser. La force du signal est acceptable mais il ne fallait pas moins selon leurs spécifications. La qualité de la vidéo est bonne mais l’audio est un peu hachée.

Je ne suis pas particulièrement intéressé par ces fonctionnalités d’audio et de vidéo mais si ça avait été un critère essentiel, le résultat serait tout juste acceptable.

Le carillon Chime Pro de chez Ring sert de répéteur Wifi. Ça doit être pour cette raison qu’il est Pro (et aussi cher).

Le second problème va être l’installation physique. Évidemment, la sonnette n’est pas compatible avec les boitiers d’encastrement électriques qu’on trouve chez nous. Dommage à environ 2cm ça passait. Il vous faudra donc trouver une solution bricolée maison.

Le troisième problème est que si la fixation est, même un tout petit peu, tordue, le contact électrique ne se fera pas. Il faut que ce soit parfaitement plat. Pour savoir si la sonnette est connectée électriquement, il faut que le rond de LED blanc soit allumé en continu. Si ce n’est pas le cas, il n’y a pas de connexion électrique. Ah oui, l’application Ring met très longtemps à mettre à jour le statut électrique de la sonnette donc ne vous y fiez pas initialement.

Tadaaaaa !

Ce problème est d’autant plus embêtant que si vous utilisez du fil électrique rigide standard tel qu’installé chez nous, les fils sont suffisamment épais pour tordre très légèrement la fixation. Et donc, pas d’alimentation électrique.

J’ai donc dû aller chercher du fil souple pour connecter à la fixation de la sonnette pour éviter la moindre torsion. Et là, finalement, elle a été alimentée électriquement selon la norme américaine qui va bien.

Et sinon, en fait, ça fonctionne ?

Une fois toutes ces épreuves franchies, on est en droit de se poser la question « Est-ce que tout ce bazar fonctionne ? ».

Oui ça fonctionne ! J’ai raccordé la sonnette à mon Home Assistant grâce à l’intégration Ring. La latence de déclenchement de Home Assistant est la même que celle de l’application Ring soit environ 1 seconde voire 2 max.

J’ai pu faire un scénario qui ne déclenche le bruit de la sonnette via le module Fibaro que si la luminosité dans la chambre de ma fille est supérieure à un certain seuil.

Mission accomplie. Deux siestes ont déjà été sauvées pour une durée totale de 1 heure de sommeil en plus grâce à ce montage. Génial !

Etait-ce une bonne idée finalement ?

Lors d’un confinement et avec pas grand chose d’autre à faire, toutes ces activités de recherche et d’électricité m’ont plutôt diverties. Ceci dit, c’est clairement un casse-tête.

C’est un produit qui n’est pas adapté en tant que tel pour les normes que nous avons par ici. L’utiliser sur batterie, ce n’est, pour moi, pas acceptable. La vie est trop courte pour devoir recharger sa sonnette tous les 1 à 2 mois. Le câbler électriquement, c’est possible mais c’est un casse-tête.

Néanmoins pour pouvoir faire une analyse bénéfice/embêtement, il faudrait donner une valeur aux heures de sommeil supplémentaires et donc de calme supplémentaire. Et ça, ça n’a pas de prix.

09 Mar, 2020

Rack domotique 10 pouces – retour d’expérience

Posté par Antoine dans la catégorie Domotique

Ca fait très longtemps que je n’ai pas blogué ici ! C’est pas grave, j’assume bien. Quelques détours plus loin, nous voici en 2020.

Le retour de ce blog se fera sur un article au sujet d’un retour d’expérience sur l’installation d’un rack visant à être principalement utilisé, entre autre, pour de la domotique. Ayant récemment acheté une maison d’occasion, je n’ai pas pu résister à la tentation d’installer un rack.

Le décor

La raison principale pour poser un rack est d’avoir un endroit où organiser du câblage de manière relativement élégante. Ca évite le tas de fil dans le meuble TV ou dans un coin de la maison. La raison secondaire c’est que niveau geekerie, ca fait vraiment plaisir.

La localisation du rack a été rapidement décidée car les gaines électriques, téléphoniques et TV arrivent toutes au même endroit : dans le coffrage du panneau électrique dans le garage.

Le garage n’est pas un endroit idéal car la porte n’est pas tout à fait hermétique et ce n’est pas contrôlé en température comme peu l’être le reste de la maison. Néanmoins, après un été particulièrement chaud, ca n’a pas posé de problème. Il restera à voir sur le long terme ce que l’humidité et la poussière créeront comme problème.

Quel rack choisir ?

LE standard en matière de rack c’est le rack 19 pouces. C’est ce qu’on trouve absolument partout en informatique que ce soit en matière de télécom ou de serveurs. L’inconvénient c’est que c’est gros et lourd pour mes besoins.

Les dimensions physiques du 19 pouces m’auraient forcé à le poser à une distance de 2-3 mètres du tableau électrique avec une gaine de cables assez conséquente. Pour la lourdeur, j’avais quelques craintes initialement mais les chevilles béton 70kg sont bon marché et relativement faciles à poser.

Je suis donc parti sur un rack 10 pouces de marque Digitus. Il y a diverses tailles de 5U à 9U chez eux. Je trouve que 9U c’est vraiment le minimum même pour une utilisation relativement basique.

Les accessoires de base type panneau de brassage, étagère et PDU sont relativement faciles à trouver en marque Digitus ou en no-name. C’est raisonnablement bon marché en plus.

Seul petit point : j’aurais dû prendre un panneau de brassage Keystone car ca permet de brasser autre chose que du RJ45. Pour certaines utilisations domotiques, j’ai utilisé du câble RJ45 pour faire passer des courants faibles non numériques. C’est pas nécessairement optimal mais ca fonctionne.

Par contre, l’inconvénient c’est que ca s’arrête là. Il n’y a à peu près aucun équipement fourni avec un kit de montage 10 pouces. Non seulement ca mais en plus il y a pleins d’équipements qui ne rentrent simplement pas. Mon Synology DS1515+ ne rentre pas en largeur et en profondeur. La Freebox Crystal rentre à peu près mais de travers. Mon UPS ne rentre pas.

Du coup, j’ai empilé tout ce petit monde par dessus. De toute façon, même si ca rentrait dedans, je n’aurais pas eu assez de place en hauteur dans les 9U.

Cette problématique de la taille m’a également limitée dans le choix des équipements que je pouvais prendre quand j’ai renouvelé mon routeur. Chez Mikrotik, en équipements compatibles 10 pouces le choix était plus restreint. J’ai finalement choisi le RB4011 alors que le RB3011 aurait pu suffire pour mon besoin.

L’installation

L’installation est assez basique finalement. Le plus difficile c’est de faire les trous de cheville de sorte à ce que le rack soit monté correctement. C’était mes premiers trous à la perceuse à percussion donc je ne gagnerai pas un Prix Nobel pour la qualité de mon installation mais au final le rack est droit et ca ne se voit pas.

Le panneau de brassage Digitus est assez simple à utiliser. Il est fourni avec des colliers de serrage plastique pour maintenir les câbles en place. Il est juste nécessaire d’avoir un outil « punch down » pour pouvoir fixer les câbles correctement. C’est par pur hasard que j’en avais un. J’avais commandé un kit de sertissage de câble réseau et c’était un des outils qui était fourni avec mais dont j’ignorais initialement l’utilité.

Pour tout le reste, j’ai fait des câbles réseau sur mesure pour que ce soit joli comme il faut.

Résultat final

Le meilleur pour la fin. Voici à quoi ca ressemble.

C’est pas parfait. C’est compatible avec peu d’équipements. Mais ca fait le boulot plutôt correctement !

Commentaires fermés sur Rack domotique 10 pouces – retour d’expérience

09 Sep, 2013

Accélérer des sites web avec nginx et memcache

Posté par Antoine dans la catégorie Architecture |Libre |Réseau |Système |Web

site_internetLes performances de sites web sont un sujet très complexe qui peut être abordé sous de nombreux angles. Ce sujet est tout à fait critique du fait que les moteurs de recherche prennent en compte cette métrique pour le référencement des sites. Dans le cas de sites e-commerce, les performances peuvent influer assez fortement le taux de conversion des visites en achat comme l’a montré Amazon.

Afin d’optimiser les performances d’un site, il est souvent préférable de s’intéresser au code et au fonctionnement interne du site afin de détecter les améliorations possibles. Mais, parfois, pour des raisons diverses et variées, vous n’avez soit pas la possibilité soit pas les connaissances vous permettant de mettre les mains dans le code. C’est à cette situation que nous allons nous intéresser aujourd’hui.

Le concept

L’idée est d’utiliser nginx en tant que serveur HTTP frontal et de le coupler à memcache en tant que système de mémoire cache ultra-rapide. Cette manipulation se déroulera en deux parties. Tout d’abord, il faut configurer nginx pour qu’il aille chercher les pages et contenus statiques dans memcache. Ensuite, il faudra remplir la base de données de memcache en pages HTML et contenu statique.

En réussissant à faire cela, nous allons pouvoir fortement réduire le temps de chargement de chaque page mais aussi accroitre considérablement la quantité de requêtes que notre infrastructure pourra traiter en parallèle. Ceci s’explique assez simplement par le fait qu’il est beaucoup moins couteux d’aller chercher une information en base de données stockée en mémoire que d’exécuter toute une pile applicative interfacée avec une base de données type SQL.

Installation et configuration de memcached

L’installation du démon memache, à savoir memcached, est particulièrement simple. Vous pouvez utiliser votre gestionnaire de paquet préféré. Le fichier de configuration est très simple à utiliser, il suffit d’indiquer la quantité de mémoire que vous souhaitez allouer memcached ainsi que l’IP à laquelle vous l’attacherez.

Dans mon cas, j’ai installé memcached directement sur le serveur frontal et l’ai rendu accessible sur une IP interne firewallée de sorte à ce que seuls les serveurs concernés y aient accès. Vous trouverez un exemple de fichier de configuration ici.

Configuration de nginx

En ce qui concerne la configuration de nginx, vous trouverez un exemple ci-dessous.

[code language= »text »]server {
listen 80;
server_name sitetroprapide.fr;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

location / {
if ($request_method != GET)
{
return 500;
}
default_type text/html;
add_header "Content" "text/html; charset=utf8";
charset utf-8;
set $memcached_key $http_host$uri;
memcached_pass 10.1.1.1:11211;
error_page 500 404 405 = @bypass;
}

location @bypass {
proxy_pass http://sitetroprapide-prod;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
client_max_body_size 20M;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}[/code]

Les parties spécifiques à memcache sont les lignes 15 à 17. La ligne 15 avec la directive set est probablement celle qui mérite le plus votre attention. En effet, cette ligne définit la « clé » que nginx ira demander à memcache afin de pour la distribuer aux clients. En fonction des sites que vous souhaitez héberger et du type de contenu, vous devez paramétrer cette ligne de sorte à ce que deux contenus différents n’aient pas la même clé sinon il y aura conflit. La configuration proposé utilisera des clés de type « www.sitetroprapide.fr/ » et « www.sitetroprapide.fr/page-1.html ». La ligne 16 avec la directive memcached_pass correspond au serveur memcache que vous souhaitez utiliser.

La ligne 17 avec la directive error_page permet de renvoyer la requête dont le contenu n’a pas été trouvé dans memcache vers les serveurs applicatifs. Grace à cette directive, vous aurez également la possibilité de générer des erreurs afin d’éviter le cache memcache dans certains cas comme c’est le cas pour les requêtes autres que des GET (cf. le block if à la ligne 8).

Mettre les données dans memcache

Vous l’aurez probablement compris, les étapes proposées plus haut permettent à nginx d’aller chercher du contenu dans memcache mais pas d’en stocker dedans. Afin de mettre les données dans memcache, vous aurez plusieurs solutions.

Tout d’abord, vous pouvez modifier votre site afin qu’il stocke le contenu des pages dans memcache. Cette solution est la plus élégante mais nous force à modifier l’application ce que nous souhaitions éviter depuis le début.

Ensuite, une autre solution est de charger les pages du site dans memcache en utilisant un script externe. C’est la solution que j’ai choisi. Vous trouverez un exemple de script que j’ai développé pour l’occasion en Python. Ce script insère dans memcache toutes les pages qui ont lien à partir de la page d’accueil ainsi que tous les contenus associés. Ce n’est probablement pas un exemple d’élégance pour du développement Python mais ça fait ce que je voulais lui faire faire.

Problématiques

Avant de vous montrer un exemple des bénéfices tirés de cette configuration, il me parait indispensable de parler des problématiques induites.

Lorsque vous chargez une page avec une clé dans memcache, le serveur frontal servira toujours cette page sans jamais aller consulter vos serveurs applicatifs. Cela signifie que si vous servez des pages ayant la même URL que vos utilisateurs soient identifiés ou non, memcache distribuera systématiquement la même page. Dans ce cas-là, il faudra adapter la configuration nginx afin de ne pas aller chercher les informations dans memcache si le cookie d’authentification est présent.

Pour résumer, il ne faut pas perdre de vue ce que fait cette configuration car ce n’est pas une solution miracle. C’est une solution très bien adaptée aux sites tels que des sites d’actualité où seulement une faible proportion des utilisateurs sont identifiés. Elle peut également s’appliquer aux sites de e-commerce afin d’accélérer le chargement des pages pour les nouveaux utilisateurs qui ne se sont pas encore identifiés par contre dès qu’ils s’identifieront, les performances redeviendront standards.

Résultats

Voici deux exemples de graphiques présentant le temps de chargement des pages pour deux sites sur lesquels j’ai implémenté cette configuration. L’amélioration est assez flagrante.

resultat2resultat1

Le script de mise à jour du contenu est exécuté toutes les heures afin d’éviter d’impacter trop fortement les pages non mises en cache. C’est une fréquence de mise à jour acceptable car ce sont des sites relativement peu mis à jour mais cela va dépendre en fonction de cas. Il reste encore des améliorations à faire au niveau du script afin de pouvoir fournir une interface permettant de rafraichir le cache de manière plus automatisée.

Bilan

Pour résumer, il est possible d’accélérer de manière très significative le chargement des pages web en utilisant nginx coupé à memcache. Néanmoins, cette configuration nécessite un mécanisme de chargement des données qui colle le mieux possible au type de site mis en cache. Il faudra donc se pencher sur chaque cas afin d’étudier les possibilités de mise en cache et de trouver la meilleure approche à adopter.

07 Mai, 2013

Les architectures web – le serveur dédié

Posté par Antoine dans la catégorie Architecture |Libre |Système |Unix |Web

icone-projet-webCet article fait suite à l’introduction sur les architectures web. La dernière fois, nous nous sommes intéressés aux composants d’une architecture web ainsi qu’à une installation basique mais limitée à un unique serveur virtuel. Nous allons maintenant nous placer dans une nouvelle situation plus exigeante. En effet, le site que vous hébergiez dans un premier temps sur un serveur virtuel est à l’étroit. Votre site a gagné en popularité et votre serveur virtuel ne vous suffit plus en terme de performances.

Regard en arrière

Afin de pouvoir étudier les possibilités d’évolution, il est intéressant de se pencher sur l’offre que vous possédez actuellement, le serveur virtuel. En effet, le serveur virtuel est une machine virtuelle hébergée sur le même serveur physique de nombreuses autres en utilisant des technologies de virtualisation telles que VMWare ou Xen. L’inconvénient majeur de ce type de solution est, selon moi, la mutualisation des ressources de disque dur.

Les disques dur à plateau sont aujourd’hui le composant informatique qui a évolué le plus lentement en terme de performances. Ceci s’explique assez simplement par des contraintes physiques extrêmement complexes liées aux composants mécaniques de très haute précision. Si en plus, vous vous retrouvez mutualisés sur un jeu de disques dur à plateau, ça commence à devenir vraiment léger en terme de performances. Évidemment, les technologies telles que le RAID10 permettent d’obtenir des performances accrues mais ça reste assez modeste par rapport ce que peuvent offrir des SSD.

Les offres de machines virtuelles hébergées sur des machines physiques dotées de SSD existent mais elles sont assez rares et souvent onéreuses.

En avant !

La première solution qui se présente à vous lorsque vous souhaitez disposer de plus de performances est la solution du serveur dédié. En effet, au lieu de partager des ressources avec vos voisins, vous allez pouvoir tout garder pour vous.

En terme de choix, vous allez avoir face à vous une offre pléthorique. Vous aurez le choix entre de très nombreux fournisseurs différents disposant de très nombreuses offres. En terme de prix, l’entrée de gamme des serveurs dédies est tout à fait abordable même pour un particulier. Si vous acceptez de mettre un budget légèrement supérieur à l’entrée de gamme, vous accéderez rapidement à une puissance de calcul tout à fait conséquente.

Le choix de l’hébergeur est à faire en fonction des critères de prix et des fonctionnalités qui vous sont proposées. Une bonne solution pour avoir des retours est d’interroger des amis qui ont eu l’occasion de louer un serveur dédié. Vous allez ainsi pouvoir avoir un retour d’expérience concret vous permettant de vous faire une idée.

Lors de cette phase, le choix du serveur se fera probablement en fonction du budget dont vous disposez. Je ne peux que vous recommander de vous pencher sur le choix d’un serveur disposant de SSD. En effet, vous allez héberger sur un même serveur toute votre architecture web ce qui va générer des IO aléatoires et concurrents importants. Or, il s’agit d’un point sur lesquels les SSD sont très significativement plus performants que les disques dur à plateau.

Au niveau du choix du système d’exploitation, je ne peux que vous recommander de choisir le système d’exploitation avec lequel vous êtes le plus à l’aise si votre objectif est d’avoir une architecture stable. Il y a tout de même une nuance à apporter à ceci. Le choix d’une distribution de type « rolling release » telle que Arch Linux ou Gentoo bien qu’agréable à utiliser car disposant de versions très récentes des applications vous rajoutera un travail d’administration conséquent. En effet, le suivi des mises à jour de sécurité et des applications a besoin d’être très régulier. De plus, contrairement à des distributions telles que Debian ou CentOS, les versions de logiciels disponibles dans les dépôts ont fait l’objet d’une procédure de test moins approfondie. Pour résumer, c’est donc à vous de voir en fonction des vos objectifs et des vos sensibilités. Il n’y a pas vraiment de bon ou de mauvais choix, tout dépend de ce que vous souhaitez réaliser.

Les spécificités

Au niveau du système d’exploitation, il y aura peu de différences entre un serveur virtuel et un serveur dédié. Toute votre pile applicative sera hébergée dans un même système d’exploitation.

Les quelques différences se situent au niveau de l’interface avec le matériel physique. Tout d’abord, vous allez devoir gérer le RAID logiciel qui sera probablement fourni avec votre serveur. La mise en place du RAID sera probablement faite par défaut par votre hébergeur ou par vous-même à travers l’interface de gestion. Je ne peux que vous recommander de vous interroger sur le schéma de partitionnement avec lequel votre serveur sera livré car il correspondra peut être pas à ce que vous souhaitez. Il serait dommage de s’en rendre compte une fois que vous aurez tout installé.

La fonctionnalité la plus intéressante à activer au niveau de mdadm est l’activation des alertes par email en cas de défaillance du RAID. Il s’agit réellement d’une fonctionnalité indispensable car découvrir que votre RAID est mort lorsque vous commencez à avoir des erreurs de disque ou des kernel panic n’est pas très agréable. Vous disposez également d’un autre outil qui vous permettra de suivre la santé de vos disques. Il s’agit de SMART. Vous avez à votre disposition sous Linux le paquet « smartmontools » qui vous permettra d’exécuter des tests manuels mais aussi de mettre en place des tests réguliers avec envoi d’alertes email si jamais les choses ne se passent pas comme elles le devraient.

Bilan

Le passage du serveur virtuel vers le serveur dédié est le premier grand pas. En effet, vous êtes désormais libres de faire ce que vous souhaitez avec le matériel mis à disposition. Vous devrez rapidement remarquer une amélioration des performances de votre site ainsi qu’une capacité d’accueil de visiteurs assoiffés de contenu accrue.

Néanmoins, votre serveur dédié reste un SPOF conséquent car vous ne disposez que de très peu de redondance dans un serveur dédié. De plus, la cohabitation entre tous les composants de votre architecture dans un même système d’exploitation peut se passer plus ou moins bien. Dans le prochain article, nous allons donc nous intéresser à la prochaine étape de l’évolution de votre architecture, le passage vers plusieurs serveurs.

05 Mai, 2013

Les architectures web – Introduction

Posté par Antoine dans la catégorie Architecture |Libre |Système |Web

icone-projet-webC’est avec une émotion non dissimulée que je reprends ce blog que j’avais laissé à l’abandon depuis si longtemps. En effet, depuis de nombreuses choses se sont passées et j’en reviens ici. Je souhaite reprendre l’esprit initial de ce blog qui est de partager des informations sur l’Internet afin de pouvoir aider d’autres personnes qui se retrouveront dans des situations dans lesquelles je me suis trouvé plus tôt.

Cet article est l’introduction d’une série de billets que je compte écrire sur les architectures web appliquées aux logiciels Open Source. L’idée est de détailler les architectures permettant l’hébergement de sites Internet allant du site statique basique à un site complexe.

Les composants

Tout d’abord, il est utile de s’intéresser aux composants qui peuvent constituer une architecture web. Nous les classerons en trois catégories : les composants élémentaires, les composants de service et les composants de support.

Les composants élémentaires sont les composants que l’on retrouve dans toutes les architectures web classiques. Il s’agit du code du site qu’il s’agisse de code statique tel que du HTML ou du Javascript ou bien de code dynamique tel que du PHP, du Ruby on Rails voire même du C. Il s’agit également du jeu de données sur lequel le site se reposera afin d’afficher des données utiles à l’utilisateur. On y retrouvera ici des bases de données relationnelles ou non et les données brutes telles que des images ou des vidéos.

Les composants de service sont les composants que l’utilisateur va utiliser sans nécessairement en avoir conscience. Il s’agit des composants applicatifs chargés de générer les pages à partir du code du site, des composants de bases de données chargés de traiter les données ou bien des composants chargés de diriger l’utilisateur vers le serveur le plus approprié. Des exemples de logiciels Open Source servant de composants de service sont, par exemple, Phusion Passenger, Python, MySQL, MongoDB, nginx ou encore HAProxy.

Les composants de support sont les composants que l’utilisateur ne sera probablement jamais amené à interroger directement. Il s’agit des composants servant à assurer le bon fonctionnement et l’administration de l’architecture. On peut inclure dans cette catégorie les logiciels de gestion de configuration, les applications de supervision ainsi que les applications de déploiement de code. Des logiciels Open Source correspond à cette catégorie sont, par exemple, Puppet, chef, Nagios, Cacti, Zenoss, Webistrano ou git.

Le début

Dans cette série d’articles, nous ne nous intéresserons pas au cas de l’hébergement mutualisé. En effet, il s’agit probablement de la forme la plus simple d’hébergement du point de vue de l’utilisateur mais il s’agit en réalité d’une architecture web extrêmement complexe dont les complexités ne sont que cachées à l’utilisateur. Il est évident que la complexité d’une architecture mutualisée est différente en fonction de la taille de l’hébergeur mais néanmoins nous exclurons ce sujet de cette série d’articles.

Nous supposerons donc le cas le plus basique qui est celui d’un site web développé dans un langage de programmation tel que Ruby hébergé sur un serveur virtuel comme ceux que l’on peut trouver chez des hébergeurs tels que Gandi ou OVH pour ne citer que les plus gros. Ce site web reçoit une quantité de visite tout à fait raisonnable de l’ordre de 100 à 1000 visiteurs par jour.

Un serveur virtuel sera une solution idéale pour ce type de site car il permet la mise en place d’une pile applicative paramétrée en fonction des souhaits du développeur ou de l’administrateur système. Ainsi, toute la pile applicative sera retrouvera confinée à un système d’exploitation. Étant donné la nature d’un tel site et la probable non-criticité du service rendu, nous supposerons que les composants support sont réduits à un minimum.

La pile applicative

Dans le cas de notre site développé en Ruby, il y a plusieurs possibilités quant à la pile applicative. La solution la plus simple est d’utiliser WebRick le serveur HTTP inclus par défaut avec le framework Rails. De nombreux framework proposent un serveur web simpliste dont l’exécution se résume au lancement d’une simple commande. Cette solution permet de tester un site simplement mais est souvent limitée du fait de leur nature mono-threadés. Bien qu’un temps significatif soit gagné dans l’installation, il y a peu de chance que les performances soient au rendez-vous dès la moindre mise à l’épreuve.

C’est donc aussi rapidement qu’on se retrouve confronté au concept de « scalabilité », anglicisme issu du mot « scalability » qui décrit la capacité d’une architecture à grossir en fonction de la charge imposée. Ce sera le concept qui sera le fil conducteur de cette série d’articles.

Une fois la solution la plus simpliste éliminée, il nous reste donc à étudier l’utiliser de composants plus performants. Nous allons rapidement nous retrouver face à Apache, le serveur HTTP historique, et nginx, le serveur HTTP qui se veut rapide et flexible. Apache est probablement le logiciel Open Source pour lequel il est le plus simple de trouver des tutoriels en très grande quantité sur Internet. Il me parait même raisonnable de penser que si vous ne trouvez un article ou un tutoriel sur une fonctionnalité que vous souhaitez implémenter, c’est que c’est probablement impossible. Apache est capable d’exécuter un panel d’interpréteurs extrêmement large ainsi que des exécutables binaires via les interfaces CGI. De l’autre coté, nginx est une application dont le succès est beaucoup plus récent. La documentation est moins pléthorique qu’Apache mais elle est néanmoins assez simple à trouver.

Le choix du serveur HTTP est, selon moi, à faire en fonction de ses propres compétences à ce stade là. Si vous maitrisez l’un, vous aurez tout à fait raison de l’utiliser afin de simplifier votre architecture et rester sur des bases connues. Dans le cas de Ruby on Rails, l’installation de nginx avec le module Phusion Passenger se fait via une compilation automatisée par un script fourni. A contrario, l’installation d’Apache2 se fait via les modules présents dans n’importe quel distribution ce qui facilite grandement la tache.

Quant à l’application de gestion des données, vous aurez le choix entre MySQL et PostreSQL voire sqlite. Je n’entrerais pas dans le débat MySQL vs PostgreSQL néanmoins, comme pour le serveur HTTP, je ne peux que vous conseiller d’utiliser celui que vous maitrisez le mieux si l’objectif est de fiabiliser l’architecture. Quant à sqlite, son utilisation est en effet très simple néanmoins vous risquez de vous retrouver très rapidement limités par les fonctionnalités disponibles et les possibilités de scalabilité.

Bilan

Une telle architecture est particulièrement efficace en terme de coûts car elle ne nécessite qu’une seule VM dont le coût est relativement limité. De plus, en comparaison avec de l’hébergement mutualisé, vous aurez une liberté de manœuvre beaucoup plus grande.

L’inconvénient majeur de cette architecture simple est que vous ne disposez d’aucune redondance. Tous les composants sont des « SPOF » (Single Point of Failure ou, en Français, Point individuel de défaillance) ce qui signifie que la défaillance d’un seul de vos composants applicatifs entraine l’indisponibilité du site entier. De plus, le potentiel de performance d’une telle machine virtuelle à bas coût est relativement faible. Dès lors que le site commencera à atteindre une audience plus large et/ou plus régulière, vous allez devoir rapidement songer à passer à l’étape suivante.

Dans le prochain article, nous allons donc nous intéresser à la première étape permettant de faire grossir cette architecture afin qu’elle puisse accueillir plus de visiteurs.

19 Août, 2011

Test de l’offre téléphonie OVH

Posté par Antoine dans la catégorie Réseau |Suisse

Vu que je déménage en Suisse d’ici quelques temps, je cherchai une solution me permettant de rester joignable de la France sans que mes correspondants aient à payer le surcoût d’un appel à l’international et me permettant d’appeler en France gratuitement. C’est alors que l’idée d’une ligne SIP s’est rapidement imposée.

Une ligne SIP permet d’avoir un numéro de téléphone fixe mais mobile. Pas mobile au sens d’un téléphone portable bien évidemment mais mobile au sens que je n’ai pas besoin de faire un courrier ou d’appeller un opérateur pour pouvoir utiliser ce numéro de téléphone ailleurs pour peu qu’il y ait une connexion Internet.

Mon choix s’est assez naturellement porté vers OVH étant donné la bonne expérience que j’ai pu avoir d’eux sur d’autres offres. J’avoues ne pas avoir comparé avec d’autres fournisseurs.

Au niveau tarification, la ligne ne coûte pratiquement rien soit 1,18€ TTC. Elle inclut un numéro de téléphone dans la zone de votre choix et les appels illimités vers les fixes de 40 pays. Il est également possible de souscrire à des options vers les téléphones mobiles. Le téléphone est « prêté » sous caution. Étant donné que la caution est égale au prix du téléphone, il aurait été probablement plus simple pour OVH de le vendre. L’intérêt de le prendre avec OVH est que les frais de port sont inclus et que le téléphone est auto-configuré (ou du moins censé l’être).

Lorsque vous commandez votre ligne SIP, vous effectuez le parcours classique de commande OVH sauf que là, il est nécessaire d’envoyer un courrier. Hé oui, envoyer du papier dans une enveloppe avec un timbre qu’il faut aller acheter à la Poste. En effet, il faut envoyer un chèque barré, une copie de carte d’identité et une autorisation de prélèvement. Du coup, vu que la Poste est passé en 48h au lieu de 24h pour le courrier classique, cela rajoute 2 jours de délai à l’obtention effective de la ligne. Ca reste assez raisonnable mais inhabituel pour OVH. On mettra tout cela sous le coup de la réglementation liée aux lignes téléphoniques.

Une fois le courrier réceptionné par OVH, vous recevrez très rapidement un mail contenant les identifiants pour vous connecter à votre compte SIP. Ceux que j’ai reçu pour ma ligne étaient erronés et j’ai donc dû les modifier dans le Manager OVH. Pour tester votre ligne sur votre Mac, je vous conseille Zoiper. La qualité et la latence n’est pas nécessairement exceptionnelle avec un softphone donc attendez de voir avec votre téléphone physique pour juger.

Si vous avez de la chance, vous recevrez votre téléphone le lendemain de l’activation de votre ligne SIP ce qui a été mon cas. OVH expédiant les téléphones via DHL, c’est rapide ! Vous pourrez ainsi déballer votre téléphone et le brancher directement dans votre box.

La configuration est sensé être automatique néanmoins dans mon cas, cela n’a pas été le cas. J’ai dû modifier le mot de passe dans l’interface de configuration web du téléphone. Cela est probablement lié au fait que le mot de passe fourni dans le mail par OVH était erroné. Une fois ce problème résolu, tout fonctionne parfaitement. La qualité sonore est tout à fait correcte et la latence acceptable. Cette dernière est, je pense, légèrement plus élevée que dans le cas de la téléphonie classique mais ca reste assez acceptable. Ce sera néanmoins à tester à partir d’un autre pays.

Sur son interface Manager dédiée à la téléphonie, OVH vous donne accès aux logs relatives à votre ligne ce qui vous permet de comprendre une éventuelle erreur de connexion et à de nombreuses options. L’offre par défaut à 1,18€ TTC ne propose que très peu d’options mais à ce prix là difficile de se plaindre.

Au final, l’offre d’OVH est vraiment très accessible au niveau tarif. La mise en place se fait bien malgré le fait qu’il faille envoyer un courrier papier via le « snail mail ». Il est néanmoins préférable de prendre un téléphone physique car la qualité et la latence est meilleure qu’avec un softphone de ce que j’ai pu tester.

A propos de ce blog

Ce blog a pour objectif de partager des informations avec tous les internautes. Comme indiqué dans le titre, je traiterais de différrents sujets gravitant autour de la sécurité informatique, de la virtualisation, de la l'administration système et du réseau.