Je possède et exploite visualwebsiteoptimizer.com /. L'application fournit un extrait de code que mes clients insèrent dans leurs sites Web pour suivre certaines mesures. Étant donné que l'extrait de code est du JavaScript externe (en haut du code du site), avant d'afficher un site Web client, le navigateur d'un visiteur contacte notre serveur d'applications. En cas de panne de notre serveur d'applications, le navigateur continuera à essayer d'établir la connexion avant son expiration (généralement 60 secondes). Comme vous pouvez l'imaginer, nous ne pouvons pas nous permettre d'arrêter notre serveur d'applications dans tous les scénarios, car cela affectera négativement l'expérience non seulement des visiteurs de notre site Web, mais aussi des visiteurs du site Web de nos clients!
Nous utilisons actuellement le mécanisme de basculement DNS avec un serveur de sauvegarde situé dans un centre de données différent (en fait un continent différent). Autrement dit, nous surveillons notre serveur d'applications à partir de 3 emplacements distincts et dès qu'il est détecté en panne, nous modifions un enregistrement pour pointer vers l'IP du serveur de sauvegarde. Cela fonctionne bien pour la plupart des navigateurs (car notre TTL est de 2 minutes), mais IE met en cache le DNS pendant 30 minutes, ce qui pourrait être un tueur de deal. Voir ce récent post de notre visualwebsiteoptimizer.com/split-testing-blog/maximum-theoretical-downtime-for-a-website-30-minutes/
Alors, quel type de configuration pouvons-nous utiliser pour garantir un basculement presque instantané en cas de panne majeure du centre de données de l'application? J'ai lu ici www.tenereillo.com/GSLBPageOfShame.htm qu'avoir plusieurs enregistrements A est une solution mais nous ne pouvons pas encore nous permettre la synchronisation de session. Une autre stratégie que nous explorons est d'avoir deux enregistrements A, l'un pointant vers le serveur d'applications et le second vers un proxy inverse (situé dans un autre centre de données) qui se résout en serveur d'applications principal s'il est en marche et en serveur de sauvegarde s'il est en marche. Pensez-vous que cette stratégie est raisonnable?
Juste pour être sûr de nos priorités, nous pouvons nous permettre de garder notre propre site Web ou application, mais nous ne pouvons pas laisser le site Web des clients ralentir en raison de notre temps d'arrêt. Donc, si nos serveurs d'applications sont en panne, nous n'avons pas l'intention de répondre avec la réponse d'application par défaut. Même une réponse vide suffira, nous avons juste besoin que le navigateur complète cette connexion HTTP (et rien d'autre).
Référence: j'ai lu ce fil qui était utile serverfault.com/questions/69870/multiple-data-centers-and-http-traffic-dns-round-robin-is-the-only-way-to-assure
la source
OK, cela a été demandé il y a quelque temps, mais je le vois pour la première fois maintenant.
Vous devriez:
Faire autre chose est vraiment irresponsable. Je suppose que vous l'avez déjà en place.
Vous ne devez pas baser votre service sur des astuces de routage BGP à moins d'avoir ou d'obtenir le savoir-faire pour le faire. Les scénarios de routage BGP complexes sont décidément non triviaux à mettre en œuvre; ne faites pas cela vous-même si vous n'avez pas les connaissances spécifiques au domaine.
Votre question elle-même est un peu confuse. L'analyse de la création d'un service hautement disponible commence par les données d'application , car c'est votre "état". Les pièces sans état sont faciles à rendre hautement disponibles, les pièces à l'état plein ne le sont pas. Donc, au lieu de vous concentrer sur vos serveurs et DNS, regardez où votre application conserve son état . Commencez par vous y optimiser et demandez éventuellement des conseils sur l'algorithme sur Stack Overflow. Pourriez-vous implémenter une notion de transactions et de nouvelle tentative de serveur intelligent dans votre fichier Javascript fx?
la source
En fait, ce que vous voulez pourrait être mis à niveau pour faciliter vos activités de test fractionné si vous combinez les basculements geodns et dns.
L'envoi du groupe A vers ip 1 et du groupe B vers ip 2, même s'ils étaient sur le même serveur, vous permettrait de séparer vos groupes de test. Le groupe A et le groupe B proviennent de différentes régions géographiques. Pour être juste, le jour / semaine / mois suivant, vous inversez les groupes pour vous assurer que vous tenez compte des différences géographiques. Juste pour être rigoureux dans votre méthodologie.
Le service geodns / failover dns sur http://edgedirector.com peut le faire
divulgation: je suis associé au lien ci-dessus, tombé ici en recherchant un article sur l'application d'astuces DNS stupides pour fractionner les tests.
la source