2017-08-18 8 views
0

J'essaye de construire plusieurs API pour lesquelles je veux stocker les données avec Cassandra. Je le conçois comme si j'aurais plusieurs hôtes, mais les hôtes que je pensais seraient de deux types: fiables et non approuvés. Pour cette raison, j'ai certaines données que je ne veux pas finir par répliquer sur un groupe d'hôtes mais le reste des données à répliquer partout. Je considérais simplement créer un nœud pour les données publiques et un pour les données protégées, mais cela exigerait que les hôtes approuvés exécutent deux nœuds et compliquerait également la manière dont l'API interagit avec les données.Puis-je avoir des espaces de clés répliqués sur certains nœuds?

Je le construis aussi dans un conteneur docker, je m'attends à ce que la création/destruction de nœuds soit fréquente et non approuvée.

Je veux savoir s'il est possible d'utiliser des espaces de clés pour réaliser ma stratégie de réplication requise.

Répondre

3

Vous pouvez avoir deux Datacenters l'un ayant vos données publiques et l'autre les données privées. Vous pouvez configurer la réplication d'espace de clés pour répliquer uniquement ces données sur un ou les deux contrôleurs de domaine. Cependant, il existe des problèmes de sécurité car tous les nœuds doivent pouvoir se connecter via le protocole Gossip et vos applications client doivent également contacter les deux contrôleurs de domaine pour les différentes lectures et écritures.

Je vous suggère de regarder dans la configuration de la sécurité peut-être SSL pour les démarreurs, puis peut-être internal authentication. Remarque Kerberos est également pris en charge, mais cela peut être trop complexe pour ce dont vous avez besoin au moins maintenant.

Vous pouvez également jeter un oeil à la firewall docs pour voir quels ports sont utilisés entre les nœuds et à partir des clients afin que vous sachiez lesquels verrouiller. Enfin, comme l'indique l'affiche ci-dessus, la destruction/création de nœuds n'est pas une bonne pratique. Cassandra est conçu pour pouvoir développer/réduire votre cluster en cours d'exécution, mais cela peut être une opération coûteuse car elle implique non seulement le streaming des données depuis/vers le nœud supprimé/ajouté, mais aussi d'autres nœuds à rééquilibrer.

Vous pouvez exécuter des nœuds dans des conteneurs docker, mais notez que vous devez faire attention à ne pas faire plusieurs choses, comme plusieurs conteneurs qui accèdent tous aux mêmes ressources physiques. Cassandra est assez sensible à la latence d'io par exemple, plusieurs conteneurs partageant le même disque physique peuvent rendre des problèmes de performances.

+0

Merci, je vais m'y pencher un peu plus. :) –

0

En bref: non vous ne pouvez pas.

Tous les nœuds d'un cluster Cassandra provenant d'un anneau complet où vos données seront distribuées avec le partitionneur sélectionné.

Vous pouvez disposer de plusieurs espaces de touches et d'une authentification et d'une autorisation au sein de cassandra et diviser vos données fiables et non fiables en différents espaces de clés. Ou vous allez avec deux clusters pour diviser vos données. D'après mon expérience, vous ne devez pas non plus essayer de créer et de détruire des nœuds cassandra en tant que votre activité quotidienne habituelle. L'ajout et la suppression de nœuds sont coûteux et doivent être surveillés car votre cluster a besoin de maintenir la réplication et ainsi de suite. Il peut donc être bon de séparer les grappes de Cassandra de vos nœuds api.

+0

Vous faites ici quelques bons points mais ce n'est pas un «non» clair.Comme vous le faites remarquer, vous pouvez avoir des données dans différents espaces de clés, mais vous pouvez également les répliquer sur différents "centres de données virtuels", contrôlant ainsi le placement des données et des données de réplique pour l'espace-clé donné. J'ai tenu à faire écho à votre commentaire sur l'ajout/suppression de nœuds. Pas quelque chose que tu ferais tout le temps. – markc