Une infra en Data Center ?

Comme vous avez pu le voir sur Twitter, j'ai récemment mis en place une infrastructure complète en Data Center. De l'installation des serveurs à la configuration du réseau, venez découvrir comment j'ai mis en place ma nouvelle infra !

Le commencement...

Ça fait maintenant plus d'un an que j'ai mon propre HomeLab, ou Server Room à la maison. Tout a commencé par un simple serveur, un HP G5, et au fur et à mesure de mes #TeamRécup, j'ai pu avoir assez de serveurs pour monter un cluster Proxmox, avec un Mikrotik RB4011 qui me sert de routeur. Si vous voulez en savoir plus sur l'infra de la Server Room, je vous invite à lire cet article : https://blog.ataxya.net/bienvenue-chez-ataxyasr/

Mais même si la Server Room était une infra suffisante pour mon usage personnel, un de mes rêves était d'avoir ma propre infra en Data Center, où je pouvais gérer tout, les serveurs, le réseau, et surtout avoir une infrastructure stable pour pouvoir annoncer mes propres IPv4 et IPv6.

L'idée d'avoir un quart de baie dédié grandissant de plus en plus dans ma tête, j'ai eu l'opportunité de pouvoir en louer un là où je travaille, chez Aqua Ray !

Aqua Ray

Aqua Ray est une entreprise française créée en 2003 qui propose des services d’hébergement de serveurs informatiques virtuels ou physiques. Elle propose aussi des services de centres de données, de conception d’infrastructures ou encore d’infogérance.
Aqua Ray est propriétaire d'un centre de données Tier IV dans le Val-de-Marne et exploite son propre réseau de fibres optiques en Île-de-France.
Aqua Ray propose une large gamme de services clefs en main ou sur mesure. Sa spécialité est la conception et la maintenance d’infrastructures destinées à accueillir des services web critiques, en particulier celles reposant sur des systèmes Linux et des logiciels libres.

Aqua Ray se distingue par le fait qu’elle ne sous-traite aucune partie de sa chaîne de valeur, notamment en ce qui concerne son centre de données et son réseau. Dans cette optique, Aqua Ray a entièrement rénové son centre de données en 2020 afin de répondre à un cahier des charges encore plus ambitieux en termes de qualité et de sécurité. Ce nouveau centre de données est certifié Tier IV par l’Uptime Institute et est donc entièrement tolérant à la panne. Ces éléments font du Data Center Aurora IVY1 le centre de données ayant le design le plus fiable du Grand Paris.

La salle IT2

Chez Aqua Ray, je m'occupe principalement de la partie Data Center, qui comprend tirer les fibres de la baie réseau vers les baies qui nous sont dédiées ou les baies clientes, la configuration du réseau, de l'installation des machines, mais aussi du support, de l'accompagnement des clients, de la gestion des baies "colocations" et j'en passe !

Travailler en Data Center tous les jours m'a donné de plus en plus envie d'avoir ma propre infra. La construction du nouveau DC Aurora étant finie lors de mon arrivée, c'était l'occasion ou jamais d'avoir mon propre quart de baie ! Mais avant d'installer les machines, il faut préparer la baie !

Préparation de la baie

Pour chaque client, nous livrons deux prises électriques sur deux voies complètement séparées (qui passe par deux salles, et deux générateurs électriques différents). Nous livrons aussi un tiroir optique avec deux ports fibre LC qui sont reliés à deux autres routeurs avec deux points de sortie vers Internet (via TH2 et IX6).

Il me fallait donc tirer les fibres entre mon quart de baie et nos routeurs Edge situés dans la baie réseau. La norme Tier IV impose de passer par deux chemins de câbles différents pour assurer la redondance des liens.

Les deux chemins de câbles

Une fois les deux fibres tirées, il faut les connecter sur les routeurs Edge. Pour ma baie, on utilise donc des optiques 1G de chez FlexOptics. Ce sont des SFP qui sont recodable via un boitier permettant de choisir la compatibilité de l'optique (Cisco, Juniper...).

La codeuse FlexOptics

Du côté client, on connecte les deux arrivées fibre sur un tiroir optique. Le tiroir permet de lover les fibres proprement et permettre au client de se connecter simplement à l'arrivée.

Le tiroir optique

Enfin, le client peut changer le code de la baie s'il le souhaite, pour garantir que personne d'autre ne peut accéder à sa baie (Aqua Ray conserve une clé qui permet de bypass le code, en cas de demande d'intervention de la part du client).

La serrure avec le code

Une fois l'installation faite, on peut commencer à racker les machines !

Les serveurs

Au niveau machine, j'ai trois Dell R610 pour la partie "computing", avec  chacun 64Go de RAM, deux CPUs Xeon X5660 et 2*120 Go SSD en RAID 1. Un Dell R710 avec 32Go de RAM, deux CPUs E5530 et 2*450G SSD en RAID 1 pour le système, et 4*1.92To SSD en RAID 5, gère la partie stockage via un partage NFS.

Les serveurs !

Les 3 R610 font tourner Proxmox, un hyperviseur libre basé sur Debian, et le R710 fait tourner un simple Debian avec un partage NFS. Ce serveur sert au stockage des disques, des VMs et permet grâce au stockage centralisé d'utiliser la fonction HA de Proxmox. Si un des 3 serveurs crash pour une quelconque raison, les VMs sont automatiquement basculées sur les deux autres machines encore présentes.  

Le réseau

La partie réseau est entièrement gérée par un Mikrotik CCR1036, avec 4*1G SFP et 12*1G Ethernet.

Le Mikrotik dans son carton


En entrée, j'ai deux arrivées fibre, chacune reliée à deux routeurs différents. Chaque arrivée prends un chemin différent vers les routeurs de bordure d'Aqua Ray, ce qui permet une redondance complète au niveau réseau.  
Les arrivées sont reliées en Lan2Lan aux deux routeurs de bordures d'Aqua Ray, ce qui me permet, via une interconnexion, de monter les sessions BGP.

Le Lan2Lan permet d'avoir un "tunnel" L2 entre deux routeurs, même s'ils sont distants ou s'il y a des routeurs intermédiaires. Imaginez un "câble virtuel" qui relierait les deux routeurs directement entre eux.
Une fois les deux arrivées montées, il est temps d'annoncer mes IPs !
J'annonce via AS208069 un /24 IPv4 et un /42 IPv6. J'ai donc (pour l'instant) comme transitaire principal Aqua Ray, et quelques transits secondaires via des tunnels avec iFog (v4 et v6) et HE (v6 only).

Pour le réseau local, j'utilise le réseau 10.20.1.0/24 pour la partie cluster, et 10.30.1.0/24 pour l'IPMI. Ces deux réseaux n'ont pas d'accès à Internet.

J'ai aussi rajouté ma sonde ATLAS. C'est une petite sonde fournie par le RIPE sur demande, et qui permet aux opérateurs européens d'analyser l'accessibilité de leur réseau à travers l'Europe.

En échange d'héberger cette petite sonde, on obtient des crédits, qui me permettent à mon tour de lancer des analyses d'accessibilité de mon réseau.
Je peux donc ainsi tester l'accès de mes sites simplement !

Un peu de technique ?

Installation des machines

Une fois les machines rackées et branchées, il faut maintenant les installer !
Je commence donc par le R710, appelé Sto1, qui servira au stockage de mes VMS dans un premier temps, puis à terme de stockage centralisé pour tous mes fichiers persos. Il sera installé sur une Debian Buster simple, avec un service NFS par-dessus.
Sachez qu'avec ce serveur, j'ai eu quelques aventures. Pour commencer, les disques de 3To que j'avais récupérés pour la partie stockage n'étaient pas détectés par la carte RAID. En effet, la carte RAID ne supporte pas les disques de plus de 2To. J'ai donc essayé de remplacer la carte RAID par une autre qui traînait chez moi, mais sans succès (les câbles SAS étaient trop courts et le serveur ne fermait plus). Par chance, lors d'une #TeamRécup, j'ai pu récupérer 4 SSD de 1.92To, pile ce qu'il me fallait pour mon serveur ! J'ai donc remis l'ancienne carte RAID, installé les SSD, et tout fonctionnait ! Bien que je perde en espace de stockage, je trouve finalement mieux d'avoir du SSD pour la vitesse d'écriture.
Pour que mes SSD fraîchement installés puisse être utilisables, il faut avant tout faire quelques configurations.

gdisk (Création de la partition)
mkfs.ext4 -b 4096 /dev/sdb1 (Formatage de la partition en ext4)
mount /dev/sdb1 /data (Montage de la partition sur le système)

Pour la partie NFS, j'utilise un package qui s'appelle nfs-server. Il suffit de rajouter ensuite une ligne de configuration dans /etc/exports :

/data 10.20.1.0/24(rw,sync,no_root_squash)

Je partage donc le volume /data, et j'autorise seulement le réseau 10.20.1.0/24 (mon réseau cluster) à accéder à ce partage.

Côté Proxmox, il suffit d'ajouter le partage NFS via l'interface web.

Une fois le stockage monté, on peut enfin commencer l'installation des VMs !

Coté Proxmox

Les 3 R610 étant installés, il faut maintenant les mettre en cluster. Le but du cluster est qu'en cas de défaillance d'un des serveurs, les VMs qui sont dessus se répartissent entre les deux serveurs restants. Le seul SPOF de mon infrastructure est Sto1 qui n'est pas redondé (mais backupé !).

La mise en cluster est plutôt simple. Chaque hyperviseur (appelé pve1/2/3) possède, en plus de son IP principal, une deuxième IP dédiée au réseau cluster (qui n'accède pas à Internet). La mise en cluster utilise donc ces IPs pour se connecter entre eux, et à Sto1. La configuration (si on peut appeler ça comme ça) est plutôt simple. La seule condition est que le serveur qui rejoint le cluster n'ai pas de VM ou de LXC créés (c'est techniquement possible de faire rejoindre un serveur rempli de VMs à un cluster, mais bien plus compliqué). Du côté de pve1, on crée donc le cluster et on copie le "Join Information".

Sur les deux autres serveurs, il suffit de coller le "Join Information" et les infos se remplissent toutes seules. Il ne reste plus qu'à rentrer le mot de passe de pve1, et le cluster est créé ! Le partage NFS de Sto1 étant créé au niveau du cluster, les 3 serveurs ont désormais accès au leur stockage !
Il ne reste plus qu'à créer les VMs !

Gestion des DNS

Avoir ses propres IPs implique aussi de gérer ses propres serveurs DNS faisant autorité, et en particulier les Reverse DNS. J'ai fait le choix d'héberger seulement les Reverse DNS (PTR) et pas tous les DNS de mes domaines (qui sont bien au chaud chez CloudFlare, pour l'instant).

Un serveur DNS faisant autorité est celui qui stocke les données, récupérées par le protocole DNS. Les serveurs faisant autorité ne sont jamais interrogés par les machines finales, ce sont les serveurs de résolution qui font la passerelle entre les clients DNS et les serveurs autoritaires. Un exemple de serveur récursif est 1.1.1.1 ou 8.8.8.8

Les best-practices demandent d'héberger deux serveurs DNS faisant autorité (un master et un slave) sur deux réseaux (AS) différents. J'héberge donc le master sur mon infra, et le slave sur une petite VM chez Aqua Ray. J'utilise donc bind9, qui est plutôt simple à configurer.

Le fichier de configuration globale ressemble à ceci :

zone "254.X.X.in-addr.arpa" IN {
        type master;
        file "/etc/bind/254.X.X.in-addr.arpa";
        allow-query { any; };
        allow-transfer { 127.0.0.1; 195.X.X.X; };
        also-notify { 195.X.X.X; };
};

Sans rentrer dans les détails (plein de tutos le feront mieux que moi), je déclare la zone à annoncer, que le serveur est master, où les enregistrements DNS sont situés, et le reste permet d'envoyer les updates au slave.

Le fichier des enregistrements DNS pour les IPv4 ressemble à ceci :

$TTL 86400
254.X.X.in-addr.arpa.       IN      SOA     ns1.as208069.net.  contact.ataxya.net. (
                             42         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
254.X.X.in-addr.arpa.       IN      NS      ns1.as208069.net.
254.X.X.in-addr.arpa.       IN      NS      ns2.as208069.net.

66      IN      PTR     le-super-serveur-irc.as208069.net.
150     IN      PTR     mail.cecilemorange.fr


Je déclare donc le TTL (Time To Live) de mes enregistrements, le SOA ainsi que ses paramètres, les deux NS (Name Server) pour la zone, et enfin les PTR pour chaque IP (je n'ai pas mis toutes les IPs, seulement celles dont j'avais besoin).

Une fois le master et le slave mis en place, il faut déclarer au RIPE (le gestionnaire européen des IPs) la délégation des zones DNS de mes IPv4 et IPv6. Il faut donc créer un objet "domain" qui va permettre de déclarer la range des IPs et les serveurs DNS.

Migration de mes services

Une fois Proxmox prêt, il fallait migrer mes services ! J'avais installé temporairement un dédié pour stocker mes VMs le temps de finir mon quart de baie.
La migration étant de Proxmox vers Proxmox, les VMs sont plutôt simples à transférer. J'ai donc pris une soirée pour couper tous mes services (web, mail), copier les VMs vers le NAS, copier les fichiers de configuration vers pve1, puis redémarrer les services.

**Sur l'ancien pve**
> scp -p vzdump-qemu-102-2021_01_27-12_49_03.vma.zst cecile@185.X.X.254:/tmp (pour les disques des VMs)
> scp -p /etc/pve/qemu-server/*.conf cecile@185.X.X.251:/tmp (pour les config des VMs)
**Sur le NAS**
> cd /tmp/
> mv vzdump-qemu-102-2021_01_27-12_49_03.vma.zst /var/lib/vz/dump
**Sur pve1**
> cd /tmp/
> mv *.conf /etc/pve/qemu-server/

Avant de restorer la VM avec la commande ci-dessus, il faut modifier les fichiers de configurations des VMs pour correspondre avec le nouveau stockage :

> root@pve1:/etc/pve/qemu-server# emacs 102.conf 
agent: 1
boot: order=scsi0;ide2;net0
cores: 1
ide2: NFS:iso/firmware-10.7.0-amd64-netinst.iso,media=cdrom
memory: 2048
name: mail
net0: virtio=12:8E:53:0D:49:82,bridge=vmbr0
numa: 0
ostype: l26
scsi0: NFS:102/vm-102-disk-0.qcow2,size=20G (ici j'ai remplacé local par NFS)
scsihw: virtio-scsi-pci
smbios1: uuid=105fb050-e716-4d9e-bc4b-c3f009061df3
sockets: 2
vmgenid: fec01bac-d174-4f0f-9696-20d73538e93d

Pour lancer la restauration de la VM, il suffit de faire la commande suivante :

> qm restore vzdump-qemu-102-2021_01_27-12_49_03.vma.zst 102

La VM va se restaurer, et il n'y a plus qu'à la lancer !
Il faut ensuite changer les IPs des différentes machines, afin de pouvoir utiliser mes propres adresses IPv4 et IPv6 !

Infrastructure finale

Et voilà, après des mois à réfléchir et à monter ce projet, mon infra est prête ! Bien que le Mikrotik me joue parfois des tours (je me souviendrai toujours du lendemain de soirée où j'ai du aller en datacenter parce que Monsieur avait décidé d'oublier son IP d'interco), l'infra tourne désormais toute seule comme une grande !

La baie une fois fini !

Comme vous pouvez le voir sur la photo, il me manque une alim sur le R710, que je devrais bientôt récupérer ! J'ai aussi quelques barrettes de RAM qui ont claqué sur PVE2, il faudra donc que je les remplace à l'occasion.
Au niveau du câblage, je suis restée plutôt simple. Le premier port de chaque couleur correspond au serveur du haut, le deuxième celui en dessous… C'est donc assez facile de s'y retrouver !
Les câbles bleus sont pour la partie réseau public, les jaunes pour le réseau cluster, et les blancs pour les IPMIs.
Pour la partie électrique, j'ai fait le choix d'acheter des cables custom chez FS, et chaque couleur correspond à une voie électrique !

Côté Proxmox, on a donc ceci :

Les ressources de mon cluster

Pour la partie électrique, voici la consommation de ma baie :

Consommation électrique

La différence entre les deux voies est due au Mikrotik qui n'est branché que sur une seule voie électrique, tout comme le R710 qui n'a qu'une seule alimentation (techniquement, j'ai deux alimentations, mais comme le power n'est pas le même sur les deux, je ne peux pas les mettre en même temps. La deuxième alimentation me sert donc de spare).

Il me reste quelques projets pour que mon quart de baie soit parfait, notamment mettre en place un réseau OOB (Out Of Band) qui me permettra d'accéder au Mikrotik même si le réseau principal est planté. Il faut aussi que je trouve une solution pour brancher le Mikrotik sur les deux voies électriques (sans passer par un STS qui me prendrait 1U). Un autre projet qui viendra plus tard (quand j'aurais plus d'€€€) est de poser un routeur à TH2 pour améliorer mes interconnexions et la qualité de mon réseau.

Vous devez sûrement vous poser une question depuis le début : "Mais, à quoi ça sert tout ça ?"

Principalement, pour héberger mes services. Mes mails, mes différents sites web. Pouvoir gérer mon propre réseau, de A à Z, et surtout être complètement indépendante sur mes besoins numériques. J'ai besoin de stockage ? J'installe un Nextcloud. De remplacer Office 365 ? J'installe Collabora ou OnlyOffice. Certes, c'est peut-être moins fiable que n'importe quel GAFAM (et encore...), mais me dire que ce que je fais est sur MES disques durs (même cet article de blog :D), c'est assez satisfaisant !
Mais j'avais aussi envie de partager ça avec ma communauté. Dans les prochains mois, je monterai donc une instance Mastodon, Peertube, et bien d'autres !
Et si vous voulez une petite VM, il n'y a aucun soucis ! Mais je peux vous proposer encore mieux...

Toi aussi tu as envie de te lancer ?

Convaincu que mes expériences personnelles avec la Server Room et l'installation de mon quart de baie étaient extrêmement formateur, Aqua Ray m'a proposé de lancer un partenariat avec eux destiné à tous ceux qui me suivent !

Le concept est simple : Vous avez entre 18 et 30 ans, prenez votre âge et ce sera le prix de votre colocation 1U ! Et si vous avez plus de 30 ans, nous vous offrons 10% de remise sur l'offre 1U ! (offre limitée à 1U par personne)

La colocation 1U comprend une consommation de 100W, 1 port Ethernet, une IPv4 et un /112 IPv6.

Et si vous voyez plus grand, nous faisons aussi des réductions sur les quarts de baie ! Les frais de mise en service sont offerts, ainsi que 10% de réduction à vie ! Vous pourrez comme moi, monter votre propre infrastructure et apprendre encore davantage !

Pour plus d'informations, vous pouvez me contacter directement via Twitter, ou le formulaire de contact sur le site d'Aqua Ray.

Remerciements

Je tenais à remercier Aqua Ray de m'avoir supportée dans ce projet fou, et en particulier à toute l'équipe technique !
Merci à Térence et Tchadel pour la relecture !

Merci à tous ceux qui m'ont donné du matériel, c'est grâce à vous si j'ai pu construire ce quart de baie !

Et surtout, merci à vous de me soutenir tous les jours dans mes projets encore plus fous ! <3

Mon nouveau bébé et moi :D

À bientôt pour de nouvelles aventures !

Afficher les commentaires