Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 23

Laurent GUERBY, 26/08/2015 14:15

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 1 Mehdi Abaakouk
Sur le cluster ceph:
12 1 Mehdi Abaakouk
13 22 Laurent GUERBY
http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/ceph-create-ext-pool-v2.sh
14 22 Laurent GUERBY
15 22 Laurent GUERBY
<pre>
16 23 Laurent GUERBY
./ceph-create-ext-pool.sh ec4p1 guerby7 4096 # GB  
17 23 Laurent GUERBY
18 23 Laurent GUERBY
# copier le keyring
19 23 Laurent GUERBY
20 23 Laurent GUERBY
# sur le client
21 23 Laurent GUERBY
22 23 Laurent GUERBY
# cat /etc/ceph/ceph.conf
23 23 Laurent GUERBY
[global]
24 23 Laurent GUERBY
fsid = 1fe74663-8dfa-486c-bb80-3bd94c90c967
25 23 Laurent GUERBY
auth_supported = cephx
26 23 Laurent GUERBY
auth_cluster_required = cephx
27 23 Laurent GUERBY
auth_service_required = cephx
28 23 Laurent GUERBY
auth_client_required = cephx
29 23 Laurent GUERBY
mon_host = 192.168.99.251,192.168.99.252,192.168.99.253
30 23 Laurent GUERBY
31 23 Laurent GUERBY
32 23 Laurent GUERBY
[client.guerby7]
33 23 Laurent GUERBY
keyring = /etc/ceph/ceph.client.guerby7.keyring
34 23 Laurent GUERBY
35 23 Laurent GUERBY
# cat /etc/ceph/ceph.client.guerby7.keyring
36 23 Laurent GUERBY
[client.guerby7]
37 23 Laurent GUERBY
        key = xxxxxxxx
38 23 Laurent GUERBY
39 23 Laurent GUERBY
# cat /etc/ceph/rbdmap
40 23 Laurent GUERBY
# RbdDevice             Parameters
41 23 Laurent GUERBY
ec4p1/guerby7-vol id=guerby7
42 23 Laurent GUERBY
43 23 Laurent GUERBY
# service rdbmap restart
44 23 Laurent GUERBY
45 23 Laurent GUERBY
# rbd --id guerby7 -p ec4p1 info guerby7-vol
46 23 Laurent GUERBY
47 23 Laurent GUERBY
# le block device : /dev/rbd/ec4p1/guerby7-vol
48 22 Laurent GUERBY
</pre>
49 22 Laurent GUERBY
50 22 Laurent GUERBY
51 22 Laurent GUERBY
h3. Vieille methode
52 22 Laurent GUERBY
53 6 Laurent GUERBY
Création de l'utilisateur et du pool ceph pour cet utilisateur
54 1 Mehdi Abaakouk
55 1 Mehdi Abaakouk
http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/ceph-create-ext-pool.sh
56 1 Mehdi Abaakouk
57 1 Mehdi Abaakouk
<pre>
58 18 Laurent GUERBY
# # ./ceph-create-ext-pool.sh <username> <size en giga> 
59 9 Laurent GUERBY
# ./ceph-create-ext-pool.sh sileht 100  
60 1 Mehdi Abaakouk
creating ceph.client.sileht.keyring
61 1 Mehdi Abaakouk
imported keyring
62 1 Mehdi Abaakouk
pool 'sileht-pool' created
63 1 Mehdi Abaakouk
set pool 70 size to 2
64 1 Mehdi Abaakouk
set pool 70 min_size to 2
65 1 Mehdi Abaakouk
set-quota max_bytes = 107374182400 for pool sileht-pool
66 9 Laurent GUERBY
# cat ceph.client.sileht.keyring 
67 9 Laurent GUERBY
...
68 9 Laurent GUERBY
# ceph auth get client.sileht
69 9 Laurent GUERBY
... (identical to file)
70 1 Mehdi Abaakouk
</pre>
71 9 Laurent GUERBY
72 10 Laurent GUERBY
Le fichier important pour le client est ./ceph.client.sileht.keyring
73 1 Mehdi Abaakouk
74 3 Laurent GUERBY
h2. Client
75 1 Mehdi Abaakouk
76 7 Mehdi Abaakouk
h3. Installation de ceph
77 7 Mehdi Abaakouk
78 7 Mehdi Abaakouk
h4. Debian jessie
79 7 Mehdi Abaakouk
80 7 Mehdi Abaakouk
<pre>
81 7 Mehdi Abaakouk
apt-get install ceph
82 7 Mehdi Abaakouk
</pre>
83 7 Mehdi Abaakouk
84 7 Mehdi Abaakouk
h4. Debian wheezy/squeeze, Ubuntu precise/quantal/raring/saucy/trusty
85 7 Mehdi Abaakouk
86 7 Mehdi Abaakouk
<pre>
87 7 Mehdi Abaakouk
apt-get install lsb-release
88 7 Mehdi Abaakouk
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add -
89 7 Mehdi Abaakouk
echo deb http://ceph.com/debian-firefly/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
90 7 Mehdi Abaakouk
apt-get update
91 7 Mehdi Abaakouk
apt-get install ceph
92 7 Mehdi Abaakouk
</pre>
93 7 Mehdi Abaakouk
94 12 Laurent GUERBY
Un kernel plus recent que 3.9 (ou 3.16) est aussi necessaire, pour wheezy :
95 12 Laurent GUERBY
<pre>
96 12 Laurent GUERBY
echo "deb http://http.debian.net/debian wheezy-backports main" > /etc/apt/sources.list.d/wheezy-backports.list
97 12 Laurent GUERBY
apt-get update
98 12 Laurent GUERBY
apt-get install -t wheezy-backports  linux-image-amd64
99 12 Laurent GUERBY
</pre>
100 12 Laurent GUERBY
101 7 Mehdi Abaakouk
h3. Configuration de ceph
102 12 Laurent GUERBY
103 6 Laurent GUERBY
Sur le client rbd :
104 1 Mehdi Abaakouk
105 16 Laurent GUERBY
La machine machine doit être configuré avec une ip sur le vlan 3199, si eth0 n'est pas dans un bridge :
106 16 Laurent GUERBY
107 17 Laurent GUERBY
<pre>
108 16 Laurent GUERBY
ip link add link eth0 name eth0.3199 type vlan id 3199
109 16 Laurent GUERBY
ip link set dev eth0.3199 txqueuelen 100
110 16 Laurent GUERBY
ip link set eth0.3199 up
111 16 Laurent GUERBY
ip addr add 192.168.99.XXX/24 dev eth0.3199 # XXX donne par les admin ttnn
112 17 Laurent GUERBY
</pre>
113 16 Laurent GUERBY
114 21 bikepunk bikepunk
pour que la config du VLAN se lance automatiquement au boot, on peut rajouter dans /etc/network/interfaces
115 21 bikepunk bikepunk
116 21 bikepunk bikepunk
<pre>
117 21 bikepunk bikepunk
# Vlan pour ceph
118 21 bikepunk bikepunk
auto eth0.3199
119 21 bikepunk bikepunk
iface eth0.3199 inet manual
120 21 bikepunk bikepunk
    up ip link set dev eth0.3199 txqueuelen 100
121 21 bikepunk bikepunk
    up ip link set eth0.3199 up
122 21 bikepunk bikepunk
    up ip addr add 192.168.99.222/24 dev eth0.3199
123 21 bikepunk bikepunk
</pre>
124 21 bikepunk bikepunk
125 16 Laurent GUERBY
Installation de ceph :
126 1 Mehdi Abaakouk
127 1 Mehdi Abaakouk
<pre>
128 1 Mehdi Abaakouk
apt-get install ceph
129 1 Mehdi Abaakouk
</pre>
130 1 Mehdi Abaakouk
131 5 Laurent GUERBY
Le membre récupére son  keyring (ceph.client.sileht.keyring ici) et le copie dans /etc/ceph/
132 1 Mehdi Abaakouk
133 19 Laurent GUERBY
134 19 Laurent GUERBY
<pre>
135 19 Laurent GUERBY
# cat /etc/ceph/ceph.client.sileht.keyring
136 19 Laurent GUERBY
[client.sileht]
137 19 Laurent GUERBY
	key = xxxxxxxxxyyyy==
138 19 Laurent GUERBY
	caps mon = "allow profile simple-rados-client"
139 19 Laurent GUERBY
	caps osd = "allow rwx pool=sileht-pool"
140 19 Laurent GUERBY
</pre>
141 19 Laurent GUERBY
142 1 Mehdi Abaakouk
Il peut ensuite créer le fichier /etc/ceph/ceph.conf
143 1 Mehdi Abaakouk
144 1 Mehdi Abaakouk
<pre>
145 1 Mehdi Abaakouk
[global]
146 1 Mehdi Abaakouk
fsid = 1fe74663-8dfa-486c-bb80-3bd94c90c967
147 1 Mehdi Abaakouk
auth_supported = cephx
148 1 Mehdi Abaakouk
auth_cluster_required = cephx
149 1 Mehdi Abaakouk
auth_service_required = cephx
150 1 Mehdi Abaakouk
auth_client_required = cephx
151 1 Mehdi Abaakouk
mon_host = 192.168.99.251,192.168.99.252,192.168.99.253
152 1 Mehdi Abaakouk
153 1 Mehdi Abaakouk
[client.sileht]
154 1 Mehdi Abaakouk
keyring = /etc/ceph/ceph.client.sileht.keyring
155 1 Mehdi Abaakouk
</pre>
156 1 Mehdi Abaakouk
157 5 Laurent GUERBY
On vérifie que cela marche :
158 1 Mehdi Abaakouk
159 1 Mehdi Abaakouk
<pre>
160 1 Mehdi Abaakouk
$ rbd --id sileht -p sileht-pool ls
161 11 Laurent GUERBY
$ echo $?
162 11 Laurent GUERBY
0
163 1 Mehdi Abaakouk
</pre>
164 1 Mehdi Abaakouk
165 20 Laurent GUERBY
Si il n'y a pas d'erreur c'est bon, maintenant on créée un volume rbd , size en megabyte :
166 1 Mehdi Abaakouk
167 1 Mehdi Abaakouk
<pre>
168 1 Mehdi Abaakouk
$ rbd --id sileht --pool sileht-pool create --size 100000 backup
169 1 Mehdi Abaakouk
$ rbd --id sileht -p sileht-pool ls
170 1 Mehdi Abaakouk
backup
171 1 Mehdi Abaakouk
</pre>
172 1 Mehdi Abaakouk
173 5 Laurent GUERBY
On configure le mapping automatique du volume rbd :
174 1 Mehdi Abaakouk
175 1 Mehdi Abaakouk
<pre>
176 1 Mehdi Abaakouk
$ echo sileht-pool/backup  id=sileht >> /etc/ceph/rbdmap
177 1 Mehdi Abaakouk
$ service rbdmap restart
178 1 Mehdi Abaakouk
RBD Mapping: 'sileht-pool/backup'...done.
179 1 Mehdi Abaakouk
</pre>
180 1 Mehdi Abaakouk
181 1 Mehdi Abaakouk
182 5 Laurent GUERBY
le disque est prêt, on peut soit le formater directement :
183 1 Mehdi Abaakouk
184 1 Mehdi Abaakouk
<pre>
185 1 Mehdi Abaakouk
$ mkfs.ext4 /dev/rbd/sileht-pool/backup 
186 1 Mehdi Abaakouk
$ mount /dev/rbd/sileht-pool/backup  /backup
187 1 Mehdi Abaakouk
</pre>
188 1 Mehdi Abaakouk
189 1 Mehdi Abaakouk
soit le chiffrer:
190 1 Mehdi Abaakouk
191 1 Mehdi Abaakouk
<pre>
192 1 Mehdi Abaakouk
$ sudo cryptsetup luksFormat /dev/rbd/sileht-pool/backup
193 1 Mehdi Abaakouk
194 1 Mehdi Abaakouk
WARNING!
195 1 Mehdi Abaakouk
========
196 1 Mehdi Abaakouk
This will overwrite data on /dev/rbd/sileht-pool/backup irrevocably.
197 1 Mehdi Abaakouk
198 1 Mehdi Abaakouk
Are you sure? (Type uppercase yes): YES
199 1 Mehdi Abaakouk
Enter passphrase:
200 1 Mehdi Abaakouk
Verify passphrase:
201 1 Mehdi Abaakouk
</pre>
202 1 Mehdi Abaakouk
203 1 Mehdi Abaakouk
<pre>
204 1 Mehdi Abaakouk
$ cryptsetup luksOpen /dev/rbd/sileht-pool/backup backup1
205 1 Mehdi Abaakouk
$ mkfs.ext4 /dev/mapper/backup1
206 1 Mehdi Abaakouk
$ mount /dev/mapper/backup1 /backup
207 1 Mehdi Abaakouk
</pre>
208 1 Mehdi Abaakouk
209 2 Laurent GUERBY
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)
210 2 Laurent GUERBY
211 5 Laurent GUERBY
Ajout de la configuration persistante via un keyfile (attention : c'est une clé privée qui permet d'ouvrir le volume cryptfs sans passphrase) :
212 1 Mehdi Abaakouk
213 1 Mehdi Abaakouk
<pre>
214 1 Mehdi Abaakouk
$ dd if=/dev/urandom of=/etc/luks.key bs=1024 count=4
215 1 Mehdi Abaakouk
$ chmod 0400 /etc/luks.key
216 1 Mehdi Abaakouk
$ cryptsetup luksAddKey /dev/rbd/sileht-pool/backup /etc/luks.key
217 1 Mehdi Abaakouk
218 1 Mehdi Abaakouk
$ sudo blkid | grep -e rbd0 -e backup1
219 1 Mehdi Abaakouk
/dev/rbd0: UUID="1a268f70-6f6d-41f7-9216-43ba0bd0750b" TYPE="crypto_LUKS"
220 1 Mehdi Abaakouk
/dev/mapper/backup1: UUID="51db13d9-4ac4-4e47-bb7a-b111994cdefd" TYPE="ext4" 
221 1 Mehdi Abaakouk
222 1 Mehdi Abaakouk
223 1 Mehdi Abaakouk
$ echo "backup1 UUID=1a268f70-6f6d-41f7-9216-43ba0bd0750b /etc/luks.key luks" >> /etc/crypttab 
224 13 Mehdi Abaakouk
$ echo "UUID=51db13d9-4ac4-4e47-bb7a-b111994cdefd  /backup ext4   defaults,noatime,_netdev       0       2" >> /etc/fstab
225 1 Mehdi Abaakouk
</pre>
226 14 Laurent GUERBY
227 14 Laurent GUERBY
Effacement d'une image :
228 14 Laurent GUERBY
229 15 Laurent GUERBY
<pre>
230 14 Laurent GUERBY
# Editer /etc/ceph/rbdmap et enlever la ligne "backup"
231 15 Laurent GUERBY
# service rbdmap restart
232 14 Laurent GUERBY
# rbd --id sileht --pool -pool rm backup
233 15 Laurent GUERBY
</pre>