Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 26

Mehdi Abaakouk, 08/12/2015 11:58

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