Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 40

Mehdi Abaakouk, 06/09/2017 07:39

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 29 Mehdi Abaakouk
h4. Debian et Ubuntu
27 7 Mehdi Abaakouk
28 40 Mehdi Abaakouk
Le cluster utilise actuellement la version jewel (10.2.X), qui peut être installé via (version au 20170704):
29 40 Mehdi Abaakouk
30 40 Mehdi Abaakouk
* ubuntu xenial-updates 10.2.7-0ubuntu0.16.04.1
31 40 Mehdi Abaakouk
* ubuntu zety-updates 10.2.7-0ubuntu0.17.04.1
32 40 Mehdi Abaakouk
* debian jessie-backport (10.2.5-6~bpo8+1)
33 40 Mehdi Abaakouk
* debian stretch (10.2.5-7.2)
34 40 Mehdi Abaakouk
35 40 Mehdi Abaakouk
Pour avoir le derniére version jewel sur n'importe quel distribution (debian based)
36 40 Mehdi Abaakouk
37 7 Mehdi Abaakouk
<pre>
38 7 Mehdi Abaakouk
apt-get install lsb-release
39 7 Mehdi Abaakouk
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add -
40 33 Laurent GUERBY
echo deb http://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
41 7 Mehdi Abaakouk
apt-get update
42 34 Laurent GUERBY
apt-get install ceph rbd-nbd
43 12 Laurent GUERBY
</pre>
44 40 Mehdi Abaakouk
45 40 Mehdi Abaakouk
*/!\ la version 10.2.9-1~bpo80+1 du repo ceph a le support nbd cassé, en attendant on peut temporairement la version 10.2.5-6~bpo8+1 de jessie-backport /!\*
46 12 Laurent GUERBY
47 7 Mehdi Abaakouk
h3. Configuration de ceph
48 12 Laurent GUERBY
49 6 Laurent GUERBY
Sur le client rbd :
50 1 Mehdi Abaakouk
51 1 Mehdi Abaakouk
La machine machine doit être configuré avec une ip sur le vlan 3199, si eth0 n'est pas dans un bridge :
52 16 Laurent GUERBY
53 16 Laurent GUERBY
<pre>
54 17 Laurent GUERBY
ip link add link eth0 name eth0.3199 type vlan id 3199
55 1 Mehdi Abaakouk
ip link set dev eth0.3199 txqueuelen 100
56 16 Laurent GUERBY
ip link set eth0.3199 up
57 16 Laurent GUERBY
ip addr add 192.168.99.XXX/24 dev eth0.3199 # XXX donne par les admin ttnn
58 1 Mehdi Abaakouk
</pre>
59 16 Laurent GUERBY
60 1 Mehdi Abaakouk
pour que la config du VLAN se lance automatiquement au boot, on peut rajouter dans /etc/network/interfaces
61 16 Laurent GUERBY
62 17 Laurent GUERBY
<pre>
63 16 Laurent GUERBY
# Vlan pour ceph
64 21 bikepunk bikepunk
auto eth0.3199
65 21 bikepunk bikepunk
iface eth0.3199 inet manual
66 21 bikepunk bikepunk
    up ip link set dev eth0.3199 txqueuelen 100
67 1 Mehdi Abaakouk
    up ip link set eth0.3199 up
68 1 Mehdi Abaakouk
    up ip addr add 192.168.99.222/24 dev eth0.3199
69 21 bikepunk bikepunk
</pre>
70 21 bikepunk bikepunk
71 21 bikepunk bikepunk
Le membre récupére son  keyring (ceph.client.sileht.keyring ici) et le copie dans /etc/ceph/
72 1 Mehdi Abaakouk
73 16 Laurent GUERBY
74 1 Mehdi Abaakouk
<pre>
75 1 Mehdi Abaakouk
# cat /etc/ceph/ceph.client.sileht.keyring
76 1 Mehdi Abaakouk
[client.sileht]
77 5 Laurent GUERBY
	key = xxxxxxxxxyyyy==
78 1 Mehdi Abaakouk
</pre>
79 1 Mehdi Abaakouk
80 19 Laurent GUERBY
Il peut ensuite créer le fichier /etc/ceph/ceph.conf
81 19 Laurent GUERBY
82 19 Laurent GUERBY
<pre>
83 19 Laurent GUERBY
[global]
84 19 Laurent GUERBY
fsid = 1fe74663-8dfa-486c-bb80-3bd94c90c967
85 19 Laurent GUERBY
auth_supported = cephx
86 19 Laurent GUERBY
auth_cluster_required = cephx
87 19 Laurent GUERBY
auth_service_required = cephx
88 19 Laurent GUERBY
auth_client_required = cephx
89 1 Mehdi Abaakouk
mon_host = 192.168.99.251,192.168.99.252,192.168.99.253
90 1 Mehdi Abaakouk
91 1 Mehdi Abaakouk
[client.sileht]
92 1 Mehdi Abaakouk
keyring = /etc/ceph/ceph.client.sileht.keyring
93 1 Mehdi Abaakouk
</pre>
94 1 Mehdi Abaakouk
95 36 Laurent GUERBY
Si c'est une migration commenter toutes les lignes dans /etc/ceph/rbdmap
96 36 Laurent GUERBY
97 31 Mehdi Abaakouk
On configure le mapping automatique du volume rbd :
98 1 Mehdi Abaakouk
99 1 Mehdi Abaakouk
<pre>
100 39 Mehdi Abaakouk
CEPH_ARGS="--id sileht" rbd-nbd map disks/sileht-vol
101 1 Mehdi Abaakouk
</pre>
102 24 Mehdi Abaakouk
103 1 Mehdi Abaakouk
le disque est prêt, on peut soit le formater directement :
104 1 Mehdi Abaakouk
105 1 Mehdi Abaakouk
<pre>
106 31 Mehdi Abaakouk
$ mkfs.ext4 /dev/nbd0
107 31 Mehdi Abaakouk
$ echo /dev/nbd0  /backup ext4   defaults,discard,noatime,_netdev       0       2" >> /etc/fstab
108 24 Mehdi Abaakouk
$ mount /backup
109 26 Mehdi Abaakouk
</pre>
110 1 Mehdi Abaakouk
111 11 Laurent GUERBY
soit le chiffrer:
112 11 Laurent GUERBY
113 1 Mehdi Abaakouk
<pre>
114 31 Mehdi Abaakouk
$ sudo cryptsetup luksFormat /dev/nbd0
115 24 Mehdi Abaakouk
116 1 Mehdi Abaakouk
WARNING!
117 1 Mehdi Abaakouk
========
118 31 Mehdi Abaakouk
This will overwrite data on /dev/nbd0 irrevocably.
119 24 Mehdi Abaakouk
120 1 Mehdi Abaakouk
Are you sure? (Type uppercase yes): YES
121 5 Laurent GUERBY
Enter passphrase:
122 1 Mehdi Abaakouk
Verify passphrase:
123 1 Mehdi Abaakouk
</pre>
124 1 Mehdi Abaakouk
125 1 Mehdi Abaakouk
<pre>
126 35 Laurent GUERBY
$ cryptsetup luksOpen /dev/nbd0 backup1 --allow-discards
127 24 Mehdi Abaakouk
$ mkfs.ext4 /dev/mapper/backup1
128 1 Mehdi Abaakouk
$ mount /dev/mapper/backup1 /backup
129 5 Laurent GUERBY
</pre>
130 1 Mehdi Abaakouk
131 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)
132 1 Mehdi Abaakouk
133 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) :
134 1 Mehdi Abaakouk
135 1 Mehdi Abaakouk
<pre>
136 1 Mehdi Abaakouk
$ dd if=/dev/urandom of=/etc/luks.key bs=1024 count=4
137 1 Mehdi Abaakouk
$ chmod 0400 /etc/luks.key
138 31 Mehdi Abaakouk
$ cryptsetup luksAddKey /dev/nbd0 /etc/luks.key
139 26 Mehdi Abaakouk
140 1 Mehdi Abaakouk
$ sudo blkid | grep -e rbd0 -e backup1
141 1 Mehdi Abaakouk
/dev/rbd0: UUID="1a268f70-6f6d-41f7-9216-43ba0bd0750b" TYPE="crypto_LUKS"
142 1 Mehdi Abaakouk
/dev/mapper/backup1: UUID="51db13d9-4ac4-4e47-bb7a-b111994cdefd" TYPE="ext4" 
143 1 Mehdi Abaakouk
144 1 Mehdi Abaakouk
145 24 Mehdi Abaakouk
$ echo "backup1 UUID=1a268f70-6f6d-41f7-9216-43ba0bd0750b /etc/luks.key luks,discard" >> /etc/crypttab 
146 2 Laurent GUERBY
$ echo "UUID=51db13d9-4ac4-4e47-bb7a-b111994cdefd  /backup ext4   defaults,discard,noatime,_netdev       0       2" >> /etc/fstab
147 2 Laurent GUERBY
</pre>
148 24 Mehdi Abaakouk
149 24 Mehdi Abaakouk
h2. Vieille methode
150 24 Mehdi Abaakouk
151 24 Mehdi Abaakouk
Création de l'utilisateur et du pool ceph pour cet utilisateur
152 24 Mehdi Abaakouk
153 24 Mehdi Abaakouk
http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/ceph-create-ext-pool.sh
154 24 Mehdi Abaakouk
155 24 Mehdi Abaakouk
<pre>
156 24 Mehdi Abaakouk
# # ./ceph-create-ext-pool.sh <username> <size en giga> 
157 24 Mehdi Abaakouk
# ./ceph-create-ext-pool.sh sileht 100  
158 24 Mehdi Abaakouk
creating ceph.client.sileht.keyring
159 24 Mehdi Abaakouk
imported keyring
160 24 Mehdi Abaakouk
pool 'sileht-pool' created
161 24 Mehdi Abaakouk
set pool 70 size to 2
162 24 Mehdi Abaakouk
set pool 70 min_size to 2
163 24 Mehdi Abaakouk
set-quota max_bytes = 107374182400 for pool sileht-pool
164 24 Mehdi Abaakouk
# cat ceph.client.sileht.keyring 
165 24 Mehdi Abaakouk
...
166 24 Mehdi Abaakouk
# ceph auth get client.sileht
167 24 Mehdi Abaakouk
... (identical to file)
168 24 Mehdi Abaakouk
</pre>
169 24 Mehdi Abaakouk
170 24 Mehdi Abaakouk
Le fichier important pour le client est ./ceph.client.sileht.keyring