Configurer un serveur SFTP en failover sur Windows Serveur Core 2022
Introduction
Nous allons utiliser Bitvise Server.
C'est un excellent serveur SFTP, hautement configurable, compatible avec les versions Core de Windows Serveur... et surtout abordable pour les entreprises ! (100€ / serveur / an)
Architecture
Nous disposons de :
- 2 serveurs Windows (SFTP-1 et SFTP-2) Windows Serveur 2022 Core, qui vont être montés en haute disponibilité avec une VIP (adresse IP virtuelle : 10.10.10.251). Sur chacun de ces serveurs, Bitvise serveur sera installé et dûment configuré.
- 1 serveur Windows Serveur 2022 Desktop jouant le rôle d'Active Directory (DC). Toutes les machines du schéma, à l'exception du pare-feu, ont été préalablement ajoutées au domaine)
- 1 ordinateur client (CLIENT) qui se connecte au serveur SFTP via la VIP.
- 1 pare-feu pour refermer le réseau (juste pour l'exemple)
Ce que nous allons faire
- mettre en place un cluster de basculement entre SFTP-1 et SFTP-2
- ajouter un rôle pour un service générique (Bitvise) sur le cluster (Nous gérerons le cluster depuis DC pour plus de confort (graphique) et rapidité... mais on peut également gérer le cluster depuis SFTP-1 ou SFTP-2 via powershell pour les plus téméraires)
- Attribuer une VIP (10.10.10.251) à ce rôle de cluster Bitvise... et voir comment en attribuer une seconde au cas où...
- Configurer Bitvise serveur sur SFTP-1 en tant que nœud maître (Master)
- Configurer Bitvise serveur sur SFTP-2 en tant que nœud suiveur (follower)
- Tester la haute disponibilité depuis CLIENT avec le logiciel Bitvise client (la coupure de service doit être la plus courte possible si l'un des serveurs tombe, le logiciel client bitvise ou sshfs doit se reconnecter de lui-même)
Ce que nous n'allons pas faire (!)
- Configurer les hostnames des machines ainsi que leur configuration IP (telle que sur le schéma). ça doit être fait.
- La jonction des différentes machines au domaine Active Directory dont DC est le contrôleur. Là aussi, on considère que c'est déjà fait.
Pour l'exemple, j'ai créé un domaine avec une nouvelle forêt : 'MONDOMAINE.LAN' - Nous occuper de la solution de stockage redondant pour les données du SFTP. Il existe un grand nombre de solutions (S2D, iSCSI ou simplement des synchro à intervalles réguliers entre les supports de stockage dévolus aux données des utilisateurs du SFTP sur chaque serveur - FreeFileSync, robocopy etc...)
On va se contenter ici simplement de la mise en haute disponibilité et de l'échange automatique des configurations entre les 2 serveurs Bitvise. Vous allez voir, c'est extrêmement simple avec Bitvise.
(On se logue en tant qu'Administrateur du domaine direct)
1) Télécharger Bitvise serveur sur SFTP-1 et SFTP-2
Invoke-WebRequest -Uri https://dl.bitvise.com/BvSshServer-Inst.exe -OutFile C:\BvSshServer-Inst.exe
2) Installer Bitvise serveur sur SFTP-1 et SFTP-2
Set-Location C:\
.\BvSshServer-Inst.exe
- On accepte la licence (on touche pas au reste)
- On choisit l'édition Standard (la vraie).. pas la gratuite. Vous aurez 30 jours pour vous acquitter de la licence.
- L'installation se termine, on clique sur OK
- Bitvise Server se lance juste après l'installation.
- On ne configure rien pour le moment. On quitte le logiciel en fermant les 2 fenêtres (et on choisit 'Close without change')
On redémarre les serveurs :
Restart-Computer
On se logue en tant qu'Administrateur du domaine et on installe la fonctionnalité de clustering de basculement :
Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools
3) Créer le cluster
Sur DC, on installe d'abord la fonctionnalité de clustering de basculement.
(Je ne me souviens plus si c'est indispensable de l'installer aussi sur la machine qui va gérer le cluster... à tester...)
- On va ensuite dans 'Outils', et on ouvre le gestionnaire de cluster de basculement
- Dans le menu latéral de droite, on clique sur 'Créer le cluster'
- On ajoute nos 2 serveurs SFTP-1 et SFTP-2
- Bon, là, vient le moment que tout le monde déteste, les fichus tests de microsoft qui foirent systématiquement à moins de disposer d'un matériel hors de prix. C'est du testing ici, donc on se fiche de leur support. Si vous avez correctement fait vos confs IP, il n'y aura aucun problème.
- On créée le cluster (cSFTP) et on lui attribue une IP sur notre réseau (10.10.10.210/24 par exemple). Oui notre cluster a sa propre IP.
- On valide, la création commence
Notre cluster cSFTP est à présent créé.
Nous allons rajouter un rôle sur ce cluster.
Dans le menu latéral de gauche, déroulez votre cluster et cliquez sur rôles.
Configurer le rôle
- Dans le menu latéral de droite, cliquez sur 'Configurer un rôle...'
- Nommez votre rôle (R-BITVISE par exemple) et attribuez lui une adresse IP (10.10.10.251 par exemple)
C'est cette IP qui servira de VIP. C'est cette IP que nos logiciels clients SFTP contacteront. - Ici, il n'y a rien à ajouter pour l'instant.
- Idem pour les clefs de registre, laissez vide.
- Votre rôle est créé !
Problème de VIP et solution de contournement
Normalement, nous avons presque terminé pour ce qui est de la haute dispo.
L'adresse IP 10.10.10.251 configurée pour notre rôle est une VIP.. Mais il arrive parfois que la connexion depuis le CLIENT à cette VIP ne fonctionne pas lors des premières tentatives de connexions... Je ne sais pas pourquoi ! Encore un sempiternel mystère windows... la VIP est indiquée en ligne, mais ne l'est pas forcément vraiment.
Si jamais, à l'issue de toute la configuration, vous rencontrez ce problème, il y a un truc :
nous pouvons 'forcer' un peu en ajoutant une VIP supplémentaire (10.10.10.250).. Et allez savoir pourquoi, dès que vous mettrez votre seconde VIP en ligne, la première se mettra à répondre... !! Vous n'aurez plus qu'à supprimer la seconde que vous venez de créer...
Vraiment étrange ce système parfois... ça m'est arrivé plusieurs fois, alors j'en parle.
Pour ajouter une VIP supplémentaire (au cas où vous saurez faire ! Mais ne le faîtes qu'à la toute fin de la configuration !) :
- Vous avez sélectionné votre rôle, à présent cliquez sur l'onglet 'Ressources' en bas (à côté de l'onglet 'Résumé)
- Vous voyez votre VIP actuelle 10.10.10.251... et elle est bien en ligne..
- Dans le menu latéral de gauche, cliquez sur 'Ajouter une ressource', 'Plus de ressources', 'Adresse IP'
- Votre nouvelle IP apparaît alors en bas (parfois il faut descendre). Double-cliquez pour configurer votre VIP : (10.10.10.250)
- Appliquez, OK.
- Cliquez droit sur la VIP, Mettre en ligne.
Que vous ayez dû rajouter une VIP supplémentaire ou non, il faut démarrer le rôle quoiqu'il en soit avant de continuer.
Cliquez-droit sur votre rôle, Démarrer !
Une fois que vous aurez fait la configuration en failover des serveurs SFTP-1 et SFTP-2, testez les 2 VIP : 10.10.10.250 et 10.10.10.251... et si la .251 fonctionne, supprimez la .250 !
La configuration de la haute disponibilité est à présent terminée.
Nous passons à la configuration failover de Bitvise.
Retour sur SFTP-1 et SFTP-2
4) Configuration en Master/Follower des serveurs Bitvise
Sur SFTP-1 et SFTP-2, lancez bitvise server :
Set-Location 'C:\Program Files\Bitvise SSH Server\'
.\BssCtrl.exe
Configuration du nœud Master sur SFTP-1
Dans l'onglet 'Server', cliquez en haut à droit sur 'Instance Type: Standalone'
Configurez les options suivantes sur SFTP-1 :
- Instance Type : Master
- Password-Protect instance settings : (Veuillez configurer un mot de passe pour protéger vos réglages sur SFTP-1)
- Password : ATTENTION, ce mot de passe devra être commun à SFTP-1 et SFTP-2 !! (exemple : aZdkgknzv6,)
- Allow synchronization of identity : cocher
- Allow password cache synchronization : cocher
- Allow activation code synchronization : ne pas cocher
- Follower refresh delay (in minutes) : 10 (ça signifie que les serveurs se parlent toutes les 10minutes pour s'échanger les éventuelles modifications de configuration)
- If synchronizing server runs older version : Download installer from master
- Maximum conccurrent installer download connections : 50
- Automatic updates : Apply recommended updates
- Check for update delay (hours) : 18
- Update stability delay (days) : 18
- Maintenance periods : laissez par défaut ou changez à votre guise
Validez en cliquant sur OK.
Echange des clefs
Pour que le nœud Master (SFTP-1) puisse 'passer le relais' au nœud follower (SFTP-2) en cas de problème de SFTP-1, il faut que le serveur Bitvise sur SFTP-2 possède le clefs publiques du serveur Bitvise sur SFTP-1 !
Pour ce faire, sur SFTP-1, il faut exporter toutes les clefs publiques.
Dans l'onglet 'Server', cliquer sur 'Manage host keys'.
- Choisissez le format d'export par défaut (Standard SSH2 format)
- Sélectionnez tour à tour les clefs (par défaut la première est une RSA et la seconde une ECDSA...) puis cliquez sur 'Export'. Choisissez un nom pour les différencier (RSA et ECDSA par exemple).
- Transférez ces 2 clefs (ou faîtes un copier/coller du contenu si vous le pouvez) de SFTP-1 à SFTP-2.
Configuration du nœud follower sur SFTP-2
Il faut maintenant attribuer le rôle de suiveur au serveur Bitvise qui se trouve sur SFTP-2 et lui filer les clefs publiques du serveur Bitvise sur SFTP-1.
Dans l'onglet 'Server', cliquez également sur 'Instance type: Standalone'
Configurez les options suivantes :
- Instance type : Follower
- Password-protect instance settings : (Veuillez configurer un mot de passe pour protéger vos réglages sur SFTP-2)
- Host keys and fingerprints : cliquez et importez les clefs publiques que vous venez de transférer de SFTP-1 vers SFTP-2 (ou faîtes un copier-coller directement si vous le pouvez)
- Master host : IP de SFTP-1 : 10.10.10.201
- Master port : 22 (à moins que vous ne l'ayez changé sur SFTP-1)
- Connect from interface : (si vous avez plus d'une interface réseau sur SFTP-1 et SFTP-2, vous pouvez spécifier sur quelle interface vous voulez que les échanges de données entre les 2 serveurs aient lieu). Si vous n'avez qu'une seule carte réseau (comme c'est le cas sur le schéma) alors laissez vide
- Allow ssh-rsa host signature : cocher
- Password : ATTENTION, ce mot de passe est le fameux mot de passe commun à SFTP-1 et SFTP-2 que l'on avait créé un peu plus haut sur SFPT-1 !! (aZdkgknzv6,)
- Enable obfuscation : NE PAS COCHER. ce réglage n'est pas disponibles dans les menu d'instance sur SFTP-1, donc il ne faut pas le cocher, autrement la connexion ne se fera pas entre les 2 serveurs.
- Synchronize SSH host keys : cocher
- Synchronize TLS/SSL certificates : cocher
- Synchronize server settings : cocher
- Synchronize password cache : cocher
- Synchronize activation mode : cocher
Laissez les reste par défaut (non coché).
On valide en cliquant sur OK.
Voilà, la configuration master/follower est terminée.
Attendez quelques instants, les serveurs vont se parler !
Regardez dans les onglets 'Activity' pour voir les logs des connexions entre eux.
Si vous créez désormais un utilisateur virtuel sur le serveur bitvise de SFTP-1, il sera automatiquement ajouté à SFTP-2 quelques minutes après (dans la configuration que l'on vient de faire plus haut sur SFTP-1, la synchronisation de configuration des serveurs se fait toutes les 10minutes.. libre à vous de raccourcir).
Vous pourrez voir apparaître l'utilisateur virtuel dans l'onglet 'Server', 'Settings', 'view', 'Access control', 'Virtual accounts' sur SFTP-2.
Test de failover
- créez un utilisateur virtuel sur SFTP-1, attendez qu'il se réplique sur SFTP-2 (ou forcez la réplication en cliquant sur 'Connect now' sous 'Instance Type : follower' dans l'onglet 'Server' sur SFTP-2
- pensez à créer le répertoire de base de stockage de Bitvise pour votre utilisateur virtuel sur SFTP-1 et SFTP-2 :
New-Item -Path C:\SftpRoot -ItemType Directory
(C:\SftpRoot est le répertoire par défaut des utilisateurs virtuels (ou changez-le, au besoin), sinon vous ne pourrez pas vous connecter.)
- Connectez-vous à l'utilisateur virtuel créé depuis le CLIENT, et faîtes tomber SFTP-1... vous verrez, le client bitvise va se reconnecter quasiment instantanément au serveur SFTP-2, comme si de rien était !!
Il vous faudra mettre en place la solution de stockage redondant, voir distribué ensuite ...
↑ Haut de page