Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 27

« Précédent - Version 27/48 (diff) - Suivant » - Version actuelle
Mehdi Abaakouk, 08/12/2015 12:03


Ceph-Sharing-Disk

Objectif

Un-e adherent-e tetaneutral.net souhaite heberger une machine efficace energetiquement et prenant peu de place comme un NUC/Brix ce qui arrange tetaneutral.net mais limite la partie stockage disque. L'idée est que l'adherent-e achete en plus des disques 3.5 classiques, nous les mettons dans le cluster Ceph/openstack et nous exportons un pool de stockage Ceph a la machine.

Cluster

Sur le cluster ceph:

http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/ceph-create-ext-pool-v2.sh

# ./ceph-create-ext-pool-v2.sh <pool> <username> <size en giga> 
./ceph-create-ext-pool-v2.sh ec4p1 sileht 4096 # GB  

Client

Installation de ceph

Debian jessie

apt-get install ceph

Debian wheezy/squeeze, Ubuntu precise/quantal/raring/saucy/trusty

apt-get install lsb-release
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add -
echo deb http://ceph.com/debian-hammer/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
apt-get update
apt-get install ceph

Un kernel plus recent que 3.9 (ou 3.16) est aussi necessaire, pour wheezy :

echo "deb http://http.debian.net/debian wheezy-backports main" > /etc/apt/sources.list.d/wheezy-backports.list
apt-get update
apt-get install -t wheezy-backports  linux-image-amd64

Configuration de ceph

Sur le client rbd :

La machine machine doit être configuré avec une ip sur le vlan 3199, si eth0 n'est pas dans un bridge :

ip link add link eth0 name eth0.3199 type vlan id 3199
ip link set dev eth0.3199 txqueuelen 100
ip link set eth0.3199 up
ip addr add 192.168.99.XXX/24 dev eth0.3199 # XXX donne par les admin ttnn

pour que la config du VLAN se lance automatiquement au boot, on peut rajouter dans /etc/network/interfaces

# Vlan pour ceph
auto eth0.3199
iface eth0.3199 inet manual
    up ip link set dev eth0.3199 txqueuelen 100
    up ip link set eth0.3199 up
    up ip addr add 192.168.99.222/24 dev eth0.3199

Installation de ceph :

apt-get install ceph

Le membre récupére son keyring (ceph.client.sileht.keyring ici) et le copie dans /etc/ceph/

# cat /etc/ceph/ceph.client.sileht.keyring
[client.sileht]
    key = xxxxxxxxxyyyy==

Il peut ensuite créer le fichier /etc/ceph/ceph.conf

[global]
fsid = 1fe74663-8dfa-486c-bb80-3bd94c90c967
auth_supported = cephx
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
mon_host = 192.168.99.251,192.168.99.252,192.168.99.253

[client.sileht]
keyring = /etc/ceph/ceph.client.sileht.keyring

On vérifie que cela marche :

$ rbd --id sileht -p disks info sileht-vol
$ echo $?
0

Si il n'y a pas d'erreur c'est bon, on configure le mapping automatique du volume rbd :

$ echo disks/sileht-vol  id=sileht >> /etc/ceph/rbdmap
$ service rbdmap restart
RBD Mapping: 'disks/sileht-vol'...done.

le disque est prêt, on peut soit le formater directement :

$ mkfs.ext4 /dev/rbd/disks/sileht-vol
$ echo /dev/rbd/disks/sileht-vol  /backup ext4   defaults,discard,noatime,_netdev       0       2" >> /etc/fstab
$ mount /backup

soit le chiffrer:

$ sudo cryptsetup luksFormat /dev/rbd/disks/sileht-vol

WARNING!
========
This will overwrite data on /dev/rbd/disks/sileht-vol irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
$ cryptsetup luksOpen /dev/rbd/disks/sileht-vol backup1
$ mkfs.ext4 /dev/mapper/backup1
$ mount /dev/mapper/backup1 /backup

Attention : ne pas remplir le device de données aleatoires comme suggéré dans les tutoriaux luks cela ferait perdre le provisionning progressif de ceph (utilisation effective uniquement sur les blocks non zero)

Ajout de la configuration persistante via un keyfile (attention : c'est une clé privée qui permet d'ouvrir le volume cryptfs sans passphrase) :

$ dd if=/dev/urandom of=/etc/luks.key bs=1024 count=4
$ chmod 0400 /etc/luks.key
$ cryptsetup luksAddKey /dev/rbd/disks/sileht-vol /etc/luks.key

$ sudo blkid | grep -e rbd0 -e backup1
/dev/rbd0: UUID="1a268f70-6f6d-41f7-9216-43ba0bd0750b" TYPE="crypto_LUKS" 
/dev/mapper/backup1: UUID="51db13d9-4ac4-4e47-bb7a-b111994cdefd" TYPE="ext4" 

$ echo "backup1 UUID=1a268f70-6f6d-41f7-9216-43ba0bd0750b /etc/luks.key luks,discard" >> /etc/crypttab 
$ echo "UUID=51db13d9-4ac4-4e47-bb7a-b111994cdefd  /backup ext4   defaults,discard,noatime,_netdev       0       2" >> /etc/fstab

Effacement d'une image :

# Editer /etc/ceph/rbdmap et enlever la ligne "sileht-vol" 
# service rbdmap restart

Vieille methode

Création de l'utilisateur et du pool ceph pour cet utilisateur

http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/ceph-create-ext-pool.sh

# # ./ceph-create-ext-pool.sh <username> <size en giga> 
# ./ceph-create-ext-pool.sh sileht 100  
creating ceph.client.sileht.keyring
imported keyring
pool 'sileht-pool' created
set pool 70 size to 2
set pool 70 min_size to 2
set-quota max_bytes = 107374182400 for pool sileht-pool
# cat ceph.client.sileht.keyring 
...
# ceph auth get client.sileht
... (identical to file)

Le fichier important pour le client est ./ceph.client.sileht.keyring