Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 47

Mehdi Abaakouk, 23/12/2019 10:01

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 43 Mehdi Abaakouk
Sur le cluster ceph (g1):
12 1 Mehdi Abaakouk
13 1 Mehdi Abaakouk
<pre>
14 43 Mehdi Abaakouk
# tools/ceph-create-ext-pool-v2.sh <pool> <username> <size en giga> 
15 43 Mehdi Abaakouk
tools/ceph-create-ext-pool-v2.sh ec4p1 sileht 4096 # GB  
16 22 Laurent GUERBY
</pre>
17 22 Laurent GUERBY
18 43 Mehdi Abaakouk
http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/ceph-create-ext-pool-v2.sh
19 1 Mehdi Abaakouk
20 3 Laurent GUERBY
h2. Client
21 1 Mehdi Abaakouk
22 7 Mehdi Abaakouk
h3. Installation de ceph
23 7 Mehdi Abaakouk
24 29 Mehdi Abaakouk
h4. Debian et Ubuntu
25 7 Mehdi Abaakouk
26 47 Mehdi Abaakouk
Le cluster utilise actuellement (23/12/2019) la version mimic (13.2.X), la version minimal de l'API requis est Jewel (12.2.X).
27 1 Mehdi Abaakouk
28 47 Mehdi Abaakouk
Pour vérifier les versions en live sur g1:
29 1 Mehdi Abaakouk
30 47 Mehdi Abaakouk
<pre>
31 47 Mehdi Abaakouk
$ # Du cluster:
32 47 Mehdi Abaakouk
$ ceph versions | jq .overall
33 47 Mehdi Abaakouk
{
34 47 Mehdi Abaakouk
  "ceph version 13.2.6 (7b695f835b03642f85998b2ae7b6dd093d9fbce4) mimic (stable)": 63
35 47 Mehdi Abaakouk
}
36 1 Mehdi Abaakouk
37 47 Mehdi Abaakouk
$ Pour les clients:
38 47 Mehdi Abaakouk
$ ceph osd crush show-tunables | jq '.minimum_required_version'
39 47 Mehdi Abaakouk
"jewel"
40 47 Mehdi Abaakouk
</pre>
41 47 Mehdi Abaakouk
42 47 Mehdi Abaakouk
43 47 Mehdi Abaakouk
Pour avoir le dernière version sur Ubuntu:
44 47 Mehdi Abaakouk
45 12 Laurent GUERBY
<pre>
46 40 Mehdi Abaakouk
apt-get install lsb-release
47 40 Mehdi Abaakouk
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add -
48 47 Mehdi Abaakouk
echo deb http://download.ceph.com/debian-mimic/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
49 42 Fabien ADAM
apt-get update
50 42 Fabien ADAM
apt-get install ceph rbd-nbd
51 42 Fabien ADAM
</pre>
52 42 Fabien ADAM
53 42 Fabien ADAM
54 7 Mehdi Abaakouk
h3. Configuration de ceph
55 12 Laurent GUERBY
56 6 Laurent GUERBY
Sur le client rbd :
57 1 Mehdi Abaakouk
58 1 Mehdi Abaakouk
La machine machine doit être configuré avec une ip sur le vlan 3199, si eth0 n'est pas dans un bridge :
59 16 Laurent GUERBY
60 16 Laurent GUERBY
<pre>
61 17 Laurent GUERBY
ip link add link eth0 name eth0.3199 type vlan id 3199
62 1 Mehdi Abaakouk
ip link set dev eth0.3199 txqueuelen 100
63 16 Laurent GUERBY
ip link set eth0.3199 up
64 16 Laurent GUERBY
ip addr add 192.168.99.XXX/24 dev eth0.3199 # XXX donne par les admin ttnn
65 1 Mehdi Abaakouk
</pre>
66 16 Laurent GUERBY
67 1 Mehdi Abaakouk
pour que la config du VLAN se lance automatiquement au boot, on peut rajouter dans /etc/network/interfaces
68 16 Laurent GUERBY
69 17 Laurent GUERBY
<pre>
70 16 Laurent GUERBY
# Vlan pour ceph
71 21 bikepunk bikepunk
auto eth0.3199
72 21 bikepunk bikepunk
iface eth0.3199 inet manual
73 21 bikepunk bikepunk
    up ip link set dev eth0.3199 txqueuelen 100
74 1 Mehdi Abaakouk
    up ip link set eth0.3199 up
75 1 Mehdi Abaakouk
    up ip addr add 192.168.99.222/24 dev eth0.3199
76 21 bikepunk bikepunk
</pre>
77 21 bikepunk bikepunk
78 21 bikepunk bikepunk
Le membre récupére son  keyring (ceph.client.sileht.keyring ici) et le copie dans /etc/ceph/
79 1 Mehdi Abaakouk
80 16 Laurent GUERBY
81 1 Mehdi Abaakouk
<pre>
82 1 Mehdi Abaakouk
# cat /etc/ceph/ceph.client.sileht.keyring
83 1 Mehdi Abaakouk
[client.sileht]
84 5 Laurent GUERBY
	key = xxxxxxxxxyyyy==
85 1 Mehdi Abaakouk
</pre>
86 1 Mehdi Abaakouk
87 19 Laurent GUERBY
Il peut ensuite créer le fichier /etc/ceph/ceph.conf
88 19 Laurent GUERBY
89 19 Laurent GUERBY
<pre>
90 19 Laurent GUERBY
[global]
91 19 Laurent GUERBY
fsid = 1fe74663-8dfa-486c-bb80-3bd94c90c967
92 19 Laurent GUERBY
auth_supported = cephx
93 19 Laurent GUERBY
auth_cluster_required = cephx
94 19 Laurent GUERBY
auth_service_required = cephx
95 19 Laurent GUERBY
auth_client_required = cephx
96 1 Mehdi Abaakouk
mon_host = 192.168.99.251,192.168.99.252,192.168.99.253
97 1 Mehdi Abaakouk
98 1 Mehdi Abaakouk
[client.sileht]
99 1 Mehdi Abaakouk
keyring = /etc/ceph/ceph.client.sileht.keyring
100 1 Mehdi Abaakouk
</pre>
101 1 Mehdi Abaakouk
102 36 Laurent GUERBY
Si c'est une migration commenter toutes les lignes dans /etc/ceph/rbdmap
103 36 Laurent GUERBY
104 31 Mehdi Abaakouk
On configure le mapping automatique du volume rbd :
105 1 Mehdi Abaakouk
106 1 Mehdi Abaakouk
<pre>
107 39 Mehdi Abaakouk
CEPH_ARGS="--id sileht" rbd-nbd map disks/sileht-vol
108 1 Mehdi Abaakouk
</pre>
109 24 Mehdi Abaakouk
110 1 Mehdi Abaakouk
le disque est prêt, on peut soit le formater directement :
111 1 Mehdi Abaakouk
112 1 Mehdi Abaakouk
<pre>
113 31 Mehdi Abaakouk
$ mkfs.ext4 /dev/nbd0
114 31 Mehdi Abaakouk
$ echo /dev/nbd0  /backup ext4   defaults,discard,noatime,_netdev       0       2" >> /etc/fstab
115 24 Mehdi Abaakouk
$ mount /backup
116 26 Mehdi Abaakouk
</pre>
117 1 Mehdi Abaakouk
118 11 Laurent GUERBY
soit le chiffrer:
119 11 Laurent GUERBY
120 1 Mehdi Abaakouk
<pre>
121 31 Mehdi Abaakouk
$ sudo cryptsetup luksFormat /dev/nbd0
122 24 Mehdi Abaakouk
123 1 Mehdi Abaakouk
WARNING!
124 1 Mehdi Abaakouk
========
125 31 Mehdi Abaakouk
This will overwrite data on /dev/nbd0 irrevocably.
126 24 Mehdi Abaakouk
127 1 Mehdi Abaakouk
Are you sure? (Type uppercase yes): YES
128 5 Laurent GUERBY
Enter passphrase:
129 1 Mehdi Abaakouk
Verify passphrase:
130 1 Mehdi Abaakouk
</pre>
131 1 Mehdi Abaakouk
132 1 Mehdi Abaakouk
<pre>
133 35 Laurent GUERBY
$ cryptsetup luksOpen /dev/nbd0 backup1 --allow-discards
134 24 Mehdi Abaakouk
$ mkfs.ext4 /dev/mapper/backup1
135 1 Mehdi Abaakouk
$ mount /dev/mapper/backup1 /backup
136 5 Laurent GUERBY
</pre>
137 1 Mehdi Abaakouk
138 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)
139 1 Mehdi Abaakouk
140 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) :
141 1 Mehdi Abaakouk
142 1 Mehdi Abaakouk
<pre>
143 1 Mehdi Abaakouk
$ dd if=/dev/urandom of=/etc/luks.key bs=1024 count=4
144 1 Mehdi Abaakouk
$ chmod 0400 /etc/luks.key
145 31 Mehdi Abaakouk
$ cryptsetup luksAddKey /dev/nbd0 /etc/luks.key
146 26 Mehdi Abaakouk
147 1 Mehdi Abaakouk
$ sudo blkid | grep -e rbd0 -e backup1
148 1 Mehdi Abaakouk
/dev/rbd0: UUID="1a268f70-6f6d-41f7-9216-43ba0bd0750b" TYPE="crypto_LUKS"
149 1 Mehdi Abaakouk
/dev/mapper/backup1: UUID="51db13d9-4ac4-4e47-bb7a-b111994cdefd" TYPE="ext4" 
150 1 Mehdi Abaakouk
151 1 Mehdi Abaakouk
152 24 Mehdi Abaakouk
$ echo "backup1 UUID=1a268f70-6f6d-41f7-9216-43ba0bd0750b /etc/luks.key luks,discard" >> /etc/crypttab 
153 2 Laurent GUERBY
$ echo "UUID=51db13d9-4ac4-4e47-bb7a-b111994cdefd  /backup ext4   defaults,discard,noatime,_netdev       0       2" >> /etc/fstab
154 2 Laurent GUERBY
</pre>
155 44 Mehdi Abaakouk
156 46 Fabien ADAM
h3. Erreurs connues
157 46 Fabien ADAM
158 46 Fabien ADAM
h4. Ancien verrou présents
159 46 Fabien ADAM
160 46 Fabien ADAM
Si lors du montage d'une partition, vous avez une erreur, celà peut être du à un verrouillage exclusif de volume nbd par un autre client.
161 46 Fabien ADAM
Les symptomes resemblent à ceci dans le @dmesg@ :
162 46 Fabien ADAM
<pre>
163 46 Fabien ADAM
[  571.968741] block nbd0: Other side returned error (13)
164 46 Fabien ADAM
[  571.970475] print_req_error: I/O error, dev nbd0, sector 52436212
165 46 Fabien ADAM
</pre>
166 46 Fabien ADAM
167 46 Fabien ADAM
Pour le vérifier, démonter le nbd avec @rbd-nbd unmap disks/vous-vol@, puis lister les locks :
168 46 Fabien ADAM
<pre>
169 46 Fabien ADAM
rbd-nbd lock list disks/vous-vol --id vous
170 46 Fabien ADAM
</pre>
171 46 Fabien ADAM
S'il existe toujours un verrou, demander à un administrateur ceph de le supprimer (sur l'IRC).
172 46 Fabien ADAM
173 44 Mehdi Abaakouk
h2. Supprimer un disque
174 44 Mehdi Abaakouk
175 44 Mehdi Abaakouk
<pre>
176 45 Mehdi Abaakouk
ceph auth del client.<username>
177 45 Mehdi Abaakouk
rbd -p <pool> rm <username>-vol
178 44 Mehdi Abaakouk
</pre>