Archive

Posts Tagged ‘linux’

Linux, Docker

juillet 18, 2017 3 commentaires

Mon petit cluster commence à ressembler à quelque-chose :

Bien sûr, on peut améliorer les choses :

  • passer en adressage IP V6 au lieu de l’IP V4 actuelle
  • Sécuriser le cluster, par exemple en supprimant l’accès distant à internet
  • Sécuriser l’accès nfs, pour le moment ouvert à tous vents.

L’aspect sécurité est le plus important, et les solutions sont en cours d’évaluation. Par contre l’IP V6 peut encore attendre un peu.

J’ai donc un cluster presque utilisable, mais où presque tout reste à faire pour y faire tourner des applications sans trop avoir à se casser la tête.

La solution qui m’intéresse le plus est Docker, et c’est bien le but de cette série d’articles. Commençons donc par l’installer sur chacun des noeuds.

Installation de Docker

edit du 01/07/2018 : la procédure ci-dessous est valable pour une installation sur un système Linux Debian Jessie (8.*). Pour une Debian 9, la procédure est différente. Cf. ce lien pour le détail.

Mes machines tournent sous Debian Linux, en mode headless (sans clavier, souris ni écran), en accès ssh. L’installation se fait donc via une interface chaise-clavier à coups de commandes apt sur chacun des nœuds du cluster:

  1. Activer les backports. Ceux-ci permettent d’installer des paquets en principe non prévus pour la version actuelle de Debian (8 dans mon cas, 9 pour les courageux), mais portés depuis une version plus récente de Debian.
  2. Installer quelques paquets nécessaires
  3. Installer Docker
  4. Créer un groupe unix docker et y ajouter le compte utilisateur unix
  5. Tester l’installation

J’ai utilisé les commandes suivantes (à adapter à votre cas) sous le compte root sur chacune des machines du cluster :

# Ajouter les backports au sources.list du noeud
echo '' >> /etc/apt/sources.list
echo '# Backport needed by Docker' >> /etc/apt/sources.list
echo 'deb http://ftp.debian.org/debian jessie-backports main' >> /etc/apt/sources.list

# Mettre à jour la liste des paquets disponibles
apt-get update

# Installer quelques paquets utiles
apt-get -y install apt-transport-https ca-certificates
apt-get -y install curl software-properties-common

# Ajouter la clef et le repository des paquets de Docker
curl -fsSL https://download.docker.com/linux/debian/gpg \
| apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable"

# Mettre à nouveau à jour la liste des paquets disponibles 
apt-get update  # Télécharger et installer docker apt-get -y install docker-ce # Démarrer le service docker service docker start

Création du groupe docker

Ce groupe unix évite de devoir se connecter en root pour démarrer des conteneurs. Ceci se fait à nouveau sous le compte root.

# Créer le groupe docker.
groupadd docker

# Ajouter un compte (ici user1 sur le noeud island1)
usermod -aG docker user1

Test de l’installation

Si tout se passe bien, on peut passer au test classique du « hello world! »

docker run hello-world

Le résultat devrait ressembler à ceci :

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/

Etat des lieux

Jusqu’ici, les nœuds étaient reliés en un cluster unix où chaque machine faisait ce que l’on voulait bien y lancer au travers d’une connexion ssh.

Après les manipulations indiquées plus haut, chaque nœud fait fonctionner son instance indépendante de Docker, et il « suffit » d’y lancer des applications dans des conteneurs au fur et à mesure des besoins.

London docks c1909

« Suffit » est entre guillemets car plusieurs limites apparaissent très vite :

  • Si une machine « meurt » (carte réseau ou disque HS par exemple), les applications qui y tournaient, ainsi que leurs données, sont perdues, le temps de remplacer le matériel fautif, et de restaurer applications et données.
  • Il faut se souvenir sur quelle machine tourne chaque application …
  • … et que la machine en question soit démarrée.

Ces limites ont plusieurs solutions, dont le mode « Swarm » de Docker.

Autres billets sur le sujet :

Creative Commons License

Publicités
Catégories :docker, linux Étiquettes : ,

Linux, sort, ou comment saturer /tmp

mars 21, 2017 Laisser un commentaire

Allez, un petit article dans le ton de feu opl32.com ( 2000/2001/2002, ça ne nous rajeunit pas) , mais dans le domaine linux.

Le problème

Besoin de trier un gros fichier sous Linux ? Pas de problème, la commande sort est là pour ça, et propose même une option -u pour supprimer les doublons.

Allez Go : 

sort -u < big_mega_fichier > resultat

No space left on device !??

Explication sommaire (mais suffisante)

La commande « sort » par défaut utilise la mémoire puis, si le volume à trier devient trop important, crée des fichiers temporaires dans le répertoire /tmp.

Que /tmp soit le montage d’un filesystem séparé (conseillé sur une machine de production ou un serveur), ou un simple répertoire du disque racine (monté sur /), la place disponible est limitée. On peut se retrouver avec une message du type « No space left on device » , voire parfois même empêcher certains traitements (batch, système, ou autres) de s’exécuter.

C’est très rare, mais si ça arrive sur une machine de production …

Une solution

La commande sort accepte deux options qui peuvent nous faciliter la vie

  • -T spécifie de stocker les fichiers temporaires dans le répertoire mon_repertoire_tmp
  • –compress-program spécifie de compresser les fichiers temporaires. Cette option ralentit la commande sort, mais permet de s’accommoder de filesystems plus petits ou de volumes à trier plus grands.

Exemple
sort -T ~/tmp –compress-program=gzip -u < big_mega_fichier > resultat

Conclusions

  • Ne jamais présumer que tout se passe en mémoire
  • Les commandes info et man sont nos amis
  • On peut bloquer – même quelques secondes – une machine de production sans avoir l’air d’y toucher
Catégories :linux Étiquettes :

Migration Linux Mint 14 vers 17

septembre 9, 2014 Laisser un commentaire

Linux Mint  version  14 Alias « Nadia » n’est plus maintenue. Mon PC de bureau a donc nécessité une mise à jour. J’ai ciblé la version 17 « Qiana » sensée être LTS (support longue durée).

Plutôt que de réinstaller le système, j’ai tenté une mise à jour à l’ancienne, pensant gagner du temps et faciliter les choses. Le passage de la théorie à la pratique m’a rappelé l’un des principes fondamentaux de l’informatique,  interprété à ma sauce : « Keep It Simple, Stupid » que je traduirai par « Va au plus simple, hé banane! », mais procédons dans l’ordre.

De la théorie …

Mint ne permet pas « d’usine » de pratiquer des upgrades de distribution, contrairement à Ubuntu et Debian par exemple.

Le site officiel conseille une réinstallation « à blanc », mais il existe plusieurs méthodes pour se forcer un passage vers les dernières versions. Les tutoriels sont plutôt nombreux, par exemple:

Il s’agit de modifier un ou plusieurs fichiers dans le répertoire /etc/apt , en y remplaçant les anciens noms de distribution utilisés par Mint 14 par ceux de la nouvelle version.

Les commandes fournies par ces tutoriels fonctionnent très bien. Il suffit de copier / coller et après quelques commandes apt-get classiques dans un environnement de type Debian, l’on devrait se retrouver avec une Linux Mint à jour.

… à la pratique.

J’ai dit « devrait » car dans mon cas cela ne s’est pas tout-à-fait passé comme prévu. En effet, après redémarrage de la machine :

  • Le gestionnaire de connexion ne se lance pas
  • Après quelques manipulations sans trop de rapport, le gestionnaire de connexion a enfin daigné fonctionner, mais l’interface graphique est réduite à un xterm
  • Les temps de réponse permettraient presque de détartrer la cafetière, pétrir le pain et se préparer un thé le temps que ça se passe

J’ai fini par remplacer le répertoire /etc/apt de ma machine par celui de mon netbook, en Mint version 16 et relancé les commandes de mise à jour Le système a alors retrouvé une certaine stabilité, même si d’autres problèmes sont apparus, et le passage vers la version 17 n’a pas arrangé grand-chose.

Cette ribambelle de surprises s’explique, entre autres par diverses bidouilles de modules faites il y a pas mal de temps, pour tester des programmes de musique, sans jamais avoir pu faire un retour arrière par la suite. Les installations depuis les sources sont souvent amusantes, parfois surprenantes, mais tout a un prix.

« Va au plus simple, hé banane! »

Je me suis finalement rangé aux conseils du site officiel : une installation à blanc, avec reformatage de la partition système.

Après quelques applications supplémentaires – rsync, htop, gvim, calibre, eog, remmina et autres rdp, dosemu, wine, gpodder – installées à coups de apt-get install , mon pc était fin prêt, et mes réglages et préférences directement utilisables, sans avoir besoin de tout re-paramétrer. Mes données sont sur une partition séparée et n’ont pas donc été compromises. Au pire, il m’aurait fallu restaurer une sauvegarde.

Petit plus, le PC va un peu plus vite, même s’il ne sera jamais une bête de course à faire baver un hardcore gamer.

Ma Remington restera pour l’heure en version 16 qui est bien suffisante . Je le migrerai après la NaNoWriMo 2014

 

Creative Commons License

Catégories :informatique, linux Étiquettes : ,

Récupérer un dossier personnel crypté sous Linux

janvier 18, 2013 Laisser un commentaire

Le disque dur de mon PC m’a lâchement abandonné peu avant la nouvelle année. Il a donc été remplacé il y a quelques jours, et a reçu un nouveau système avant restauration des données sauvegardées.

L’ancien disque a bien voulu démarrer une dernière fois (depuis, c’est RIP) et j’en ai profité pour récupérer ce qui pouvait l’être, principalement mes dernières archives mail.

Mon ancien système cryptait mon répertoire personnel (choix peu judicieux lors de l’installation) avec ecryptfs. Linux étant bien fait, la commande ecryptfs-recover-private vient à la rescousse.

Lancée depuis un compte d’administration, ou via sudo, ecryptfs-recover-private pose quelques questions auxquelles il suffit de répondre, à condition évidemment de se souvenir du mot de passe utilisé lors du cryptage :

$ sudo ecryptfs-recover-private
INFO: Searching for encrypted private directories (this might take a while)...
INFO: Found [/mnt/old_home/.ecryptfs/jb/.Private].
Try to recover this directory? [Y/n]:
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n]
INFO: Enter your LOGIN passphrase...
Passphrase:
Inserted auth tok with sig [6d4b174437f6ec16] into the user session keyring
INFO: Success!  Private data mounted read-only at [/tmp/ecryptfs.JEwuNfuD].
$

Et voilà! Le dossier crypté est accessible en lecture seule depuis un répertoire créé sous /tmp, et il n’y a plus qu’à se servir.

En passant, exit Ubuntu Linux, mon PC est maintenant sous Linux Mint, bien plus plaisant et pratique que Unity and Co.

Creative Commons License

Catégories :linux Étiquettes :

Nettoyer un Linux/Debian avec deborphan

février 14, 2012 2 commentaires

Je viens de réanimer – à nouveau – mon vieil Asus eeePC 701. Après tant d’années, il fonctionne toujours. Je pense le baptiser « Good Old Faithful » et lui donner un semblant de pseudo nose-art. C’est mérité.

Avec un disque USB je suis sur qu’il ferait un NAS correct, et pourquoi pas un noeud Freenet, moyennant peut-être un petit supplément mémoire.

Il tourne maintenant sous Linux Mint, Debian edition. L’installation est sans surprise, mais les mises à jour ont failli poser un problème de place sur le disque SSD, seuls quelques dizaines de mégaoctets restant libres :

$ df -m
Sys. de fichiers  1M-blocs  Utilisé  Dispo. Uti% Monté sur
/dev/sda1             3536     3429       0 100% /
$

Une première approche consiste à désinstaller les applications inutiles, et à vider régulièrement le cache des paquets installés. Un petit coup de  sudo apt-get clean plus tard, on a légèrement progressé si j’en crois le df -m . Prometteur mais insuffisant…

Seconde technique : supprimer les paquets orphelins (installés mais inutilisés). Une fois le paquet deborphan installé par un toujours klingon-esque mais magiquement efficace sudo apt-get install deborphan, il suffit d’un petit mais brutal sudo apt-get remove --purge `deborphan` pour se retrouver tout de suite plus à l’aise, avec 760 Mo libres, à un yak près.

$ df -m
Sys. de fichiers  1M-blocs  Utilisé  Dispo. Uti% Monté sur
/dev/sda1             3536     2592     764  78% /
$

Ce n’est toujours pas Bizance, mais ça laisse de quoi travailler sans être trop à l’étroit.

Creative Commons License

Catégories :linux Étiquettes :

PirateBox/Sharebook & Lubuntu

avril 4, 2011 Laisser un commentaire

I just installed  PirateBox by David Darts onto my  eeePc 701 (the very first netbook since Psion). I just installed Lubuntu onto the good old faithfull machine, I simply followed the instructions given on the Blogeee forum.

It simply works. Obviously the 701 is rather limited with its 4 Gb SSD, but an XD card would make it much more interesting…

BTW, PirateBox is not for piracy. Its goal is to share documents, videos, musics freed by their authors either explicitly, either by the chosen licence.

PirateBox allows you to make your PC, laptop, netbook, Android phone, even some routers into wifi accessible internet servers

Creative Commons License

Catégories :english, linux, piratebox Étiquettes : , ,

PirateBox/Sharebook et Lubuntu

avril 3, 2011 3 commentaires

Je viens d’installer PirateBox de David Darts sur un veil eeePc 701 (le tout premier netbook depuis celui de Psion). Après avoir installé Lubuntu sur la babasse, j’ai simplement suivi les instructions fournies sur le forum Blogeee.

Simple, sans fioriture, ça fonctionne, tout simplement. Bien sur le 701 est plutôt limité avec son SSD de 4 Go, mais avec une carte XD ou mieux ça devrait devenir beaucoup plus intéressant…

En passant, PirateBox n’a de pirate que le nom. Le but est simplement de mettre à disposition de tous des documents vidéos, musiques dont la diffusion est autorisée par leurs auteurs soit explicitement, soit de par la licence de diffustion choisie.

PirateBox permet de transformer votre PC, portable, netbook, téléphone Android, voire certains routeurs en serveur internet accessibles par le Wifi

 

Creative Commons License

Catégories :linux, piratebox Étiquettes : ,
%d blogueurs aiment cette page :