Un environnement multi-cloud est une bonne option pour un plan de reprise après sinistre (DRP), mais cela peut être une tâche fastidieuse car vous devez configurer la connectivité entre les différents fournisseurs de cloud et vous vous devez alors déployer et gérer votre cluster de bases de données à deux endroits différents.
Dans ce blog, nous montrerons comment effectuer un déploiement multi-cloud pour PostgreSQL dans deux des fournisseurs de cloud les plus populaires du moment, AWS et Google Cloud. Pour cette tâche, nous utiliserons certaines des fonctionnalités que ClusterControl peut vous offrir, comme la mise à l'échelle et la réplication de cluster à cluster.
Nous supposerons que vous avez une installation ClusterControl en cours d'exécution et que vous avez déjà créé deux comptes de fournisseur de cloud différents.
Préparer votre environnement cloud
Tout d'abord, vous devez créer votre environnement dans votre fournisseur de cloud principal. Dans ce cas, nous utiliserons AWS avec 2 nœuds PostgreSQL :
Assurez-vous que le trafic SSH et PostgreSQL est autorisé depuis votre serveur ClusterControl en modifier votre groupe de sécurité :
Ensuite, accédez au fournisseur de cloud secondaire et créez au moins une machine virtuelle ce sera le nœud esclave. Nous utiliserons Google Cloud Platform avec 1 nœud PostgreSQL.
Et encore une fois, assurez-vous que vous autorisez le trafic SSH et PostgreSQL depuis votre ClusterControl serveur :
Dans ce cas, nous autorisons le trafic sans aucune restriction sur la source , mais ce n'est qu'un exemple et ce n'est pas recommandé dans la vraie vie.
Déployer un cluster PostgreSQL dans le cloud
Nous utiliserons ClusterControl pour cette tâche, nous supposons donc que vous l'avez installé.
Allez sur votre serveur ClusterControl et sélectionnez l'option "Déployer". Si vous avez déjà une instance PostgreSQL en cours d'exécution, vous devez sélectionner "Importer un serveur/une base de données existants" à la place.
Lorsque vous sélectionnez PostgreSQL, vous devez spécifier l'utilisateur, la clé ou le mot de passe et le port pour vous connecter en SSH à vos nœuds PostgreSQL. Vous avez également besoin du nom de votre nouveau cluster et si vous souhaitez que ClusterControl installe le logiciel et les configurations correspondants pour vous.
Veuillez vérifier les exigences utilisateur de ClusterControl pour plus d'informations sur cette étape.
Après avoir configuré les informations d'accès SSH, vous devez définir l'utilisateur de la base de données, version et datadir (facultatif). Vous pouvez également spécifier le référentiel à utiliser. À l'étape suivante, vous devez ajouter vos serveurs au cluster que vous allez créer.
Lorsque vous ajoutez vos serveurs, vous pouvez entrer l'IP ou le nom d'hôte. Dans cette étape, vous pouvez également ajouter le nœud placé dans le fournisseur de cloud secondaire, car ClusterControl n'a aucune limitation sur le réseau à utiliser, mais pour le rendre plus clair, nous l'ajouterons dans la section suivante. La seule exigence ici est d'avoir un accès SSH au nœud.
Dans la dernière étape, vous pouvez choisir si votre réplication sera synchrone ou Asynchrone.
Si vous ajoutez votre nœud distant ici, il est important d'utiliser la réplication asynchrone, sinon, votre cluster pourrait être affecté par la latence ou les problèmes de réseau.
Vous pouvez surveiller l'état de création dans le moniteur d'activité de ClusterControl.
Une fois la tâche terminée, vous pouvez voir votre nouveau cluster PostgreSQL dans le l'écran principal de ClusterControl.
Ajout d'un nœud esclave distant dans le cloud
Une fois que vous avez créé votre cluster, vous pouvez y effectuer plusieurs tâches, comme déployer/importer un équilibreur de charge ou un nœud esclave de réplication.
Accédez aux actions du cluster et sélectionnez "Ajouter un esclave de réplication" :
Utilisons l'option "Ajouter un nouvel esclave de réplication" car nous supposons que le nœud distant est une nouvelle installation, sinon, vous pouvez utiliser l'option "Importer un esclave de réplication existant" à la place.
Ici, il vous suffit de choisir votre serveur maître, entrez l'adresse IP pour votre nouveau serveur esclave et le port de la base de données. Ensuite, vous pouvez choisir si vous voulez que ClusterControl installe le logiciel et si l'esclave de réplication doit être synchrone ou asynchrone. Encore une fois, si vous ajoutez un nœud dans un centre de données différent, vous devez utiliser la réplication asynchrone pour éviter les problèmes liés aux performances du réseau.
De cette façon, vous pouvez ajouter autant de répliques que vous le souhaitez et répartir le trafic de lecture entre elles à l'aide d'un équilibreur de charge, que vous pouvez également implémenter avec ClusterControl.
Vous pouvez surveiller la création de l'esclave de réplication dans le moniteur d'activité de ClusterControl.
Et vérifiez votre topologie finale dans la section Vue topologique.
Réplication de cluster à cluster dans le cloud
Au lieu d'utiliser l'option « Ajouter un esclave de réplication » pour avoir un environnement multi-cloud, vous pouvez utiliser la fonctionnalité de réplication de cluster à cluster de ClusterControl pour ajouter un cluster distant. Pour le moment, cette fonctionnalité a une limitation pour PostgreSQL qui vous permet d'avoir un seul nœud distant, elle est donc assez similaire à la méthode précédente, mais nous travaillons à supprimer cette limitation bientôt dans une future version.
Pour créer un nouveau cluster esclave, accédez à ClusterControl -> Sélectionner un cluster -> Actions du cluster -> Créer un cluster esclave.
Le cluster esclave sera créé en diffusant les données du cluster maître actuel.
Dans cette section, vous devez choisir le nœud maître du cluster actuel dans laquelle les données seront répliquées.
Lorsque vous passez à l'étape suivante, vous devez spécifier Utilisateur, Clé ou Mot de passe, et port pour se connecter en SSH à vos serveurs. Vous avez également besoin d'un nom pour votre cluster esclave et si vous souhaitez que ClusterControl installe le logiciel et les configurations correspondants pour vous.
Après avoir configuré les informations d'accès SSH, vous devez définir la version de la base de données, datadir, port et informations d'identification d'administrateur. Comme il utilisera la réplication en continu, assurez-vous d'utiliser la même version de base de données et les mêmes informations d'identification que celles utilisées dans le cluster maître. Vous pouvez également spécifier le référentiel à utiliser.
Dans cette étape, vous devez ajouter le serveur pour le nouveau cluster esclave . Pour cette tâche, vous pouvez entrer à la fois l'adresse IP ou le nom d'hôte du nœud de la base de données.
Vous pouvez surveiller la création du cluster esclave dans le moniteur d'activité de ClusterControl. Une fois la tâche terminée, vous pouvez voir le cluster dans l'écran principal de ClusterControl.
Conclusion
Ces fonctionnalités de ClusterControl vous permettront de configurer rapidement la réplication entre différents fournisseurs de cloud pour une base de données PostgreSQL (et différentes technologies), et de gérer la configuration de manière simple et conviviale. À propos de la communication entre les fournisseurs de cloud, pour des raisons de sécurité, vous devez limiter le trafic uniquement à partir de sources connues, donc uniquement du fournisseur de cloud 1 vers le fournisseur de cloud 2 et vice versa.