Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 20

Laurent GUERBY, 04/12/2014 22:43

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