Installation Hyperviseurs

master
Pierre Coimbra 2020-02-22 11:54:11 +01:00
parent 5d985073e3
commit 90ce3caebd
No known key found for this signature in database
GPG Key ID: F9C449C78F6FAEE6
6 changed files with 130 additions and 60 deletions

View File

@ -22,9 +22,9 @@ charge de former leur successeurs.
1. [Présentation du Projet](presentation_projet.md)
2. [Proxmox](proxmox)
1. [Introduction à la virtualisation](proxmox/introduction_a_la_virtualisation.md)
2. [Installation des hyperviseurs](#)
2. [Installation des hyperviseurs](proxmox/installation_hyperviseurs.md)
3. [Systèmes de fichiers et sauvegardes](#)
4. [Cluster](#)
4. [Cluster](proxmox/cluster)
5. [Haute Disponibilitée](#)
6. [Gestion de l'authentification](#)
3. [Réseau](reseau)

View File

@ -3,7 +3,7 @@
Les services seront réparti en plusieurs zones à la manière du découpage du réseau. Il est donc recommandé d'avoir compris l'infrastructure réseau avant de lire cette partie.
## Services Frontend
## Services Frontend
Les services Frontend sont directement accessible depuis internet derrière OPNSense.

View File

@ -1,4 +1,5 @@
# Gestion du flux post-firewall
# HAProxy
Cela consiste en la gestion des flux post firewall.
## Présentation des containers
@ -10,7 +11,7 @@ L'option Firewall PVE des interfaces est désactivée
## Objectifs et choix techniques
Trois objectifs pour la gestion du flux post-firewall
- Redondance du proxy/load balancer entre les deux nodes.
- Redondance du proxy/load balanceur entre les deux nodes.
- Séparation des flux (reverse public et reverse ctf).
- Load balancing entre deux reverse proxy Nginx public (un sur chaque nodes).
- Connexion SSL entre l'utilisateur et le proxy.
@ -116,8 +117,8 @@ frontend all-web-in
bind *:443 interface eth0
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
use_backend is-admin if { req_ssl_sni -i pve.sessionkrkn.fr }
use_backend is-admin if { req_ssl_sni -i rspamd.sessionkrkn.fr }
use_backend is-admin if { req_ssl_sni -i pve.krhacken.org }
use_backend is-admin if { req_ssl_sni -i rspamd.krhacken.org }
default_backend is-user
frontend user-web-in
@ -126,10 +127,10 @@ frontend user-web-in
bind abns@haproxy-user accept-proxy ssl accept-proxy no-sslv3 crt /etc/ssl/letsencrypt interface eth0
acl host_letsencrypt path_beg /.well-known/acme-challenge
acl authorized_host hdr_end(host) sessionkrkn.fr
acl mail hdr_end(host) mail.sessionkrkn.fr
acl mail hdr_end(host) mail.krhacken.org
acl rspamd path_beg /rspamd/
acl ctf_host hdr_end(host) ctf.sessionkrkn.fr
acl ctf_host hdr_end(host) web.sessionkrkn.fr
acl ctf_host hdr_end(host) ctf.krhacken.org
acl ctf_host hdr_end(host) web.krhacken.org
acl host_www hdr_beg(host) -i www.
reqirep ^Host:\ www.(.*)$ Host:\ \1 if host_www !host_letsencrypt !mail
@ -146,8 +147,8 @@ frontend admin-in
mode http
bind abns@haproxy-admin accept-proxy ssl no-sslv3 crt /etc/ssl/letsencrypt ca-file /home/hasync/pve.crt verify required interface eth0
acl is_auth ssl_c_s_dn(cn) -i -f /etc/haproxy/allowed_cn.txt
acl pve hdr_end(host) pve.sessionkrkn.fr
acl rspamd hdr_end(host) rspamd.sessionkrkn.fr
acl pve hdr_end(host) pve.krhacken.org
acl rspamd hdr_end(host) rspamd.krhacken.org
use_backend reverse-nginx if { ssl_fc_has_crt } is_auth rspamd
use_backend pve-interface if { ssl_fc_has_crt } is_auth pve
default_backend drop-http
@ -211,7 +212,7 @@ systemctl restart haproxy.service
```
### Obtention des premiers certificats et déploiement
```
certbot certonly --webroot -w /home/hasync/letsencrypt-requests/ -d sub.sessionkrkn.fr
certbot certonly --webroot -w /home/hasync/letsencrypt-requests/ -d sub.krhacken.org
```
Voici un script pour mettre en place les certificats Let's Encrypt au bon endroit qui s'occupe de propager les certificats sur l'autre container.
@ -227,11 +228,11 @@ ssh root@10.0.0.3 'systemctl restart haproxy.service'
service haproxy restart
```
## Mise en place de la haute disponibilité du load balancer
## Mise en place de la haute disponibilité du load balanceur
Voilà la configuration que nous allons mettre en place,
- Sur Alpha le container HAProxy aura comme IP 10.0.0.3
- Sur Beta le container HAProxy aura comme IP 10.0.0.4
- L'IP virtuelle 10.0.0.5 sera attribuée en fonction de la disponibilité des load balancer
- L'IP virtuelle 10.0.0.5 sera attribuée en fonction de la disponibilité des load balanceur
- La node Alpha sera le master et la node Beta sera le Slave
### Installation (commune au deux nodes)

View File

@ -3,8 +3,8 @@ Vous trouverez ici toute la documentation relative au déploiement de Proxmox.
# Table des matières
1. [Introduction à la virtualisation](introduction_a_la_virtualisation.md)
2. [Installation des hyperviseurs](#)
2. [Installation des hyperviseurs](installation_hyperviseurs.md)
3. [Systèmes de fichiers et sauvegardes](#)
4. [Cluster](#)
5. [Haute Disponibilitée](#)
4. [Cluster](cluster)
5. [Haute Disponibilité](#)
6. [Gestion de l'authentification](#)

View File

@ -1,50 +1,13 @@
# Mise en place du cluster entre nos deux nodes
Nous avons déjà mis en place :
- Proxmox VE 6 sur les deux nodes (Alpha et Beta)
- Un RAID1 ZFS sur chacune des nodes
Il faut avoir mis en place le réseau avant de mettre les deux nodes en cluster.
## Préparation des deux nodes
Avant de monter le cluster, il faut permettre aux deux nodes de communiquer localement. Pour cela, nous allons rajouter une interface qui utilisera une carte réseau à part.
### /etc/network/interfaces
L'interface eth0 est configurée pendant l'installation de Proxmox. Proxmox utilise la première carte réseau pour communiquer avec l'extérieur (eth0).
On va mettre en place une interface supplémentaire directement reliée à l'autre node sur la seconde carte réseau (eth3) pour ne pas altérer le débit fourni par la première.
*Pour avoir la liste des interfaces matérielles on utilise dmesg  | grep eth*
##### Depuis Alpha on ajoute
Les nodes seront accessible grâce au DNS interne via
```
auto eth3
iface eth3 inet static
address 10.30.0.1
netmask 255.255.255.0
```
##### Depuis Beta on ajoute
```
auto eth3
iface eth3 inet static
address 10.30.0.2
netmask 255.255.255.0
```
Nous avons désormais un multicast en place entre Alpha et Beta. Ainsi les hyperviseurs dialogueront entre eux localement sur une interface et seront reliés au net sur une autre interface. Matériellement il faut un câble croisé entre les deux ports correspondant à eth3.
### /etc/hosts
##### Depuis Alpha
```
127.0.0.1 localhost.localdomain localhost
192.168.2.30 alpha.krhacken.org alpha pvelocalhost
#Corosync
10.30.0.1 alpha-corosync.krhacken.org alpha-corosync
10.30.0.2 beta-corosync.krhacken.org beta-corosync
alpha.krhacken.org
beta.krhacken.org
```
##### Depuis Beta
```
127.0.0.1 localhost.localdomain localhost
192.168.2.31 beta.krhacken.org beta pvelocalhost
#Corosync
10.30.0.1 alpha-corosync.krhacken.org alpha-corosync
10.30.0.2 beta-corosync.krhacken.org beta-corosync
```
Le multicast entre Alpha et Beta est désormais accessible via des hostnames.
Un lien externalisé entre Alpha et Beta est déjà en place.
### Création du cluster
Nous allons maintenant créer le cluster Sigma depuis Alpha,

View File

@ -0,0 +1,106 @@
# Installation des hyperviseurs
Proxmox étant un hyperviseur de type 1 il possède son propre OS, c'est donc ça que nous devons installer sur les deux nodes du serveur.
Pour cette installation nous partons du principe que les deux nodes on accès à internet soit via une IP publique soit via une réseau privée. Cela ne change rien car nous modifierons la configuration réseau par la suite.
Pour l'installation il faut
- Une clé USB
- Deux disques dur de même taille pour chaque node
## Installation de Proxmox
Procurez-vous la dernière version de Proxmox, attention l'installation initiale à été faire sous Proxmox 6.
Voilà le [lien](https://www.proxmox.com/en/downloads/category/iso-images-pve) de l'installateur
A vous de rendre une clé bootable avec cet iso.
### Sur la première node (Alpha)
Mettez la clé USB sur un des ports USB de la première nodes (celle de droite), branchez un clavier et un écran puis démarrer l'installation.
Choissisez Install Proxmox VE et acceptez l'EULA.
#### Dans Proxmox Virtualization Environment
Target Harddisk -> Options
- Filesystem -> zfs (RAID1)
Disk Setup
- Harddisk 0 -> Un des 2 disques
- Harddisk 1 -> L'autre
#### Location and Time Zone selection
- Contry -> France
- Time zone -> Europe/Paris
- Keyboard Layout -> French
#### Administration Password and E-Mail Address
- Password -> Celui du gestionnaire keepass adminsys
- Confirm -> Pareil
- Email -> adminsys@krhacken.org
#### Management Network Configuration
- Hostname (FQDN) -> alpha.krhacken.org
Normalement un IP est automatiquement attribué. Si ce n'est pas le cas à vous de le faire.
#### Summary
Vérifier la cohérence et lancer l'installation.
### Sur la deuxième node (Beta)
Même procédure, il faut juste dans "Management Network Configuration" remplacer le Hostname par **beta.krhacken.org**
## Préparation des hyperviseurs
La procédure est la même sur les deux nodes. Elle peux être faites via SSH (recommandé) ou sur l'interface d'administration **https://IP:8006**
### Mise à jour
```
apt-get update
apt-get full-upgrade
```
### Templates LXC
Mise à jours de la liste
```
pveam update
```
Liste les templates disponible
```
pveam available
```
Téléchargement le la dernière debian system
```
pveam download local debian-10.0-standard_10.0-1_amd64.tar.gz
```
### Images VM
Nous aurons besoin de VM OPNSense (Pare-Feu) et de VM debian, il faut donc télécharger les derniers ISO disponible
#### OPNSense
VM nécessaire car c'est une distribution Free-BSD
Obtention du lien de Téléchargement sur le [site officiel](https://opnsense.org/download/)
- Architecture -> amd64
- Select the image type -> dvd
- Mirror Location -> A vous de voir
Le lien donné sera utilisé par la suite
```
wget -P /var/lib/vz/template/iso <lien_obtenu>
```
#### Debian
VM nécessaire pour faire tourner efficacement Docker
Obtention du lien de Téléchargement sur le [site officiel](https://www.debian.org/distrib/netinst)
- Architecture -> amd64
Le lien donné sera utilisé par la suite
```
wget -P /var/lib/vz/template/iso <lien_obtenu>
```