Ceph-Sharing-Disk » Historique » Version 42
Version 41 (Mehdi Abaakouk, 06/09/2017 07:54) → Version 42/48 (Fabien ADAM, 12/09/2017 12:14)
{{>toc}}
h1. Ceph-Sharing-Disk
h2. 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.
h2. 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
<pre>
# ./ceph-create-ext-pool-v2.sh <pool> <username> <size en giga>
./ceph-create-ext-pool-v2.sh ec4p1 sileht 4096 # GB
</pre>
h2. Client
h3. Installation de ceph
h4. Debian et Ubuntu
Le cluster utilise actuellement la version jewel (10.2.X), qui peut être installé via (version au 20170704):
* ubuntu xenial-updates 10.2.7-0ubuntu0.16.04.1
* ubuntu zety-updates 10.2.7-0ubuntu0.17.04.1
* debian jessie-backport (10.2.5-6~bpo8+1)
* debian stretch (10.2.5-7.2)
Pour avoir le derniére version jewel sur n'importe quel distribution (debian based)
<pre>
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://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
apt-get update
apt-get install ceph rbd-nbd
</pre>
*/!\ la version 10.2.9-1~bpo80+1 du repo ceph a le support nbd cassé, en attendant on peut temporairement la version 10.2.5-6~bpo8+1 de jessie-backport /!\*
h4. Fedora
Sur Fedora 25, ceph-10.2.4-2.fc25, la connexion nbd fonctionnera, mais le device monté sera inutilisable (dd ne pourra ni lire ni écrire dessus)
Sur Fedora 26, ceph-10.2.7-2.fc26, tout fonctionne normalement
h3. 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 :
<pre>
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
</pre>
pour que la config du VLAN se lance automatiquement au boot, on peut rajouter dans /etc/network/interfaces
<pre>
# 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
</pre>
Le membre récupére son keyring (ceph.client.sileht.keyring ici) et le copie dans /etc/ceph/
<pre>
# cat /etc/ceph/ceph.client.sileht.keyring
[client.sileht]
key = xxxxxxxxxyyyy==
</pre>
Il peut ensuite créer le fichier /etc/ceph/ceph.conf
<pre>
[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
</pre>
Si c'est une migration commenter toutes les lignes dans /etc/ceph/rbdmap
On configure le mapping automatique du volume rbd :
<pre>
CEPH_ARGS="--id sileht" rbd-nbd map disks/sileht-vol
</pre>
le disque est prêt, on peut soit le formater directement :
<pre>
$ mkfs.ext4 /dev/nbd0
$ echo /dev/nbd0 /backup ext4 defaults,discard,noatime,_netdev 0 2" >> /etc/fstab
$ mount /backup
</pre>
soit le chiffrer:
<pre>
$ sudo cryptsetup luksFormat /dev/nbd0
WARNING!
========
This will overwrite data on /dev/nbd0 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
</pre>
<pre>
$ cryptsetup luksOpen /dev/nbd0 backup1 --allow-discards
$ mkfs.ext4 /dev/mapper/backup1
$ mount /dev/mapper/backup1 /backup
</pre>
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) :
<pre>
$ dd if=/dev/urandom of=/etc/luks.key bs=1024 count=4
$ chmod 0400 /etc/luks.key
$ cryptsetup luksAddKey /dev/nbd0 /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
</pre>
h1. Ceph-Sharing-Disk
h2. 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.
h2. 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
<pre>
# ./ceph-create-ext-pool-v2.sh <pool> <username> <size en giga>
./ceph-create-ext-pool-v2.sh ec4p1 sileht 4096 # GB
</pre>
h2. Client
h3. Installation de ceph
h4. Debian et Ubuntu
Le cluster utilise actuellement la version jewel (10.2.X), qui peut être installé via (version au 20170704):
* ubuntu xenial-updates 10.2.7-0ubuntu0.16.04.1
* ubuntu zety-updates 10.2.7-0ubuntu0.17.04.1
* debian jessie-backport (10.2.5-6~bpo8+1)
* debian stretch (10.2.5-7.2)
Pour avoir le derniére version jewel sur n'importe quel distribution (debian based)
<pre>
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://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
apt-get update
apt-get install ceph rbd-nbd
</pre>
*/!\ la version 10.2.9-1~bpo80+1 du repo ceph a le support nbd cassé, en attendant on peut temporairement la version 10.2.5-6~bpo8+1 de jessie-backport /!\*
h4. Fedora
Sur Fedora 25, ceph-10.2.4-2.fc25, la connexion nbd fonctionnera, mais le device monté sera inutilisable (dd ne pourra ni lire ni écrire dessus)
Sur Fedora 26, ceph-10.2.7-2.fc26, tout fonctionne normalement
h3. 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 :
<pre>
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
</pre>
pour que la config du VLAN se lance automatiquement au boot, on peut rajouter dans /etc/network/interfaces
<pre>
# 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
</pre>
Le membre récupére son keyring (ceph.client.sileht.keyring ici) et le copie dans /etc/ceph/
<pre>
# cat /etc/ceph/ceph.client.sileht.keyring
[client.sileht]
key = xxxxxxxxxyyyy==
</pre>
Il peut ensuite créer le fichier /etc/ceph/ceph.conf
<pre>
[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
</pre>
Si c'est une migration commenter toutes les lignes dans /etc/ceph/rbdmap
On configure le mapping automatique du volume rbd :
<pre>
CEPH_ARGS="--id sileht" rbd-nbd map disks/sileht-vol
</pre>
le disque est prêt, on peut soit le formater directement :
<pre>
$ mkfs.ext4 /dev/nbd0
$ echo /dev/nbd0 /backup ext4 defaults,discard,noatime,_netdev 0 2" >> /etc/fstab
$ mount /backup
</pre>
soit le chiffrer:
<pre>
$ sudo cryptsetup luksFormat /dev/nbd0
WARNING!
========
This will overwrite data on /dev/nbd0 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
</pre>
<pre>
$ cryptsetup luksOpen /dev/nbd0 backup1 --allow-discards
$ mkfs.ext4 /dev/mapper/backup1
$ mount /dev/mapper/backup1 /backup
</pre>
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) :
<pre>
$ dd if=/dev/urandom of=/etc/luks.key bs=1024 count=4
$ chmod 0400 /etc/luks.key
$ cryptsetup luksAddKey /dev/nbd0 /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
</pre>