Archives pour avril, 2013

Linux : environnement Debian chrooté

root@muse:~# apt-get install debootstrap
root@muse:~# debootstrap --variant=minbase squeeze /opt/chroot/debian-squeeze
root@muse:~# mount -o bind /proc /opt/chroot/debian-squeeze/proc/
root@muse:~# mount -o bind /dev /opt/chroot/debian-squeeze/dev/
root@muse:~# mount -o bind /sys /opt/chroot/debian-squeeze/sys/
root@muse:~# chroot /opt/chroot/debian-squeeze /bin/bash

Debian : installer un firewall léger

Un package sympa pour installer rapidement un firewall sur un système Debian :

bhuisgen@muse:~$ sudo apt-get install iptables-persistent

N’oubliez pas de régénérer les fichiers de configuration  si vous modifiez manuellement vos règles !

Debian : archive des dépôts

Dans le cas d’une distribution obsolète, l’utilisation des dépôts archive.debian.org permet à nouveau l’installation de packages, tout comme installer les dernières mises à jour …

root@oldsys:~# nano /etc/apt/sources.list
#deb ftp://mir1.ovh.net/debian/ lenny main contrib non-free
#deb-src ftp://mir1.ovh.net/debian/ lenny main contrib non-free

# archive
deb http://archive.debian.org/debian/ lenny main non-free contrib
deb-src http://archive.debian.org/debian/ lenny main non-free contrib

#deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free

Zabbix : monitoring de Dovecot

Monitoring de l’authentification utilisateur et du nombre d’utilisateurs connectés :

UserParameter=dovecot.auth,doveadm auth -x service=imap -x rip=127.0.0.1 test@noreply.my.domain blablablaaa|grep "auth succeeded"|wc -l
UserParameter=dovecot.who,doveadm who 2>/dev/null|wc -l

FreeBSD : stockage ZFS haute disponibilité avec HAST

Objectif : rendre hautement disponible un pool ZFS en le répliquant sur un second serveur grâce à HAST.

Configuration de node1

node1# cat /etc/rc.conf
hostname="node1"
keymap="fr.iso.acc"
zfs_enable="YES"

network_interfaces="lo0 em0 em1"
defaultrouter="192.168.0.254"
ifconfig_em0="inet 192.168.0.101 netmask 255.255.255.0 polling"
ifconfig_em1="inet 192.168.1.101 netmask 255.255.255.0 polling"

sshd_enable="YES"
hastd_enable="YES"
node1# cat /etc/hast.conf
resource disk1 {
	on node1 {
		local /dev/ada2
		remote 192.168.1.102
	}

	on node2 {
		local /dev/ada2
		remote 192.168.1.101
	}
}

resource disk2 {
	on node1 {
		local /dev/ada3
		remote 192.168.1.102
	}

	on node2 {
		local /dev/ada3
		remote 192.168.1.101
	}
}

Configuration de node2

node1# cat /etc/rc.conf
hostname="node2"
keymap="fr.iso.acc"
zfs_enable="YES"

network_interfaces="lo0 em0 em1"
defaultrouter="192.168.0.254"
ifconfig_em0="inet 192.168.0.102 netmask 255.255.255.0 polling"
ifconfig_em1="inet 192.168.1.102 netmask 255.255.255.0 polling"

sshd_enable="YES"
hastd_enable="YES"
node2# scp node1:/etc/hast.conf /etc/

Lancement de HAST

node1# hastctl init disk1
node1# hastctl init disk2
node1# hastctl create disk1
node1# hastctl create disk2
node1# hastctl role primary disk1
node1# hastctl role primary disk2
node2# hastctl init disk1
node2# hastctl init disk2
node2# hastctl create disk1
node2# hastctl create disk2
node2# hastctl role secondary disk1
node2# hastctl role secondary disk2
node1# hastctl status
disk1:
 role: primary
 provname: disk1
 localpath: /dev/ada2
 extentsize: 2097152 (2.0MB)
 keepdirty: 64
 remoteaddr: 192.168.1.102
 replication: fullsync
 status: degraded
 dirty: 0 (0B)
 statistics:
 reads: 19
 writes: 0
 deletes: 0
 flushes: 0
 activemap updates: 0
disk2:
 role: primary
 provname: disk2
 localpath: /dev/ada3
 extentsize: 2097152 (2.0MB)
 keepdirty: 64
 remoteaddr: 192.168.1.102
 replication: fullsync
 status: degraded
 dirty: 0 (0B)
 statistics:
 reads: 19
 writes: 0
 deletes: 0
 flushes: 0
 activemap updates: 0
node1# ls -l /dev/hast/
total 0
crw-r-----  1 root  operator    0, 106 Nov  1 17:20 disk1
crw-r-----  1 root  operator    0, 108 Nov  1 17:20 disk2
node1# zpool create data mirror /dev/hast/disk1 /dev/hast/disk2
node1# zpool status data
node1# zpool status data
  pool: data
 state: ONLINE
 scan: none requested
config:

	NAME            STATE     READ WRITE CKSUM
	data            ONLINE       0     0     0
	  mirror-0      ONLINE       0     0     0
	    hast/disk1  ONLINE       0     0     0
	    hast/disk2  ONLINE       0     0     0

errors: No known data errors

Bascule sur node2

node1# zpool export data
node1# hastctl role secondary disk1
node1# hastctl role secondary disk2
node2# hastctl role primary disk1
node2# hastctl role primary disk2
node2# zpool import data

Zabbix : monitoring de php-apc

Un petit billet sur le monitoring de PHP-APC avec Zabbix.

Scripts web

Deux scripts PHP sont à placer dans le répertoire de votre serveur Web :

root@www:/var/www# cat apc-stats_mem.php
<?php print(serialize(apc_sma_info())); ?>
root@www:/var/www# cat apc-stats.php
<?php print(serialize(apc_cache_info('',true))); ?>

Script de monitoring Zabbix

Au niveau du monitoring, un nouveau script PHP va se charger de récupérer les valeurs actuelles d’APC :

root@www:/etc/zabbix/scripts# cat apc.php
<?php
$url_stats = "http://localhost/apc-stats.php";
$url_memstats = "http://localhost/apc-stats_mem.php";

$results = file_get_contents($url_stats);
if ($results == "")
   exit(1);

$results = unserialize($results);
$num_hits = $results["num_hits"];
$num_misses = $results["num_misses"];
$hits_ratio = $num_hits / ($num_hits + $num_misses) * 100;
$entries = $results["num_entries"];

$results = file_get_contents($url_memstats);
if ($results == "")
   exit(1);

$results = unserialize($results);
$mem_used = $results["seg_size"] * $results["num_seg"] - $results["avail_mem"];
$mem_available = $results["avail_mem"];

echo("num_hits=$num_hits\n");
echo("num_misses=$num_misses\n");
echo("hits_ratio=$hits_ratio\n");
echo("entries=$entries\n");
echo("mem_used=$mem_used\n");
echo("mem_available=$mem_available\n");
?>

Configuration de l’agent Zabbix

Reste à modifier l’agent Zabbix en y insérant les nouveaux paramètres :

root@www:/etc/zabbix# nano zabbix_agentd.conf
UserParameter=apc.num_hits,/usr/bin/php /etc/zabbix/scripts/apc.php|grep num_hits|cut -d"=" -f2
UserParameter=apc.num_misses,/usr/bin/php /etc/zabbix/scripts/apc.php|grep num_misses|cut -d"=" -f2
UserParameter=apc.hits_ratio,/usr/bin/php /etc/zabbix/scripts/apc.php|grep hits_ratio|cut -d"=" -f2
UserParameter=apc.entries,/usr/bin/php /etc/zabbix/scripts/apc.php|grep entries|cut -d"=" -f2
UserParameter=apc.mem_used,/usr/bin/php /etc/zabbix/scripts/apc.php|grep mem_used|cut -d"=" -f2
UserParameter=apc.mem_available,/usr/bin/php /etc/zabbix/scripts/apc.php|grep mem_available|cut -d"=" -f2

Linux : les magic keys avec un clavier bépo TypeMatrix 2030

L’équivalent des magic keys en bépo pour la séquence «R E I S U B » est :

  • FN + ALT + F10 + O
  • FN + ALT + F10 + P
  • FN + ALT + F10 + D
  • FN + ALT + F10 + U
  • FN + ALT + F10 + V
  • FN + ALT + F10 + K

Il s’agit comme toujours d’un mapping mental en qwerty …

Xen : gestion des ressources CPU

Comme tout logiciel de virtualisation, il est possible sous Xen de spécifier le nombre de CPU (core) d’une VM. Pour ce faire on distingue, deux paramètres :

  • cpus : le nombre de cores disponibles
  • vcpus : la liste des cores affectés

En gérant ces deux paramètres, il est donc possible de dédier des cores CPU à chaque environnement virtuel.

Limiter les ressources CPU du dom0

root@manjula:~# nano /etc/default/grub
# HB: limit dom0 to 2GB and affect 2 CPU
GRUB_CMDLINE_XEN="dom0_max_vcpus=2 dom0_vcpus_pin dom0_mem=2048M"
root@manjula:~# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-5-xen-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-xen-amd64
Found linux image: /boot/vmlinuz-2.6.32-5-xen-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-xen-amd64
Found linux image: /boot/vmlinuz-2.6.32-5-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-amd64
done
root@manjula:~# shutdown -r now
root@manjula:~# xm vcpu-list
Name                                ID  VCPU   CPU State   Time(s) CPU Affinity
Domain-0                             0     0     0   r--     116.3 0
Domain-0                             0     1     1   -b-      16.6 1

Deux CPU sont donc ici alloués au dom0, affectés aux cores physiques 0 et 1.

Limiter les ressources CPU d’un domU

root@manjula:~# nano /etc/xen/auto/pria
vcpus = 2
cpus = '2,3'
root@manjula:~# xm create uma
root@manjula:~# sleep 4 && xm vcpu-list
Name                                ID  VCPU   CPU State   Time(s) CPU Affinity
Domain-0                             0     0     0   r--     116.3 0
Domain-0                             0     1     1   -b-      16.6 1
pria                                 1     0     2   -b-     153.7 2-3
pria                                 1     1     3   -b-      76.9 2-3

Le domU pria utilise donc 2 CPU, affectés aux cores 2 et 3.

Xen : réservation de RAM pour le dom0 et désactivation du ballooning

Lors du boot noyau Linux, la quantité de RAM détectée (visible par l’OS) est utilisée entre autres pour l’allocation des buffers servant à la gestion réseau et au marquage des pages RAM. Dans le cas d’un dom0 sous Xen, il n’y a aucun intérêt à rendre visible l’ensemble de la RAM physique, vu qu’elle sera scindée et utilisée par la suite par les domU.

Ce billet présente comment allouer et limiter une quantité de RAM fixe au dom0, ici de 2 Go.

Mise en place

root@manjula:~# nano /etc/default/grub
GRUB_CMDLINE_XEN="dom0_mem=2048M";
root@manjula:~# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-5-xen-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-xen-amd64
Found linux image: /boot/vmlinuz-2.6.32-5-xen-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-xen-amd64
Found linux image: /boot/vmlinuz-2.6.32-5-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-amd64
done
root@manjula:~# nano /etc/xen/xend-config.sxp
# dom0-min-mem is the lowest permissible memory level (in MB) for dom0.
# This is a minimum both for auto-ballooning (as enabled by
# enable-dom0-ballooning below) and for xm mem-set when applied to dom0.
(dom0-min-mem 2048)

# Whether to enable auto-ballooning of dom0 to allow domUs to be created.
# If enable-dom0-ballooning = no, dom0 will never balloon out.
(enable-dom0-ballooning no)
root@manjula:~# shutdown -r now
root@manjula:~# free -m
total       used       free     shared    buffers     cached
Mem:          2043        249       1794          0          8         50
-/+ buffers/cache:        190       1853
Swap:        15255          0      15255

Linux : mapping d’un clavier Mac alu FR

Ces deux fix corrigent le problème de mapping des touches arobase / dièse, < et > :

bhuisgen@muse:~$ cat .Xmodmap
keycode  49 = less greater less greater VoidSymbol VoidSymbol VoidSymbol
keycode  94 = at numbersign at numbersign periodcentered Ydiaeresis periodcentered
Haut de page