560cab301f85e5acdc08eb0a7466f722336c449f
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) |