Evidian SafeKit apporte la haute disponibilité à KVM entre deux serveurs redondants. Cet article explique comment mettre en œuvre rapidement un cluster KVM sans disque partagé et sans compétences spécifiques. Le module de haute disponibilité kvm.safe et un essai gratuit sont offerts dans le tab installation ci-dessous.
Notez que SafeKit est un produit générique. Vous pouvez mettre en œuvre avec le même produit la réplication en temps réel et le basculement de nouveaux répertoires de fichiers et services, de bases de données, de conteneurs docker, de machines virtuelles Hyper-V ou KVM complètes, d'applications Cloud. Voir d'autres exemples de modules miroirs ici.
Cette solution de clustering est reconnue comme la plus simple à mettre en œuvre par nos clients et partenaires. Cette solution résout
Si vous voulez une solution complète avec un temps de reprise rapide, considérez la haute disponibilité au niveau de l'application et lisez cet article VM HA vs Application HA.
Notez que la solution présentée ici permet une réplication et une reprise au niveau des machines virtuelles. Mais SafeKit propose également une solution de réplication et de reprise au niveau des conteneurs (Docker).
La réplication des machines virtuelles est synchrone et temps réel entre deux serveurs KVM. Seules les modifications apportées à l'intérieur des fichiers composant une machine virtuelle sont répliquées. Notez que SafeKit implémente une réplication synchrone en temps réel et non la réplication asynchrone traditionnelle. Cette fonctionnalité est importante pour la haute disponibilité de KVM car avec une réplication asynchrone, il y a perte de données sur un basculement comme expliqué dans cet article: réplication synchrone versus réplication asynchrone.
Lorsqu'un serveur KVM tombe en panne, il y a un basculement automatique des machines virtuelles (VMs) tournant sur ce serveur vers l'autre serveur. Et lorsque le serveur défaillant est redémarré, il y a une réintégration automatique des fichiers représentant les VMs sans les arrêter sur le serveur actif.
Chaque machine virtuelle est répliquée et redémarrée automatiquement indépendamment. Certaines machines virtuelles peuvent s'exécuter sur le premier serveur KVM et sont répliquées et redémarrées sur le deuxième serveur KVM. D'autres machines virtuelles peuvent s'exécuter sur le deuxième serveur KVM et sont répliquées et redémarrées sur le premier serveur KVM. L'équilibrage de charge des machines virtuelles entre les deux serveurs est contrôlé par l'administrateur via la console Web SafeKit. En cliquant sur un bouton, l'administrateur peut déplacer une VM d'un serveur KVM à l'autre.
La solution ne nécessite aucun disque partagé et aucune configuration spéciale de Windows. Seuls 2 serveurs Windows sont nécessaires. Le logiciel SafeKit est installé sur les deux serveurs.
Notez que cette solution est limitée à la réplication et au basculement de 25 machines virtuelles.
Notez également que SafeKit est capable de resynchroniser automatiquement un serveur KVM défaillant sans aucune opération manuelle et sans arrêter les VMs. C'est un facteur de différenciation important lorsqu'on compare SafeKit à des solutions de réplication dont le basculement ne marche qu'une fois : le serveur en panne ne peut être réintégré dans le cluster qu'avec des opérations manuelles complexes et non automatisées.
Sur les deux serveurs Linux
Guide de l'utilisateur disponible ici
La configuration KVM est présentée avec une machine virtuelle nommée vm1. Vous devrez répéter cette configuration pour toutes les machines virtuelles que vous souhaitez répliquer. SafeKit prend en charge jusqu'à 25 machines virtuelles.
À cette étape, nous supposons qu'une machine virtuelle nommée vm1 est existante et configurée sur le nœud 1. Le chemin de l'image vm1 est /var/lib/libvirt/images. Avant la configuration de SafeKit, vous devez effectuer la configuration suivante.
Sur le nœud 1:
Sur le nœud 2:
Vérifiez cache='none' pour vm1 avec virt-manager
Vérifier que le démarrage automatique est désactivé pour vm1 avec virt-manager
Cette opération doit être répétée si vous disposez d'une autre machine virtuelle vm2. Vous devrez également répéter la configuration SafeKit ci-dessous pour vm2. À la fin, vous aurez deux modules KVM SafeKit pour vm1 et vm2. Chaque module est indépendant et ainsi la charge peut être partagée entre les deux serveurs KVM.
Par défaut, les snapshots d'une machine virtuelle ne sont pas répliqués. Pour répliquer les snapshots (après la configuration ci-dessous) :
Important : toute la configuration SafeKit est réalisée à partir d'un seul navigateur.
Lancez la console Web dans un navigateur sur un nœud en vous connectant à http://localhost:9010 (image suivante). Notez que vous pouvez exécuter la console dans un navigateur sur un poste de travail externe.
Entrez l'adresse IP du premier nœud et cliquez sur Confirm (image suivante)
Cliquez sur New node et entrez l'adresse IP du deuxième nœud (image suivante)
Puis, cliquez sur la disquette rouge pour sauvegarder la configuration (image suivante)
Dans l'image précédente, l'opération de sauvegarde a placé les adresses IP dans le fichier /var/safekit/cluster/cluster.xml et a appliqué la commande distribuée /opt/safekit/safekit –H "*" -G qui configure le nœud 1 et le nœud 2.
Ne refaites donc pas cette opération sur l'autre nœud.
Vérifiez la connectivité et le pare-feu entre les deux nœuds pour résoudre des problèmes.
Dans l'onglet Configuration, cliquez sur kvm.safe (xxx.safe dans l'image suivante) puis entrez vm1 comme nom du module et cliquez sur Confirm (la console trouve kvm.safe dans le répertoire "demo/" que vous avez précédemment rempli dans le tab Installation)
Cliquez sur Validate (image suivante)
Donnez le chemin du répertoire des images (/var/lib/libvirt/images dans l'image suivante) où vm1/ a été créé et le nom de la VM (vm1 dans l'image suivante). /var/lib/libvirt/images/vm1/ sera répliqué par SafeKit et la VM vm1 sera redémarrée dans les scripts SafeKit.
Cliquez sur Validate (image précédente)
Cliquez sur Configure (image précédente)
Vérifiez le message succès vert sur les deux serveurs et cliquez sur Next (image précédente). Sous Linux, vous pouvez avoir une erreur à cette étape si les répertoires répliqués sont des points de montage. Voir cet article pour résoudre le problème.
On suppose que le nœud 1 contient les répertoires répliqués les plus récents (sinon faite l'opération suivante sur le nœud 2).
Sélectionnez le nœud 1 et cliquez sur Start it (image suivante).
Lorsque vous démarrerez le nœud 2, la première resynchronisation se fera du nœud1 vers le nœud 2.
En cas de doute, avant cette opération, nous vous suggérons de faire une copie des répertoires répliqués avant de démarrer le cluster pour éviter toute erreur.
Le nœud 1 doit atteindre l'état ALONE (vert) (image suivante), ce qui signifie que le script start_prim a été exécuté sur le nœud 1.
Lorsque le nœud 1 atteint l'état ALONE (vert), vous pouvez vérifier que l'application KVM est démarrée sur le nœud 1.
Si l'état est ALONE (vert) et si l'application n'est pas démarrée, vérifiez le script start_prim: vous pouvez trouver les messages de sortie du script dans l'Application Log disponible dans l'onglet Contrôle.
Si le nœud 1 n’atteint pas l’état ALONE (vert), analysez pourquoi avec le Module Log disponible dans l'onglet Contrôle.
Note : dans l'image suivante, si le cluster est dans l'état [WAIT (rouge) not uptodate - STOP (rouge) not uptodate], arrêtez le serveur WAIT et forcez son démarrage en primaire (cliquez ici pour voir l'opération).
On suppose que les services démarrés automatiquement par SafeKit dans le script start_prim sont bien arrêtés sur le nœud 2.
Démarrez le nœud 2 (image précédente) qui devient SECOND vert (image suivante) après la resynchronisation de tous les répertoires répliqués (copie binaire du nœud 1 vers le nœud 2).
La réplication et le basculement sont opérationnels pour vm1. vm1 s'exécute sur le nœud PRIM (image précédente). Seules les modifications dans l'image KVM définissant vm1 sont répliquées en temps réel dans cet état.
Vérifiez avec KVM virt-manager que la machine vituelle vm1 est démarrée sur le serveur primaire et arrêtée sur le serveur secondaire.
Arrêtez le nœud PRIM en faisant défiler le menu du nœud primaire et en cliquant sur Stop. Vérifiez qu'il y a un basculement sur le nœud SECOND. Et vérifiez le basculement de vm1 avec KVM virt-manager.
Plus d'information sur les tests dans le guide de l'utilisateur
Configure boot start (image suivante sur le côté droit) configure le démarrage automatique du module au boot du serveur. Effectuez cette configuration sur node1 and node2 une fois que la solution de haute disponibilité fonctionne correctement.
Consultez le journal d'un module pour comprendre les raisons d'une reprise sur panne, d'un état d'attente sur la disponibilité d'une ressource etc...
Pour voir le journal du module sur le serveur primaire (image suivante):
Répétez la même opération pour voir le journal du module du serveur secondaire.
Consultez le journal applicatif pour voir les messages de sortie des scripts de redémarrage stat_prim et stop_prim.
Pour voir le journal applicatif du serveur primaire (image suivante) :
Répétez la même opération pour voir le journal applicatif du serveur secondaire.
Plus d'information sur la résolution de problèmes dans le guide de l'utilisateur
Dans l'onglet Advanced Configuration (image suivante), vous pouvez modifier les fichiers internes au module : bin/start_prim et bin/stop_prim et conf/userconfig.xml (image suivante sur le côté gauche). Si vous faites des changements dans les fichiers internes ici, vous devez appliquer la nouvelle configuration par un clic droit sur l'icône/xxx sur le côté gauche (image suivante) : l'interface vous permettra de redéployer les fichiers modifiés sur les deux serveurs.
Plus d'information sur userconfig.xml dans le guide de l'utilisateur
Pour obtenir de l'aide sur le centre d'appel de https://support.evidian.com, prenez 2 Snaphots (2 fichiers .zip), un pour chaque serveur et téléchargez-les dans l'outil du centre d'appel (image suivante).
Plus d'information sur le support dans le guide de l'utilisateur
Allez dans le tab Configuration avancée pour modifier les fichiers ci-dessous.
userconfig.xml (description dans le guide de l'utilisateur)
<!-- Mirror Architecture with Real Time File Replication and Failover for KVM -->
<!DOCTYPE safe>
<safe>
<!-- Set value to the path of the virtual machines repository -->
<macro name="VM_PATH" value="/var/lib/libvirt/images" />
<!-- Set value to the name of the virtual machine -->
<macro name="VM_NAME" value="vm1" />
<service mode="mirror" defaultprim="alone" maxloop="3" loop_interval="24" failover="on">
<!-- Heartbeat Configuration -->
<heart>
<heartbeat name="">
</heartbeat>
</heart>
<!-- File Mirroring Configuration -->
<rfs mountover="off" async="second" locktimeout="200" nbrei="3">
<replicated dir="%VM_PATH%/%VM_NAME%" mode="read_only">
</replicated>
<!-- Uncomment for replicating the directory that contains snapshot xml files of the virtual machine
<replicated dir="/var/lib/libvirt/qemu/snapshot/%VM_NAME%" mode="read_only">
</replicated>
-->
</rfs>
<!-- User scripts Configuration -->
<user>
<var name="VM_PATH" value="%VM_PATH%/%VM_NAME%" />
<var name="VM_NAME" value="%VM_NAME%" />
</user>
</service>
</safe>
start_prim
#!/bin/sh
# Script called on the primary server for starting application
# For logging into SafeKit log use:
# $SAFE/safekit printi | printe "message"
# stdout goes into Application log
echo "Running start_prim $*"
res=0
# Start VM_NAME
virsh start $VM_NAME
state=$(virsh list --all | grep " $VM_NAME " | awk '{ print $3}')
if ([ "x$state" == "x" ]) ; then
res=1
$SAFE/safekit printe "$VM_NAME not found"
else
let i=1
while ( [ $i -le 5 ] && [ "x$state" != "xrunning" ]); do
sleep 5
state=$(virsh list --all | grep " $VM_NAME " | awk '{ print $3}')
let i=i+1
done
if ([ "x$state" != "xrunning" ]) ; then
res=1
$SAFE/safekit printe "$VM_NAME start failed"
fi
fi
if [ $res -ne 0 ] ; then
$SAFE/safekit printe "start_prim failed"
# uncomment to stop SafeKit when critical
$SAFE/safekit stop -i "start_prim"
fi
stop_prim
#!/bin/sh
# Script called on the primary server for stopping application
# For logging into SafeKit log use:
# $SAFE/safekit printi | printe "message"
#----------------------------------------------------------
#
# 2 stop modes:
#
# - graceful stop
# call standard application stop
#
# - force stop ($1=force)
# kill application's processes
#
#----------------------------------------------------------
# stdout goes into Application log
echo "Running stop_prim $*"
# Stop VM_NAME
virsh shutdown $VM_NAME
state=$(virsh list --all | grep " $VM_NAME " | awk '{ print $3}')
if ([ "x$state" == "x" ]) ; then
res=1
$SAFE/safekit printe "$VM_NAME not found"
else
let i=1
while ( [ $i -le 5 ] && [ "x$state" == "xrunning" ]); do
# Stop VM_NAME
virsh shutdown $VM_NAME
sleep 5
state=$(virsh list --all | grep " $VM_NAME " | awk '{ print $3}')
let i=i+1
done
if ([ "x$state" == "xrunning" ]) ; then
res=1
$SAFE/safekit printe "$VM_NAME stop failed"
fi
fi
res=0
# default: no action on forcestop
[ "$1" = "force" ] && exit 0
# Fill with your application stop call
[ $res -ne 0 ] && $SAFE/safekit printe "stop_prim failed"
HA de VMs avec le module Hyper-V ou KVM de SafeKit | HA d'application avec les modules applicatifs de SafeKit |
SafeKit avec le module Hyper-V ou le module KVM | Microsoft Hyper-V Cluster & VMware HA |
Notez que les solutions Hyper-V/SafeKit et KVM/SafeKit sont limitées à la réplication et au basculement de 25 machines virtuelles.
Comparaison d'architectures de haute disponibilité | ||
Fonctionnalité | Cluster SafeKit | Autres clusters |
Cluster logiciel vs cluster matériel | | |
Cluster de type "shared nothing"" vs cluster à disque partagé | | |
Haute disponibilité applicative vs Haute disponibilité de machines virtuelles complètes | Upgrade en douceur de l'application et de l'OS possible serveur par serveur (les versions N et N+1 peuvent coexister) | Upgrade en douceur impossible |
Haute disponibilité vs tolérance aux fautes | Exception logicielle avec redémarrage dans un autre environnement OS. Upgrade en douceur de l'application et de l'OS possible serveur par serveur (les versions N et N+1 peuvent coexister) | Exception logicielle sur les 2 serveurs en même temps. Upgrade en douceur impossible |
Réplication synchrone vs réplication asynchrone | | |
Réplication de fichiers au niveau octet vs réplication de disque au niveau du bloc | | |
Heartbeat, reprise sur panne et quorum pour éviter 2 serveurs maîtres | | |
Adresse IP virtuelle primaire/secondaire, load balancing réseau, basculement sur panne | | |
| | |
Un éditeur de logiciel utilise SafeKit comme un logiciel OEM pour la haute disponibilité de son application | Une entreprise distribuée déploie SafeKit dans de nombreuses succursales, sans compétence informatique spécifique | SafeKit est déployé dans deux sites distants sans nécessiter de baies de disques répliqués à travers un SAN |
| ||
« SafeKit est le logiciel de clustering d’application idéal pour un éditeur logiciel. Nous avons actuellement déployé plus de 80 clusters SafeKit dans le monde entier avec notre application critique de télédiffusion. » | ||
| ||
« WithNCompany a déployé en Corée du Sud de nombreuses solutions de haute disponibilité SafeKit avec la plateforme de vidéo-surveillance de Hanwha. SafeKit est apprécié parce que le produit est facile à installer et très rapidement déployé. » | ||
| ||
« Grâce à la simplicité et la puissance du produit, nous avons gagné du temps dans l’intégration et la validation de nos projets critiques de supervision des lignes de métro à Paris et à Marseille (PCC / Poste de Commande et de Contrôle). » |
Dans les systèmes de vidéosurveillance et de contrôle d'accès, Evidian SafeKit implémente une haute disponibilité avec une réplication synchrone et un basculement sur panne pour :
Sébastien Témoin, directeur technique et innovation, NOEMIS, distributeur à valeur ajoutée des solutions Milestone:
"Evidian SafeKit est une solution professionnelle facilitant la redondance de Milestone Management Server, Event Server, Log Server. La solution est facile à déployer, facile à maintenir et peut être ajoutée à une installation existante. Nous avons aidé des intégrateurs à déployer la solution sur de nombreux projets tels que la surveillance urbaine, les data centers, les stades et autres infrastructures critiques. SafeKit est un excellent produit et Evidian fournit un excellent support. Heureux de vous aider si vous avez des questions."
Etudes de cas
Harmonic utilise SafeKit comme une offre de haute disponibilité logicielle OEM dans ses solutions de télédiffusion à travers la TNT, les satellites, le câble et les réseaux IP.
Plus de 80 clusters SafeKit sont déployés sur Windows avec réplication de la base de données d'Harmonic et reprise automatique de l'application critique en cas de panne.
Philippe Vidal, Responsable produit, Harmonic témoigne :
« SafeKit est le logiciel de clustering d’application idéal pour un éditeur logiciel qui cherche une solution de haute disponibilité simple et économique. Nous déployons SafeKit dans le monde entier et nous avons actuellement plus de 80 clusters SafeKit sur Windows avec notre application critique de télédiffusion à travers la TNT, les satellites, le câble et les réseaux IP. SafeKit réalise la réplication temps réel et continue de notre base de données et la reprise automatique de notre application sur panne logicielle et matérielle. »
La Compagnie Européenne de Garanties et Cautions chez Natixis utilise SafeKit comme solution de haute disponibilité de ses applications.
Plus de 30 clusters SafeKit sont déployés sur Unix et Windows chez Natixis.
Bernard Etienne, Responsable de production témoigne :
“La Compagnie Européenne de Garanties et Cautions gère des applications métiers critiques qui doivent rester disponibles face aux pannes matérielles et logicielles. En effet, nos applications déterminent si une caution peut être délivrée à un particulier contractant un prêt dans une banque ou à une entreprise qui a besoin d'une garantie sur un investissement. Nous avons retenu le produit SafeKit d'Evidian pour assurer la haute disponibilité de nos applications métiers pour 3 raisons principales. C'est un produit simple qui se met en œuvre sur deux serveurs standards. Il ne nécessite pas d'investir des composants matériels spécifiques et coûteux. Et c'est un produit riche qui permet de surveiller finement nos applications métiers et les reprendre en cas de panne matérielle et logicielle.”
Fives Syleps met en œuvre la haute disponibilité de son ERP avec SafeKit et déploie la solution dans l'industrie agro-alimentaire.
Plus de 20 clusters SafeKit sont déployés sur Linux et Windows avec Oracle.
Fives Syleps témoigne :
"Les entreprises automatisées que nous équipons s’appuient sur notre ERP. Il n’est pas envisageable que notre ERP soit hors de service à cause d’une panne informatique. Sinon c’est l’ensemble de l’activité de l’entreprise qui s’arrête.
Nous avons choisi la solution de haute disponibilité Evidian SafeKit car c’est une solution simple d’utilisation. Elle se met en œuvre sur des serveurs standard et ne contraint pas à utiliser des disques partagés sur un SAN et des boitiers réseau de partage de charge. Elle permet d’écarter les serveurs dans des salles machines distinctes.
De plus, la solution est homogène pour les plateformes Linux et Windows. Et elle apporte 3 fonctionnalités : le partage de charge entre serveurs, la reprise automatique sur panne et la réplication temps réel des données."
Le fournisseur de solutions pour le contrôle aérien, Copperchase, déploie SafeKit pour la haute disponibilité de ses systèmes dans les aéroports.
Plus de 20 clusters SafeKit sont déployés sur Windows.
Tony Myers, Directeur Business Développement témoigne :
"En développant des applications pour le contrôle du trafic aérien, Copperchase est dans l'une des activités les plus critiques qui existent. Nous avons absolument besoin que nos applications soient disponibles tout le temps. Nous avons trouvé avec SafeKit une solution simple et complète de clustering qui répond parfaitement à nos besoins. Ce logiciel combine en un seul produit l'équilibrage de charge, la réplication de données en temps réel sans perte de données et le basculement automatique en cas de panne. C'est pourquoi, Copperchase déploie SafeKit dans les aéroports pour le contrôle du trafic aérien au Royaume-Uni et dans les 30 pays où nous sommes présents."
L'éditeur de logiciel Wellington IT spécialisé dans les banques coopératives déploie la solution de haute disponibilité SafeKit en Irlande et au Royaume-Uni avec son progiciel.
Plus de 25 clusters SafeKit sont déployés sur Linux avec Oracle.
Peter Knight, Directeur Commercial témoigne :
"La continuité d’activité et la résistance au désastre sont une préoccupation majeure pour nos clients utilisant notre application bancaire Locus déployée dans de nombreuses banques en Irlande et au Royaume-Uni. Nous avons trouvé avec SafeKit une solution simple et robuste pour assurer la haute disponibilité et la réplication synchrone et sans perte des données entre deux serveurs. Avec cette solution logicielle, nous ne sommes pas dépendants d’une solution de clustering matérielle spécifique et coûteuse. C’est un outil parfait pour fournir une option de haute disponibilité à une application développée par un éditeur logiciel."
La RATP choisit la solution de haute disponibilité et de load balancing SafeKit pour son poste de commande centralisé de la ligne 1 du métro parisien.
20 clusters SafeKit sont déployés sur Windows et Linux.
Stéphane Guilmin, Responsable de projets témoigne :
"Projet majeur au sein de la RATP, l’automatisation de la ligne 1 du métro 1 parisien impose que le poste commande centralisé (PCC) soit conçu pour résister aux pannes informatiques. Avec le produit SafeKit, nous avons trouvé trois avantages distinctifs répondant à ce besoin. Il s’agit d’abord d’une solution purement logicielle qui ne nous contraint pas à utiliser des disques partagés sur un SAN et des boitiers réseau de partage de charge. Nous pouvons très simplement séparer nos serveurs dans des salles machines distinctes. Ensuite, cette solution de clustering est homogène pour nos plateformes Windows et Linux. Et SafeKit nous apporte les trois fonctions dont nous avons besoin : le partage de charge entre serveurs, la reprise automatique sur panne et la réplication en temps réel des données."
Et également, Philippe Marsol, responsable d'intégration, Atos BU Transport, témoigne :
“SafeKit est un produit simple et puissant pour la haute disponibilité des applications. Nous avons intégré SafeKit dans nos projets critiques comme la supervision de la ligne 4 du métro Parisien (dans le PCC / Poste de Commande et de Contrôle) ou la ligne 1 et 2 à Marseille (dans le CSR / Centre de Supervision du Réseau). Grâce à la simplicité du produit, nous avons gagné du temps dans l'intégration et la validation de la solution et nous avons eu également des réponses rapides à nos questions avec une équipe Evidian réactive."
L'intégrateur de logiciels Systel déploie la solution de haute disponibilité SafeKit dans les centres d'appels des pompiers et du SAMU.
Plus de 30 clusters SafeKit sont déployés sur Windows avec SQL Server.
Marc Pellas, Président Directeur Général témoigne :
"SafeKit répond parfaitement aux besoins d'un éditeur logiciel. Son principal avantage est d'introduire la haute disponibilité via une option logicielle qui s'ajoute à notre propre suite logicielle multi-plateformes. Ainsi, nous ne sommes pas dépendants d'une solution de clustering matériel spécifique, coûteuse, complexe à installer, difficile à maintenir et différente suivant les environnements clients. Avec SafeKit, nos centres de pompiers sont déployés avec une solution de clustering logiciel intégrée avec notre application, uniforme chez tous nos clients, simple pour les utilisateurs et que nous maîtrisons totalement de l'installation jusqu'au support après vente."
La haute disponibilité de l'ERP de l'armée Française est réalisée avec SafeKit à la DGA.
14 clusters SafeKit sont déployés sur Windows et Linux.
Alexandre Barth, Administrateur système témoigne :
"Notre équipe de production a mis en œuvre sans difficulté la solution SafeKit sur 14 clusters Windows et Unix. Notre activité critique est ainsi sécurisée avec des fonctions de haute disponibilité et de partage de charge. Les avantages de ce produit sont d'une part la simplicité de mise en œuvre et d'administration des clusters et d'autre part, l'uniformité de la solution face aux systèmes d'exploitation hétérogènes."
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.