Services/Proxmox.md
... ...
@@ -7,6 +7,8 @@ Pour le moment toute la stack d'hypervision est gérée par [Proxmox](https://ww
7 7
8 8
Le ResEl possède actuellement 3 groupes d'hyperviseurs, 1 au I11 à Brest qui est l'hyperviseur principal, 1 au I1 à Brest qui est de secours et 1 à Rennes pour les services rennais.
9 9
10
+**Attention : Même si toutes les informations ici ne sont pas forcément importantes pour la tâche que vous allez exécuter, il est important de tout lire et d'aller voir vers les liens donnés avant d'entreprendre la moindre action sur les hyperviseurs. Trop souvent cette année (2016) nous nous sommes retrouvés avec des problèmes car la compréhension des hyperviseurs était limitée.**
11
+
10 12
## Architecture à Brest I11
11 13
12 14
À Brest, le groupe principal est composé de 3 hyperviseurs (Camille, Nikita et Proxima) qui partagent tous un même espace de stockage sur le SAN (Sanizator). Cette architecture permet un load balancing de la charge et un fail over en cas de perte d'un noeud.
... ...
@@ -17,42 +19,101 @@ https://sandstorm.resel.fr/shared/W65mdEUXHx9quIuNaWQckm1eCOPNcrqBKOmjT5nZfT9
17 19
18 20
Les hyperviseurs sont connectés aux switch sur le VLAN 5 qui sert uniquement pour le stockage à l'aide de 2 liens LACP Gi.
19 21
Le Port Channel configuré par interface sur Laetitia:
20
-5 : LACP SAN - Laetitia (eth2 : 35, eth3 : 34)
21
-10 : LACP SAN - Camille (eth2 : 32, eth3 : 33)
22
-11 : LACP SAN - Nikita (eth2 : 28, eth3 : 29)
23
-20 : LACP Core - Camillle (eth0 : 30, eth1 : 31)
24
-21 : LACP Core - Nikita (eth0 : 26, eth1 : 27)
22
+* PC 5 : LACP SAN - Laetitia (eth2 : Gi0/35, eth3 : Gi0/34)
23
+* PC 10 : LACP SAN - Camille (eth2 : Gi0/32, eth3 : Gi0/33)
24
+* PC 11 : LACP SAN - Nikita (eth2 : Gi0/28, eth3 : Gi0/29)
25
+* PC 20 : LACP Core - Camillle (eth0 : Gi0/30, eth1 : Gi0/31)
26
+* PC 21 : LACP Core - Nikita (eth0 : Gi0/26, eth1 : Gi0/27)
25 27
26
-Attention, cette documentation peut évoluer, n'hésitez pas à aller [voir la configuration de Laetitia](https://git.resel.fr/confs/cisco) en cas de doute.
28
+Attention, cette documentation peut évoluer (car les confs des sw c'est facile à changer), n'hésitez pas à aller [voir la configuration de Laetitia](https://git.resel.fr/confs/cisco) en cas de doute.
27 29
28 30
Le LACP est un protocole permettant d'agréger des liens sur un même switch afin d'avoir une résistance en cas de chute de lien, mais également plus de débit. [Documentation Cisco sur le LACP](https://www.cisco.com/c/en/us/td/docs/ios/12_2sb/feature/guide/gigeth.html).
29 31
30 32
[Alternative au LACP iSCSI Multipath](https://pve.proxmox.com/wiki/ISCSI_Multipath)
31 33
32
-###
34
+### Configuration Réseau
33 35
34
-## Informations générales sur Proxmox
36
+TODO: https://redmine.resel.fr/projects/proxmox/wiki/MiseEnPlace#R%C3%A9seau
35 37
36
-Dépendant de l'hyperviseur, vous pouvez vous connecter sur les 3 interfaces de Proxmox :
37
-* https://proxmox.resel.fr/
38
-* https://xxx.resel.fr/
39
-* https://proxmox.rennes.resel.fr/
38
+### Reverse proxy
40 39
41
-### Intégration du LDAP
40
+Pour profiter du HA du pool, les trois hyperviseurs peuvent proposer l'interface graphique de proxmox. Ceux-ci sont situés derrière le reverse proxy situs en round robin. L'option `ip_hash` est très importante pour éviter de se connecter sur les 3 serveurs à tour de rôle, cela pose des problèmes lors de l'ouverture de la console qui va s'ouvrir sur un autre hyperviseur.
42 41
43
-L'intégration du LDAP à proxmox est aujourd'hui minimale, il faut quand même ajouter les personnes au groupe *administrators* pour qu'ils puissent faire des choses utiles sur Proxmox. Celui-ci ne fait que la vérification du mot de passe. [C'est un bug connu](https://bugzilla.proxmox.com/show_bug.cgi?id=544).
42
+Voici la configuration (au 2017-01-29):
43
+```
44
+upstream proxmox {
45
+ ip_hash;
46
+ server 172.22.2.42:8006; # Nikita
47
+ server 172.22.2.58:8006; # Camille
48
+ server 172.22.2.63:8006; # Proxima
49
+}
44 50
45
-* [Gestion des administrateurs](http://pve.proxmox.com/wiki/User_Management)
46
-* [2FA (non mit en place au ResEl)](http://pve.proxmox.com/wiki/Two-Factor_Authentication)
51
+server {
52
+ listen 80;
53
+ server_name proxmox.resel.fr;
54
+ return 301 https://$server_name$request_uri;
55
+}
47 56
48
-Configuration du LDAP :
49
-| Realm | Base DN | UID Attribute | Default | Server | SSL | Comment (nom au login) |
50
-| admin.resel.fr | ou=admins,dc=resel,dc=enst-bretagne,dc=fr | uid | oui | ldap.adm.resel.fr | non (TODO!) | LDAP Admin |
51
-| resel.fr | ou=people,dc=maisel,dc=enst-bretagne,dc=fr | uid | non | ldap.adm.resel.fr | non (TODO!) | LDAP Utilisateur |
57
+server {
58
+ listen 443 ssl;
59
+ server_name proxmox.resel.fr;
60
+
61
+ access_log /var/log/nginx/proxmox.resel.fr/access.log;
62
+ error_log /var/log/nginx/proxmox.resel.fr/errors.log;
63
+
64
+ proxy_redirect off;
65
+ location / {
66
+ proxy_http_version 1.1;
67
+ proxy_set_header Upgrade $http_upgrade;
68
+ proxy_set_header Connection "upgrade";
69
+ proxy_pass https://proxmox;
70
+ }
71
+}
72
+```
73
+
74
+### Stockage
75
+
76
+Le stockage se fait sur le SAN Sanizator qui exporte des volumes en iSCSI (tcp).
77
+
78
+#### Création des volumes
79
+TODO
80
+
81
+#### Configuration des volumes dans proxmox
82
+
83
+La configuration dans proxmox 4 se fait depuis l'interface graphiques. On commence par ajouter les volumes iSCSI, l'ID sera le nom attribué, le portal l'adresse du SAN, la target la cible contenant les volumes voulus. Pas de restriction sur les noeuds.
52 84
53
-### Informations sur le CLVM
85
+| ID | Portal | Target | Direct* |
86
+| ------- | -------| ------ | -------- |
87
+| SAN-VMs | 172.22.5.5 | iqn.2015-02.fr.resel:promox | Non |
88
+| VM-SAN-Clubs | 172.22.5.5 | iqn.2015-02.fr.resel:clubs | Oui |
89
+| VM-SAN-Miroir | 172.22.5.5 | iqn.2015-02.fr.resel:miroir | Oui |
90
+| VM-SAN-Reloaded | 172.22.5.5 | iqn.2017-01.fr.resel:proxmox-reloaded | Non |
54 91
55
-Des liens en vrac en attendant :
92
+**Direct* indique que les volumes pourront être utilisés directement par les VMs. Pour le moment Proxmox ne protège pas ces accès direct contre les accès multiples ni dans le reste de l'interface Proxmox, il font donc savoir qu'ils ne doivent pas être utilisés. Ils sont préfixés par VM pour indiquer que leur usage est réservé aux VMs.**
93
+
94
+Ensuite, dans le LUN (volume) 1 de la target `promox`, crée les VG qui accueillent les VMs.
95
+Add>LVM :
96
+
97
+| ID | Base Storage | Base Volume | Volume Group | Shared |
98
+| --- | ------------ | ----------- | ------------ | ------ |
99
+| Disks-VMs | SAN-VMs | LUN00 | vms | Oui |
100
+| Disks-ViM-Reloaded | VM-SAN-Reloaded | LUN01 | vg-reloaded | Oui |
101
+
102
+On peut vérifier la prise en compte avec la commande vgs :
103
+```
104
+lcarr@camille:~$ sudo vgs
105
+ VG #PV #LV #SN Attr VSize VFree
106
+ clubs 1 1 0 wz--n- 1024.00g 0
107
+ miroir 1 4 0 wz--n- 900.00g 30.00g
108
+ pve 1 3 0 wz--n- 136.00g 15.84g
109
+ vg-reloaded 1 29 0 wz--n- 1024.00g 595.50g
110
+ vms 1 44 0 wz--n- 1024.00g 500.50g
111
+```
112
+
113
+
114
+#### Informations sur le CLVM
115
+
116
+Des liens en vrac en attendant plus de doc :
56 117
* https://github.com/proxmox/lvm/blob/master/patchdir/fix-clvm-init.patch
57 118
* http://forum.proxmox.com/threads/5207-shared-storage-LVM2-or-CLVM
58 119
* http://forum.proxmox.com/threads/14703-When-is-CLVM-needed
... ...
@@ -61,6 +122,147 @@ Des liens en vrac en attendant :
61 122
* http://forum.proxmox.com/threads/12798-Proxmox-VE-2-2-and-clvm
62 123
* http://pve.proxmox.com/wiki/Proxmox_ISCSI_installation + pas de clvm mais resynchro des metas
63 124
125
+
126
+### Mise en place de la HA
127
+
128
+#### Explications
129
+La haute disponibilité est la technologie permettant d'avoir un service constant malgré la chute de noeuds. Elle est enforcée ici par le fait qu'il y ait 3 noeuds en concurrence.
130
+
131
+**Quorum** : Un quorum est le principe qui permet de vérifier l'état d'un service distribué à l'aide d'un vote. Chacun des noeuds du service possède un (ou plusieurs) votes et si le quorum est atteint (généralement la majorité) le noeud considère qu'il est dans une partition fonctionnelle. Si il le quorum n'est pas atteint, le noeud considère qu'il est isolé ou dysfonctionnel.
132
+
133
+**Fencing** : Le fencing est le processus permettant d'isoler du système un noeud qui est dysfonctionnel.
134
+
135
+#### Mise en cluster
136
+
137
+Nous créons un cluster nommé `lyoko-cluster` :
138
+```bash
139
+root@camille:~# pvecm create lyoko-cluster
140
+Restarting pve cluster filesystem: pve-cluster[dcdb] notice: wrote new cluster config '/etc/cluster/cluster.conf'
141
+.
142
+Starting cluster:
143
+ Checking if cluster has been disabled at boot... [ OK ]
144
+ Checking Network Manager... [ OK ]
145
+ Global setup... [ OK ]
146
+ Loading kernel modules... [ OK ]
147
+ Mounting configfs... [ OK ]
148
+ Starting cman... [ OK ]
149
+ Waiting for quorum... [ OK ]
150
+ Starting fenced... [ OK ]
151
+ Starting dlm_controld... [ OK ]
152
+ Tuning DLM kernel config... [ OK ]
153
+ Unfencing self... [ OK ]
154
+```
155
+
156
+Ajout des noeuds au quorum :
157
+```bash
158
+root@nikita:~# pvecm add 172.22.2.58 # Nikita
159
+The authenticity of host '172.22.2.58 (172.22.2.58)' can't be established.
160
+ECDSA key fingerprint is 0d:f2:dd:e1:bb:ae:e4:71:86:ad:ed:5e:02:78:cf:7c.
161
+Are you sure you want to continue connecting (yes/no)? yes
162
+root@172.22.2.58's password:
163
+copy corosync auth key
164
+stopping pve-cluster service
165
+Stopping pve cluster filesystem: pve-cluster.
166
+backup old database
167
+Starting pve cluster filesystem : pve-cluster.
168
+Starting cluster:
169
+ Checking if cluster has been disabled at boot... [ OK ]
170
+ Checking Network Manager... [ OK ]
171
+ Global setup... [ OK ]
172
+ Loading kernel modules... [ OK ]
173
+ Mounting configfs... [ OK ]
174
+ Starting cman... [ OK ]
175
+ Waiting for quorum... [ OK ]
176
+ Starting fenced... [ OK ]
177
+ Starting dlm_controld... [ OK ]
178
+ Tuning DLM kernel config... [ OK ]
179
+ Unfencing self... [ OK ]
180
+waiting for quorum...OK
181
+generating node certificates
182
+merge known_hosts file
183
+restart services
184
+Restarting PVE Daemon: pvedaemon.
185
+Restarting PVE API Proxy Server: pveproxy.
186
+successfully added node 'nikita' to cluster.
187
+
188
+
189
+root@nikita:~# pvecm add 172.22.2.63 # Proxima
190
+```
191
+
192
+Pour voir l'état du cluster :
193
+```bash
194
+ root@camille ~ # pvecm status
195
+Quorum information
196
+------------------
197
+Date: Sun Jan 29 01:36:56 2017
198
+Quorum provider: corosync_votequorum
199
+Nodes: 3
200
+Node ID: 0x00000002
201
+Ring ID: 1/25104
202
+Quorate: Yes
203
+
204
+Votequorum information
205
+----------------------
206
+Expected votes: 3
207
+Highest expected: 3
208
+Total votes: 3
209
+Quorum: 2
210
+Flags: Quorate
211
+
212
+Membership information
213
+----------------------
214
+ Nodeid Votes Name
215
+0x00000001 1 172.22.2.42
216
+0x00000002 1 172.22.2.58 (local)
217
+0x00000004 1 172.22.2.63
218
+zsh: exit 1 pvecm status
219
+```
220
+
221
+La liste des noeuds :
222
+```bash
223
+root@camille ~ # pvecm nodes
224
+
225
+Membership information
226
+----------------------
227
+ Nodeid Votes Name
228
+ 1 1 nikita
229
+ 2 1 camille (local)
230
+ 4 1 proxima
231
+```
232
+
233
+Liens (concernant la mise en quorum):
234
+* http://blogs.technet.com/b/windowsinternals/archive/2009/03/30/le-quorum-et-le-cluster.aspx
235
+* http://clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Clusters_from_Scratch/_perform_a_failover.html#_quorum_and_two_node_clusters
236
+* http://techthoughts.typepad.com/managing_computers/2007/10/split-brain-quo.html
237
+* http://linux-ha.org/wiki/Cluster_Concepts
238
+* http://blogs.msdn.com/b/clustering/archive/2011/05/27/10169261.aspx
239
+* https://pve.proxmox.com/wiki/Proxmox_VE_2.0_Cluster#Two_nodes_cluster_and_quorum_issues
240
+* https://pve.proxmox.com/wiki/Two-Node_High_Availability_Cluster
241
+* http://serverfault.com/questions/371067/how-to-setup-stonith-in-a-2-node-active-passive-linux-ha-pacemaker-cluster
242
+
243
+
244
+## Informations générales sur Proxmox
245
+
246
+Dépendant de l'hyperviseur, vous pouvez vous connecter sur les 3 interfaces web de Proxmox :
247
+* [Pool principal au I11](https://proxmox.resel.fr/)
248
+* [Pool secondaire au I1](https://xxx.resel.fr/)
249
+* [Pool de Rennes](https://proxmox.rennes.resel.fr/)
250
+
251
+
252
+### Intégration du LDAP
253
+
254
+L'intégration du LDAP à proxmox est aujourd'hui minimale, il faut quand même ajouter les personnes au groupe *administrators* pour qu'ils puissent faire des choses utiles sur Proxmox. Celui-ci ne fait que la vérification du mot de passe. [C'est un bug connu](https://bugzilla.proxmox.com/show_bug.cgi?id=544).
255
+
256
+* [Gestion des administrateurs](http://pve.proxmox.com/wiki/User_Management)
257
+* [2FA (non mit en place au ResEl)](http://pve.proxmox.com/wiki/Two-Factor_Authentication)
258
+
259
+Configuration du LDAP :
260
+
261
+| Realm | Base DN | UID Attribute | Default | Server | SSL | Comment (nom au login) |
262
+| -------------- | ------- | ------------- | ------- | ------ | --- | ---------------------- |
263
+| admin.resel.fr | ou=admins,dc=resel,dc=enst-bretagne,dc=fr | uid | oui | ldap.adm.resel.fr | non (TODO!) | LDAP Admin |
264
+| resel.fr | ou=people,dc=maisel,dc=enst-bretagne,dc=fr | uid | non | ldap.adm.resel.fr | non (TODO!) | LDAP Utilisateur |
265
+
64 266
Voir : http://wiki.ucc.asn.au/Proxmox#Info_for_Administrators
65 267
66 268
### Outils de ligne de commande utiles :
... ...
@@ -70,6 +272,29 @@ Voir : http://wiki.ucc.asn.au/Proxmox#Info_for_Administrators
70 272
* `clustat`
71 273
* `clusvcadm`
72 274
275
+
276
+### Configuration diverses
277
+
278
+La plus part des services du ResEl (backuppc, ntp, syslog, icinga, dns se configurent comme sur toutes les autres machines au ResEl. Je vous recommande d'aller voir pour ceci [le guide d'installation d'un serveur](https://wiki.resel.fr/Guides/Installation%20machine%20physique)
279
+
280
+#### Configuration DNS
281
+Pour éviter que le cluster tombe en cas de problème DNS il est recommandé d'ajouter les entrées statiques du cluster sur les noeuds.
282
+Modfifier le fichier `/etc/host/` et mettre les entrées suivantes :
283
+```
284
+# Cluster
285
+172.22.5.10 camille camille.sto
286
+172.22.5.11 nikita nikita.sto
287
+172.22.5.13 proxima proxima.sto
288
+
289
+172.22.5.5 sanizator sanizator.sto
290
+```
291
+
292
+
293
+#### Configuration SSH
294
+
295
+Il faut créer des comptes utilisateurs dédiés pour les administrateurs de l'hyperviseur (pas besoin de compte pour gérer simplement proxmox). Les droits root sont donnés par sudo (à installer).
296
+Attention cependant, les noeuds échangent entre eux en SSH (à priori avec le compte root), il faut faire attention à ne pas les bloquer en autorisant qu'un certain groupe à se connecter ou en refusant complètement une connexion root. L'option sshd `PermitRootLogin without-password` devrait fonctionner.
297
+
73 298
## Ressources utiles
74 299
* [Wikipedia sur l'hypervision](https://en.wikipedia.org/wiki/Hypervisor)
75 300
* [Site officiel de Proxmox](https://www.proxmox.com)