Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 22

Laurent GUERBY, 26/08/2015 13:50

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