Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 11

Laurent GUERBY, 16/10/2014 10:33

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 9 Laurent GUERBY
# # ./ceph-create-ext-pool.sh <username> <auid> <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 7 Mehdi Abaakouk
h3. Configuration de ceph
55 6 Laurent GUERBY
Sur le client rbd :
56 1 Mehdi Abaakouk
57 1 Mehdi Abaakouk
La machine machine doit être configuré avec une ip sur le vlan3199
58 1 Mehdi Abaakouk
59 1 Mehdi Abaakouk
<pre>
60 1 Mehdi Abaakouk
apt-get install ceph
61 1 Mehdi Abaakouk
</pre>
62 1 Mehdi Abaakouk
63 5 Laurent GUERBY
Le membre récupére son  keyring (ceph.client.sileht.keyring ici) et le copie dans /etc/ceph/
64 1 Mehdi Abaakouk
65 1 Mehdi Abaakouk
Il peut ensuite créer le fichier /etc/ceph/ceph.conf
66 1 Mehdi Abaakouk
67 1 Mehdi Abaakouk
<pre>
68 1 Mehdi Abaakouk
[global]
69 1 Mehdi Abaakouk
fsid = 1fe74663-8dfa-486c-bb80-3bd94c90c967
70 1 Mehdi Abaakouk
auth_supported = cephx
71 1 Mehdi Abaakouk
auth_cluster_required = cephx
72 1 Mehdi Abaakouk
auth_service_required = cephx
73 1 Mehdi Abaakouk
auth_client_required = cephx
74 1 Mehdi Abaakouk
mon_host = 192.168.99.251,192.168.99.252,192.168.99.253
75 1 Mehdi Abaakouk
76 1 Mehdi Abaakouk
[client.sileht]
77 1 Mehdi Abaakouk
keyring = /etc/ceph/ceph.client.sileht.keyring
78 1 Mehdi Abaakouk
</pre>
79 1 Mehdi Abaakouk
80 5 Laurent GUERBY
On vérifie que cela marche :
81 1 Mehdi Abaakouk
82 1 Mehdi Abaakouk
<pre>
83 1 Mehdi Abaakouk
$ rbd --id sileht -p sileht-pool ls
84 11 Laurent GUERBY
$ echo $?
85 11 Laurent GUERBY
0
86 1 Mehdi Abaakouk
</pre>
87 1 Mehdi Abaakouk
88 5 Laurent GUERBY
Si il n'y a pas d'erreur c'est bon, maintenant on créée un volume rbd :
89 1 Mehdi Abaakouk
90 1 Mehdi Abaakouk
<pre>
91 1 Mehdi Abaakouk
$ rbd --id sileht --pool sileht-pool create --size 100000 backup
92 1 Mehdi Abaakouk
$ rbd --id sileht -p sileht-pool ls
93 1 Mehdi Abaakouk
backup
94 1 Mehdi Abaakouk
</pre>
95 1 Mehdi Abaakouk
96 5 Laurent GUERBY
On configure le mapping automatique du volume rbd :
97 1 Mehdi Abaakouk
98 1 Mehdi Abaakouk
<pre>
99 1 Mehdi Abaakouk
$ echo sileht-pool/backup  id=sileht >> /etc/ceph/rbdmap
100 1 Mehdi Abaakouk
$ service rbdmap restart
101 1 Mehdi Abaakouk
RBD Mapping: 'sileht-pool/backup'...done.
102 1 Mehdi Abaakouk
</pre>
103 1 Mehdi Abaakouk
104 1 Mehdi Abaakouk
105 5 Laurent GUERBY
le disque est prêt, on peut soit le formater directement :
106 1 Mehdi Abaakouk
107 1 Mehdi Abaakouk
<pre>
108 1 Mehdi Abaakouk
$ mkfs.ext4 /dev/rbd/sileht-pool/backup 
109 1 Mehdi Abaakouk
$ mount /dev/rbd/sileht-pool/backup  /backup
110 1 Mehdi Abaakouk
</pre>
111 1 Mehdi Abaakouk
112 1 Mehdi Abaakouk
soit le chiffrer:
113 1 Mehdi Abaakouk
114 1 Mehdi Abaakouk
<pre>
115 1 Mehdi Abaakouk
$ sudo cryptsetup luksFormat /dev/rbd/sileht-pool/backup
116 1 Mehdi Abaakouk
117 1 Mehdi Abaakouk
WARNING!
118 1 Mehdi Abaakouk
========
119 1 Mehdi Abaakouk
This will overwrite data on /dev/rbd/sileht-pool/backup irrevocably.
120 1 Mehdi Abaakouk
121 1 Mehdi Abaakouk
Are you sure? (Type uppercase yes): YES
122 1 Mehdi Abaakouk
Enter passphrase:
123 1 Mehdi Abaakouk
Verify passphrase:
124 1 Mehdi Abaakouk
</pre>
125 1 Mehdi Abaakouk
126 1 Mehdi Abaakouk
<pre>
127 1 Mehdi Abaakouk
$ cryptsetup luksOpen /dev/rbd/sileht-pool/backup backup1
128 1 Mehdi Abaakouk
$ mkfs.ext4 /dev/mapper/backup1
129 1 Mehdi Abaakouk
$ mount /dev/mapper/backup1 /backup
130 1 Mehdi Abaakouk
</pre>
131 1 Mehdi Abaakouk
132 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)
133 2 Laurent GUERBY
134 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) :
135 1 Mehdi Abaakouk
136 1 Mehdi Abaakouk
<pre>
137 1 Mehdi Abaakouk
$ dd if=/dev/urandom of=/etc/luks.key bs=1024 count=4
138 1 Mehdi Abaakouk
$ chmod 0400 /etc/luks.key
139 1 Mehdi Abaakouk
$ cryptsetup luksAddKey /dev/rbd/sileht-pool/backup /etc/luks.key
140 1 Mehdi Abaakouk
141 1 Mehdi Abaakouk
$ sudo blkid | grep -e rbd0 -e backup1
142 1 Mehdi Abaakouk
/dev/rbd0: UUID="1a268f70-6f6d-41f7-9216-43ba0bd0750b" TYPE="crypto_LUKS"
143 1 Mehdi Abaakouk
/dev/mapper/backup1: UUID="51db13d9-4ac4-4e47-bb7a-b111994cdefd" TYPE="ext4" 
144 1 Mehdi Abaakouk
145 1 Mehdi Abaakouk
146 1 Mehdi Abaakouk
$ echo "backup1 UUID=1a268f70-6f6d-41f7-9216-43ba0bd0750b /etc/luks.key luks" >> /etc/crypttab 
147 1 Mehdi Abaakouk
$ echo "UUID=51db13d9-4ac4-4e47-bb7a-b111994cdefd  /backup ext4   defaults,noatime       0       2" >> /etc/fstab
148 1 Mehdi Abaakouk
</pre>