Nous devons cloner à chaud un service Linux quand il est vivant, pas seulement parce que nous ne pouvons pas redémarrer ou quelque chose; c'est juste à cause de notre scénario spécial (oui, j'ai déjà lu cette réponse, mais elle est un peu différente de la mienne Cloner un serveur Linux fonctionnel).
Nous avons un nœud de calcul, vous pouvez dire un nœud de calcul NLP qui exécute certains modèles dessus. Lorsque nous démarrons le nœud (avec un service bien sûr), le calcul sera horriblement lent jusqu'à ce que nous le nourrissions plusieurs fois. Nous l'avons appelé échauffement.
Malheureusement, le travail d'échauffement prend beaucoup de temps à attendre (peut-être que nos calculs sont terminés avant le réchauffement du nœud).
Donc, le problème vient, existe-t-il un moyen stable de cloner à chaud un serveur Linux pour maintenir le nœud aux meilleures performances afin que nous puissions cloner et le mettre en ligne dans un temps plus court?
Peut-être que vous ne pouvez pas "cloner à chaud" un serveur entier (vous pouvez, mais seulement s'il s'agit d'une machine virtuelle), mais vous pouvez geler et restaurer un seul processus, avec cri , Checkpoint/Restore in Userspace .
Cela vous permet d'enregistrer l'état interne du programme sur le disque et d'arrêter le programme, puis de restaurer le programme dans cet état à partir des fichiers enregistrés.
Pour prendre en charge l'opération souhaitée, vous pouvez copier les fichiers représentant le programme enregistré sur un autre serveur et y restaurer.
criu nécessite un noyau récent avec diverses fonctionnalités compilées, donc les anciennes distributions Linux pourraient ne pas fonctionner. Tu peux courir criu check
sur une machine particulière pour déterminer si les prérequis pour criu sont présents.
Cela peut être un peu hors de portée de votre environnement actuel, mais la manière standard de le faire est de virtualiser votre serveur. De nombreux hôtes de virtualisation (VMware, virtualbox, etc.) autorisent des "instantanés" qui enregistrent l'état d'un serveur, qui peut ensuite être cloné dans de nouvelles instances. Ces nouvelles instances auront exactement le même état que l'original, jusqu'aux processus en cours d'exécution. Bien sûr, vous voudrez vous assurer que le logiciel que vous exécutez fonctionnera toujours correctement dans un environnement virtuel (le calcul CUDA/GPU vient à l'esprit).
La question que vous mentionnez fait référence à un lien, http://www.linuxfocus.org/English/March2005/article370.shtml , qui décrit toutes les façons dont j'avais imaginé faire vos demandes.
Que les options soient là ne signifie pas grand-chose à ce qui s'exécute sur le serveur. Vous devez considérer que tous les fichiers susceptibles de changer dans le processus de clonage peuvent être des fichiers incohérents sur la machine cible. Sur ce post, vous fournissez qu'ils parlent de bases de données, et le clonage comme ça ne donne aucune assurance de l'intégrité des données.
On ne sait pas exactement ce que vous vouliez dire avec "jusqu'à ce que nous le nourrissions plusieurs fois" .
Mais si j'ai bien compris ce que vous demandez, vous devez considérer que pour cloner un système, il a besoin de temps pour copier et calculer les ressources.
Pour effectuer un "ON/OF" ou mieux appelé un environnement actif/de sauvegarde, le serveur doit être correctement configuré dans le cluster.
Je suis désolé si ce n'est pas la réponse que vous attendez, mais les options que vous obtenez sont celles-ci.
Il existe de nombreux problèmes potentiels avec ce que vous essayez de faire, et bien sûr, comme vous le savez, il serait préférable de mettre le serveur hors ligne et de le cloner alors qu'aucune donnée n'est stockée dynamiquement.
Cependant, ce que vous cherchez à faire est tout à fait plausible, comme je l'ai déjà fait. Si vous utilisez dd
, vous pouvez cloner le serveur complet au niveau du bloc sur un autre lecteur ou un autre serveur. Cela nécessitera cependant une configuration supplémentaire sur le nouveau serveur, et vous ne pourrez probablement pas simplement éteindre l'autre et activer le nouveau. Pour que nous comprenions cela, nous devons savoir quelques choses sur le matériel et les logiciels de votre serveur.
Premièrement, afin de déterminer la meilleure stratégie de données, il serait utile de savoir ce qui est mis à jour régulièrement. Avez-vous un serveur SQL qui se met à jour dynamiquement mais a un contenu statique? Alternativement, avez-vous une équipe de développeurs sur un système de subversioning comme git qui envoie des mises à jour constantes de données à votre contenu? Selon ce qui est mis à jour, il déterminera le meilleur plan d'action complet.
Si, par exemple, seul le SQL est mis à jour régulièrement, vous pouvez migrer vers un nouveau serveur pendant que ce serveur est opérationnel de la manière suivante:
dd
pour cloner toutes les données du nouveau serveur.Vous devrez peut-être déconnecter temporairement votre serveur d'origine pour vous assurer de ne manquer aucune donnée. Alternativement, pour n'avoir aucun temps d'arrêt, vous pouvez rendre le second actif, pointer le DNS vers le nouveau serveur, puis mettre à jour manuellement toutes les entrées DNS sur le nouveau serveur, de sorte qu'il n'y a effectivement aucun temps d'arrêt. C'est plus compliqué que quelques minutes de temps d'arrêt pour sauvegarder le SQL et restaurer sur le nouveau serveur, mais cela peut être nécessaire pour zéro temps d'arrêt.
Bien sûr, ce n'est qu'un exemple de cas d'utilisation, et selon votre configuration et plusieurs variables, vous devrez peut-être créer votre propre stratégie de migration en fonction de votre cas spécifique.
L'autre problème concerne la configuration matérielle du serveur. Le nouveau serveur est-il 100% identique en matériel à l'ancien serveur? Si c'est le cas, la configuration est plus facile. Cependant, si, d'autre part, il s'agit d'une configuration matérielle totalement, complètement différente, vous devrez peut-être implémenter une stratégie différente qui consiste à simplement configurer le deuxième serveur à l'avance, puis à sauvegarder toutes vos données et bases de données SQL sur le premier serveur et migrez-les manuellement, en changeant la configuration comme vous le souhaitez.
La migration des serveurs n'est en aucun cas anodine, et pour réussir votre déménagement, vous devez avoir une connaissance approfondie des serveurs ou du personnel disponible qui les possède. Dans tous les cas, il est fortement recommandé de prendre immédiatement une sauvegarde complète et de la stocker sur une troisième source, même sur votre ordinateur local, de sorte que si le pire des cas se produit (les deux serveurs se bloquent et meurent de manière irréparable), vous en avez encore un autre copie de vos données pour reconstruire vos serveurs avec.
J'espère que cela vous aidera et bonne chance avec le déménagement de votre serveur!