Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 43

Mehdi Abaakouk, 04/10/2017 10:04

1 3 Laurent GUERBY
{{>toc}}
2 3 Laurent GUERBY
3 1 Mehdi Abaakouk
h1. Ceph-Sharing-Disk
4 1 Mehdi Abaakouk
5 3 Laurent GUERBY
h2. Objectif
6 3 Laurent GUERBY
7 4 Laurent GUERBY
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.
8 4 Laurent GUERBY
9 3 Laurent GUERBY
h2. Cluster
10 3 Laurent GUERBY
11 43 Mehdi Abaakouk
Sur le cluster ceph (g1):
12 1 Mehdi Abaakouk
13 1 Mehdi Abaakouk
<pre>
14 43 Mehdi Abaakouk
# tools/ceph-create-ext-pool-v2.sh <pool> <username> <size en giga> 
15 43 Mehdi Abaakouk
tools/ceph-create-ext-pool-v2.sh ec4p1 sileht 4096 # GB  
16 22 Laurent GUERBY
</pre>
17 22 Laurent GUERBY
18 43 Mehdi Abaakouk
http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/ceph-create-ext-pool-v2.sh
19 1 Mehdi Abaakouk
20 3 Laurent GUERBY
h2. Client
21 1 Mehdi Abaakouk
22 7 Mehdi Abaakouk
h3. Installation de ceph
23 7 Mehdi Abaakouk
24 29 Mehdi Abaakouk
h4. Debian et Ubuntu
25 7 Mehdi Abaakouk
26 40 Mehdi Abaakouk
Le cluster utilise actuellement la version jewel (10.2.X), qui peut être installé via (version au 20170704):
27 40 Mehdi Abaakouk
28 40 Mehdi Abaakouk
* ubuntu xenial-updates 10.2.7-0ubuntu0.16.04.1
29 40 Mehdi Abaakouk
* ubuntu zety-updates 10.2.7-0ubuntu0.17.04.1
30 40 Mehdi Abaakouk
* debian jessie-backport (10.2.5-6~bpo8+1)
31 40 Mehdi Abaakouk
* debian stretch (10.2.5-7.2)
32 40 Mehdi Abaakouk
33 40 Mehdi Abaakouk
Pour avoir le derniére version jewel sur n'importe quel distribution (debian based)
34 40 Mehdi Abaakouk
35 7 Mehdi Abaakouk
<pre>
36 7 Mehdi Abaakouk
apt-get install lsb-release
37 7 Mehdi Abaakouk
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add -
38 33 Laurent GUERBY
echo deb http://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
39 7 Mehdi Abaakouk
apt-get update
40 34 Laurent GUERBY
apt-get install ceph rbd-nbd
41 12 Laurent GUERBY
</pre>
42 40 Mehdi Abaakouk
43 40 Mehdi Abaakouk
*/!\ 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 /!\*
44 12 Laurent GUERBY
45 42 Fabien ADAM
h4. Fedora
46 42 Fabien ADAM
47 42 Fabien ADAM
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)
48 42 Fabien ADAM
Sur Fedora 26, ceph-10.2.7-2.fc26, tout fonctionne normalement
49 42 Fabien ADAM
50 7 Mehdi Abaakouk
h3. Configuration de ceph
51 12 Laurent GUERBY
52 6 Laurent GUERBY
Sur le client rbd :
53 1 Mehdi Abaakouk
54 1 Mehdi Abaakouk
La machine machine doit être configuré avec une ip sur le vlan 3199, si eth0 n'est pas dans un bridge :
55 16 Laurent GUERBY
56 16 Laurent GUERBY
<pre>
57 17 Laurent GUERBY
ip link add link eth0 name eth0.3199 type vlan id 3199
58 1 Mehdi Abaakouk
ip link set dev eth0.3199 txqueuelen 100
59 16 Laurent GUERBY
ip link set eth0.3199 up
60 16 Laurent GUERBY
ip addr add 192.168.99.XXX/24 dev eth0.3199 # XXX donne par les admin ttnn
61 1 Mehdi Abaakouk
</pre>
62 16 Laurent GUERBY
63 1 Mehdi Abaakouk
pour que la config du VLAN se lance automatiquement au boot, on peut rajouter dans /etc/network/interfaces
64 16 Laurent GUERBY
65 17 Laurent GUERBY
<pre>
66 16 Laurent GUERBY
# Vlan pour ceph
67 21 bikepunk bikepunk
auto eth0.3199
68 21 bikepunk bikepunk
iface eth0.3199 inet manual
69 21 bikepunk bikepunk
    up ip link set dev eth0.3199 txqueuelen 100
70 1 Mehdi Abaakouk
    up ip link set eth0.3199 up
71 1 Mehdi Abaakouk
    up ip addr add 192.168.99.222/24 dev eth0.3199
72 21 bikepunk bikepunk
</pre>
73 21 bikepunk bikepunk
74 21 bikepunk bikepunk
Le membre récupére son  keyring (ceph.client.sileht.keyring ici) et le copie dans /etc/ceph/
75 1 Mehdi Abaakouk
76 16 Laurent GUERBY
77 1 Mehdi Abaakouk
<pre>
78 1 Mehdi Abaakouk
# cat /etc/ceph/ceph.client.sileht.keyring
79 1 Mehdi Abaakouk
[client.sileht]
80 5 Laurent GUERBY
	key = xxxxxxxxxyyyy==
81 1 Mehdi Abaakouk
</pre>
82 1 Mehdi Abaakouk
83 19 Laurent GUERBY
Il peut ensuite créer le fichier /etc/ceph/ceph.conf
84 19 Laurent GUERBY
85 19 Laurent GUERBY
<pre>
86 19 Laurent GUERBY
[global]
87 19 Laurent GUERBY
fsid = 1fe74663-8dfa-486c-bb80-3bd94c90c967
88 19 Laurent GUERBY
auth_supported = cephx
89 19 Laurent GUERBY
auth_cluster_required = cephx
90 19 Laurent GUERBY
auth_service_required = cephx
91 19 Laurent GUERBY
auth_client_required = cephx
92 1 Mehdi Abaakouk
mon_host = 192.168.99.251,192.168.99.252,192.168.99.253
93 1 Mehdi Abaakouk
94 1 Mehdi Abaakouk
[client.sileht]
95 1 Mehdi Abaakouk
keyring = /etc/ceph/ceph.client.sileht.keyring
96 1 Mehdi Abaakouk
</pre>
97 1 Mehdi Abaakouk
98 36 Laurent GUERBY
Si c'est une migration commenter toutes les lignes dans /etc/ceph/rbdmap
99 36 Laurent GUERBY
100 31 Mehdi Abaakouk
On configure le mapping automatique du volume rbd :
101 1 Mehdi Abaakouk
102 1 Mehdi Abaakouk
<pre>
103 39 Mehdi Abaakouk
CEPH_ARGS="--id sileht" rbd-nbd map disks/sileht-vol
104 1 Mehdi Abaakouk
</pre>
105 24 Mehdi Abaakouk
106 1 Mehdi Abaakouk
le disque est prêt, on peut soit le formater directement :
107 1 Mehdi Abaakouk
108 1 Mehdi Abaakouk
<pre>
109 31 Mehdi Abaakouk
$ mkfs.ext4 /dev/nbd0
110 31 Mehdi Abaakouk
$ echo /dev/nbd0  /backup ext4   defaults,discard,noatime,_netdev       0       2" >> /etc/fstab
111 24 Mehdi Abaakouk
$ mount /backup
112 26 Mehdi Abaakouk
</pre>
113 1 Mehdi Abaakouk
114 11 Laurent GUERBY
soit le chiffrer:
115 11 Laurent GUERBY
116 1 Mehdi Abaakouk
<pre>
117 31 Mehdi Abaakouk
$ sudo cryptsetup luksFormat /dev/nbd0
118 24 Mehdi Abaakouk
119 1 Mehdi Abaakouk
WARNING!
120 1 Mehdi Abaakouk
========
121 31 Mehdi Abaakouk
This will overwrite data on /dev/nbd0 irrevocably.
122 24 Mehdi Abaakouk
123 1 Mehdi Abaakouk
Are you sure? (Type uppercase yes): YES
124 5 Laurent GUERBY
Enter passphrase:
125 1 Mehdi Abaakouk
Verify passphrase:
126 1 Mehdi Abaakouk
</pre>
127 1 Mehdi Abaakouk
128 1 Mehdi Abaakouk
<pre>
129 35 Laurent GUERBY
$ cryptsetup luksOpen /dev/nbd0 backup1 --allow-discards
130 24 Mehdi Abaakouk
$ mkfs.ext4 /dev/mapper/backup1
131 1 Mehdi Abaakouk
$ mount /dev/mapper/backup1 /backup
132 5 Laurent GUERBY
</pre>
133 1 Mehdi Abaakouk
134 1 Mehdi Abaakouk
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)
135 1 Mehdi Abaakouk
136 1 Mehdi Abaakouk
Ajout de la configuration persistante via un keyfile (attention : c'est une clé privée qui permet d'ouvrir le volume cryptfs sans passphrase) :
137 1 Mehdi Abaakouk
138 1 Mehdi Abaakouk
<pre>
139 1 Mehdi Abaakouk
$ dd if=/dev/urandom of=/etc/luks.key bs=1024 count=4
140 1 Mehdi Abaakouk
$ chmod 0400 /etc/luks.key
141 31 Mehdi Abaakouk
$ cryptsetup luksAddKey /dev/nbd0 /etc/luks.key
142 26 Mehdi Abaakouk
143 1 Mehdi Abaakouk
$ sudo blkid | grep -e rbd0 -e backup1
144 1 Mehdi Abaakouk
/dev/rbd0: UUID="1a268f70-6f6d-41f7-9216-43ba0bd0750b" TYPE="crypto_LUKS"
145 1 Mehdi Abaakouk
/dev/mapper/backup1: UUID="51db13d9-4ac4-4e47-bb7a-b111994cdefd" TYPE="ext4" 
146 1 Mehdi Abaakouk
147 1 Mehdi Abaakouk
148 24 Mehdi Abaakouk
$ echo "backup1 UUID=1a268f70-6f6d-41f7-9216-43ba0bd0750b /etc/luks.key luks,discard" >> /etc/crypttab 
149 2 Laurent GUERBY
$ echo "UUID=51db13d9-4ac4-4e47-bb7a-b111994cdefd  /backup ext4   defaults,discard,noatime,_netdev       0       2" >> /etc/fstab
150 2 Laurent GUERBY
</pre>