vendredi, décembre 1, 2023

Présentation d’Amazon MSK Replicator – Réplication entièrement gérée sur des clusters MSK dans la même ou dans des régions AWS différentes


Exprimé par Polly

Amazon Managed Streaming pour Apache Kafka (Amazon MSK) fournit un service entièrement géré et hautement disponible Apache Kafka service simplifiant la façon dont vous traitez les données en streaming. Lors de l’utilisation d’Apache Kafka, un modèle architectural courant consiste à répliquer les données d’un cluster à un autre.

La réplication entre clusters est souvent utilisée pour mettre en œuvre des plans de continuité d’activité et de reprise après sinistre et pour augmenter la résilience des applications dans l’ensemble des clusters. Régions AWS. Un autre cas d’utilisation, lors de la création d’applications multirégionales, consiste à stocker des copies des données en streaming dans plusieurs zones géographiques plus près des consommateurs finaux pour un accès à faible latence. Vous devrez peut-être également regrouper les données de plusieurs clusters dans un cluster centralisé à des fins d’analyse.

Pour répondre à ces besoins, vous devrez écrire du code personnalisé ou installer et gérer des outils open source comme MirrorMaker 2.0, disponible dans le cadre d’Apache Kafka à partir de la version 2.4. Cependant, ces outils peuvent être complexes et longs à mettre en place pour une réplication fiable, et nécessitent une surveillance et une mise à l’échelle continues.

Aujourd’hui, nous vous présentons Réplicateur MSKune nouvelle fonctionnalité d’Amazon MSK qui facilite la configuration fiable inter-région et même région réplication entre les clusters MSK, évoluant automatiquement pour gérer votre charge de travail. Vous pouvez utiliser MSK Replicator avec des applications provisionnées et sans serveur Types de cluster MSK, y compris ceux utilisant stockage hiérarchisé.

Avec MSK Replicator, vous pouvez configurer des topologies de cluster actif-passif et actif-actif pour augmenter la résilience de votre application Kafka dans toutes les régions :

  • Dans un actif-actif configuration, les deux clusters MSK servent activement les lectures et les écritures.
  • Dans un actif Passif configuration, un seul cluster MSK à la fois diffuse activement des données en streaming tandis que l’autre cluster est en veille.

Voyons comment cela fonctionne en pratique.

Création d’un réplicateur MSK dans les régions AWS
J’ai deux clusters MSK déployés dans différentes régions. MSK Replicator nécessite que l’authentification IAM soit activée sur les clusters. Je peux continuer à utiliser d’autres méthodes d’authentification telles que mTLS ou SASL pour mes autres clients. Le cluster source doit également activer la connectivité privée multi-VPC.

Diagramme d'architecture inter-régions du réplicateur MSK.

D’un point de vue réseau, les groupes de sécurité des clusters autorisent le trafic entre le cluster et le groupe de sécurité utilisé par le réplicateur. Par exemple, je peux ajouter des règles entrantes et sortantes auto-référencées qui autorisent le trafic depuis et vers le même groupe de sécurité. Pour plus de simplicité, j’utilise le VPC par défaut et son groupe de sécurité par défaut pour les deux clusters.

Avant de créer un réplicateur, je mets à jour le politique de cluster du cluster source pour permettre au service MSK (y compris les réplicateurs) de trouver et d’atteindre le cluster. Dans le Console Amazon MSK, je sélectionne la Région source. je choisis Groupes à partir du volet de navigation, puis du cluster source. Tout d’abord, je copie le cluster source ARN au sommet. Puis, dans le Propriétés onglet, je choisis Modifier la stratégie de cluster dans le Les paramètres de sécurité. Là, j’utilise la politique JSON suivante (en remplacement de l’ARN du cluster source) et j’enregistre les modifications :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "kafka.amazonaws.com"
            },
            "Action": [
                "kafka:CreateVpcConnection",
                "kafka:GetBootstrapBrokers",
                "kafka:DescribeClusterV2"
            ],
            "Resource": "<SOURCE_CLUSTER_ARN>"
        }
    ]
}

Je sélectionne la région cible dans la console. je choisis Réplicateurs depuis le volet de navigation, puis Créer un réplicateur. Ici, j’entre un nom et une description pour le réplicateur.

Capture d'écran de la console.

Dans le Cluster source section, je sélectionne la région du cluster MSK source. Ensuite, je choisis Parcourir pour sélectionner la source Cluster MSK de la liste. Notez que les réplicateurs peuvent être créés uniquement pour les clusters disposant d’un ensemble de stratégies de cluster.

Capture d'écran de la console.

je laisse Sous-réseaux et Groupes de sécurité comme valeurs par défaut pour utiliser mon VPC par défaut et son groupe de sécurité par défaut. Cette configuration réseau peut être utilisée pour placer des interfaces réseau élastiques (EIN) afin de faciliter la communication avec votre cluster.

Le Méthode de contrôle d’accès pour le cluster source est défini sur Authentification basée sur les rôles IAM. En option, je peux activer plusieurs méthodes d’authentification en même temps pour continuer à utiliser des clients qui ont besoin d’autres méthodes d’authentification comme mTLS ou SASL pendant que le réplicateur utilise IAM. Pour la réplication entre régions, l’accès non authentifié ne peut pas être activé sur le cluster source, car nous utilisons plusieurs VPC pour accéder à leur cluster source.

Capture d'écran de la console.

Dans le Cluster cible section, la Région du cluster est défini sur la région dans laquelle j’utilise la console. je choisis Parcourir pour sélectionner la cible Cluster MSK de la liste.

Capture d'écran de la console.

Semblable à ce que j’ai fait pour le cluster source, je laisse Sous-réseaux et Sécurité groupes comme valeurs par défaut. Cette configuration réseau est utilisée pour placer les ENI requis pour communiquer avec le cluster cible. Le Méthode de contrôle d’accès pour le cluster cible est également défini sur Authentification basée sur les rôles IAM.

Capture d'écran de la console.

Dans le Paramètres du réplicateur section, j’utilise la valeur par défaut Réplication du sujet configuration, afin que tous les sujets soient répliqués. En option, je peux spécifier une liste d’expressions régulières séparées par des virgules qui indiquent les noms des sujets à répliquer ou à exclure de la réplication. Dans le Paramètres additionnelsje peux choisir de copier les configurations des sujets, listes de contrôle d’accès (ACL)et pour détecter et copier de nouveaux sujets.

Capture d'écran de la console.

Réplication de groupe de consommateurs me permet de spécifier si les décalages des groupes de consommateurs doivent être répliqués afin que, après un basculement, les applications consommatrices puissent reprendre le traitement là où elles s’étaient arrêtées dans le cluster principal. Je peux spécifier une liste d’expressions régulières séparées par des virgules qui indiquent les noms des groupes de consommateurs à répliquer ou à exclure de la réplication. Je peux également choisir de détecter et de copier de nouveaux groupes de consommateurs. J’utilise les paramètres par défaut qui reproduisent tous les groupes de consommateurs.

Capture d'écran de la console.

Dans Compressionje sélectionne Aucun dans la liste des types de compression disponibles pour les données en cours de réplication.

Capture d'écran de la console.

La console Amazon MSK peut créer automatiquement un rôle d’exécution de service avec les autorisations nécessaires au fonctionnement du réplicateur. Le rôle est utilisé par le service MSK pour se connecter aux clusters source et cible, pour lire à partir du cluster source et pour écrire sur le cluster cible. Cependant, je peux également choisir de créer et de proposer mon propre rôle. Dans Autorisations d’accèsJe choisis Créer ou mettre à jour un rôle IAM.

Capture d'écran de la console.

Enfin, j’ajoute des balises au réplicateur. Je peux utiliser des balises pour rechercher et filtrer mes ressources ou pour suivre mes coûts. Dans le Balises du réplicateur section, j’entre Environment comme clé et AWS News Blog comme valeur. Ensuite, je choisis Créer.

Capture d'écran de la console.

Après quelques minutes, le réplicateur fonctionne. Mettons-le en service !

Test d’un réplicateur MSK dans les régions AWS
Pour me connecter aux clusters source et cible, j’ai déjà configuré deux Amazon Elastic Compute Cloud (Amazon EC2) instances dans les deux Régions. j’ai suivi le instructions dans la documentation MSK pour installer les outils clients Apache Kafka. Étant donné que j’utilise l’authentification IAM, les deux instances sont associées à un rôle IAM qui leur permet de se connecter, d’envoyer et de recevoir des données des clusters. Pour simplifier la mise en réseau, j’ai utilisé le groupe de sécurité par défaut pour les instances EC2 et les clusters MSK.

Tout d’abord, je crée un nouveau sujet dans le cluster source et envoie quelques messages. j’utilise Connexion d’instance Amazon EC2 pour vous connecter à l’instance EC2 dans la région source. Je remplace le répertoire par le chemin où les exécutables du client Kafka ont été installés (le chemin dépend de la version que vous utilisez) :

cd /home/ec2-user/kafka_2.12-2.8.1/bin

Pour me connecter au cluster source, j’ai besoin de connaître ses serveurs d’amorçage. En utilisant la console MSK dans la région source, je choisis Groupes depuis la page de navigation, puis le cluster source dans la liste. Dans le Résumé du cluster section, je choisis Afficher les informations sur les clients. Là, je copie la liste des Serveurs d’amorçage. Étant donné que l’instance EC2 se trouve dans le même VPC que le cluster, je copie la liste dans le Point de terminaison privé (VPC unique) colonne.

Capture d'écran de la console.

De retour à l’instance EC2, j’ai mis la liste des serveurs d’amorçage dans le SOURCE_BOOTSTRAP_SERVERS variable d’environnement.

export SOURCE_BOOTSTRAP_SERVERS=b-2.uscluster.esijym.c9.kafka.us-east-1.amazonaws.com:9098,b-3.uscluster.esijym.c9.kafka.us-east-1.amazonaws.com:9098,b-1.uscluster.esijym.c9.kafka.us-east-1.amazonaws.com:9098

Maintenant, je crée un sujet sur le cluster source.

./kafka-topics.sh --bootstrap-server $SOURCE_BOOTSTRAP_SERVERS --command-config client.properties --create --topic my-topic --partitions 6

En utilisant le nouveau sujet, j’envoie quelques messages au cluster source.

./kafka-console-producer.sh --broker-list $SOURCE_BOOTSTRAP_SERVERS --producer.config client.properties --topic my-topic
>Hello from the US
>These are my messages

Voyons ce qui se passe dans le cluster cible. Je me connecte à l’instance EC2 dans la région cible. Semblable à ce que j’ai fait pour l’autre instance, j’obtiens la liste des serveurs d’amorçage pour le cluster cible et je la mets dans le TARGET_BOOTSTRAP_SERVERS variable d’environnement.

Sur le cluster cible, l’alias du cluster source est ajouté comme préfixe aux noms de rubriques répliquées. Pour trouver l’alias du cluster source, je choisis Réplicateurs dans le volet de navigation de la console MSK. Là, je choisis le réplicateur que je viens de créer. Dans le Propriétés onglet, je recherche le Alias ​​du cluster dans le Cluster source section.

Capture d'écran de la console.

Je confirme le nom du sujet répliqué en regardant la liste des sujets du cluster cible (c’est le dernier de la liste de sortie) :

./kafka-topics.sh --list --bootstrap-server $TARGET_BOOTSTRAP_SERVERS --command-config client.properties
. . .
us-cluster-c78ec6d63588.my-topic

Maintenant que je connais le nom du sujet répliqué sur le cluster cible, je démarre un consommateur pour recevoir les messages initialement envoyés au cluster source :

./kafka-console-consumer.sh --bootstrap-server $TARGET_BOOTSTRAP_SERVERS --consumer.config client.properties --topic us-cluster-c78ec6d63588.my-topic --from-beginning
Hello from the US
These are my messages

Notez que je peux utiliser un caractère générique dans l’abonnement au sujet (par exemple, .*my-topic) pour gérer automatiquement le préfixe et avoir la même configuration dans les clusters source et cible.

Comme prévu, tous les messages que j’ai envoyés au cluster source ont été répliqués et reçus par le consommateur connecté au cluster cible.

Je peux surveiller la latence, le débit, les erreurs et les métriques de décalage de MSK Replicator à l’aide du Surveillance languette. Parce que cela fonctionne à travers Amazon CloudWatchje peux facilement créer le mien alarmes et inclure ces mesures dans mon tableaux de bord.

Pour mettre à jour la configuration vers une configuration active-active, je suis des étapes similaires pour créer un réplicateur dans l’autre région et répliquer les données en streaming entre les clusters dans l’autre sens. Pour plus de détails sur la gestion du basculement et de la restauration, consultez le Documentation du réplicateur MSK.

Disponibilité et prix
Réplicateur MSK est disponible aujourd’hui dans les régions suivantes : USA Est (Ohio), USA Est (Virginie du Nord), USA Ouest (Oregon), Asie-Pacifique (Singapour), Asie-Pacifique (Sydney), Europe (Francfort) et Europe (Irlande).

Avec MSK Replicator, vous payez par Go de données répliquées et un tarif horaire pour chaque réplicateur. Vous payez également les frais habituels d’Amazon MSK pour vos clusters MSK source et cible, ainsi que les frais AWS standard pour le transfert de données entre régions. Pour plus d’informations, voir Tarifs MSK.

À l’aide des réplicateurs MSK, vous pouvez rapidement mettre en œuvre une réplication entre régions et dans une même région pour améliorer la résilience de votre architecture et stocker les données à proximité de vos partenaires et utilisateurs finaux. Vous pouvez également utiliser cette nouvelle fonctionnalité pour obtenir de meilleures informations en répliquant les données en streaming vers un cluster unique et centralisé où il est plus facile d’exécuter vos analyses.

Simplifiez vos architectures de streaming de données à l’aide d’Amazon MSK Replicator.

Danilo



Related Articles

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Latest Articles