OVH Cloud OVH Cloud

Questions sur la réplication...

21 réponses
Avatar
Jérôme Quintard
Pour une nouvelle application je dois utiliser l'architecture suivante :

Un serveur SQL Local utilisé par notre application.
Deux serveurs IIS Distant en loadbalancing, avec sur chacun un serveur SQL
connecté.

Comment obtenir une synchronisation parfaite des données entre les deux
serveurs SQL distant (à cause du loadbalancing). Sachant qu'une publication
se fera en fusion, l'autre en transaction et que le local et relié au
distant par une simple connection ADSL.

J'espère avoir donner assez d'infos, merci pour votre avis....

Jérôme

10 réponses

1 2 3
Avatar
bruno reiter [MVP]
à priori, si un serveur est en MàJ et les 2 autres en lecture au même
niveau, il devrait y avoir une publi transactionnelle et deux abonnés.

br

"Jérôme Quintard" wrote in
message news:OT$
Pour une nouvelle application je dois utiliser l'architecture suivante :

Un serveur SQL Local utilisé par notre application.
Deux serveurs IIS Distant en loadbalancing, avec sur chacun un serveur SQL
connecté.

Comment obtenir une synchronisation parfaite des données entre les deux
serveurs SQL distant (à cause du loadbalancing). Sachant qu'une


publication
se fera en fusion, l'autre en transaction et que le local et relié au
distant par une simple connection ADSL.

J'espère avoir donner assez d'infos, merci pour votre avis....

Jérôme




Avatar
Med Bouchenafa
Je ne sais pas si j'ai tout compris de ton architecture.
Tu as deux SQL Servers derrière chacun un serveur IIS. Ces deux derniers
sont en Load Balancing
Tu voudrais obtenir un synchronisation parfaite entre les deux.
En l'état actuel, cela est tout à fait impossible.
Il est IMPOSSIBLE de faire du Load Balancing avec SQL Server.

Le mieux à faire est de mettre en place une réplication transactionnelle
bidirectionnelle
Il y aura toujours une certaine latence entre les deux machines et la
gestion des conflits n'est pas des plus simples à mettre en oeuvre

Une meilleure solution serait de mettre en place qu'un seul SQL Server
attaqué par les deux IIS

--
Bien cordialement
Med Bouchenafa

"Jérôme Quintard" a écrit dans
le message de news: OT$
Pour une nouvelle application je dois utiliser l'architecture suivante :

Un serveur SQL Local utilisé par notre application.
Deux serveurs IIS Distant en loadbalancing, avec sur chacun un serveur SQL
connecté.

Comment obtenir une synchronisation parfaite des données entre les deux
serveurs SQL distant (à cause du loadbalancing). Sachant qu'une
publication
se fera en fusion, l'autre en transaction et que le local et relié au
distant par une simple connection ADSL.

J'espère avoir donner assez d'infos, merci pour votre avis....

Jérôme




Avatar
Jérôme Quintard
Non med, 2 serveurs IIS en load balancing. Sur chaque serveur IIS est
connecté 1 serveur SQL Server du genre :

IIS1 <-> IIS2
| |
SQL1 SQL2

Maintenant mon architecture est comme celle-ci :

Local <--------> Distant
IIS1 <-> IIS2
| |
SQL0 SQL1 SQL2

Il faut que les données saisies sur SQL0 soient transmises à SQL1 et SQL2.
Là il y a au minimum deux choix :

1. Réplication de SQL0 -> SQL1 et SQL0 -> SQL2
2. Réplication de SQL0 -> SQL1 et SQL1 -> SQL2 (gain de bande passante ?
célérité du lan ? un abonné peut il devenir lui même distributeur de la
base?)

A cause du loadbalancing j'ai besoin que la synchronisation entre SQL1 et
SQL2 soit la plus rapide possible (c'est pour ça que je regardais l'autre
jour si un partage de la base sur le NAS était possible). Autre point, les
utilisateurs connectés sur IIS1 risque de modifier des données dans SQL1 qui
doivent transmises à leur tour sur SQL0 et SQL2.

Une meilleure solution serait de mettre en place qu'un seul SQL Server
attaqué par les deux IIS



Oui mais vu le traffic j'ai peur que mon BiProc soit limite !! Et comment
évoluer dans le futur si le traffic augmente par 3 ou 4 ?

Quelles solutions j'ai pour partager la base (à part du clustering j'ai pas
les moyens d'acheter les versions Enterprise de l'OS et de SQLServer) ??

Jérôme
Avatar
Med Bouchenafa
Dans l'absolu, tu essaies de faire de la répartition de charge sur deux SQL
Server
La réplication n'est qu'un moyen (que je qualifie d'illusoire)
Les deux solutions que tu cites sont possibles.
Oui, un Abonné peut à son tour devenir Editeur
Tout dépend des temps de latence que tu peux te permettre entre la
synchronisation des données entre tes 3 serveurs

Moi, je reste persuader qu'un seul serveur attaqué par les deux IIS est la
meilleure solution
Il faut que ce serveur soit bien evidemment configuré matériellement en
conséquence
Le jour où ton traffic se multiple par 3 ou 4, il faut espérer que tes
revenus se multiplient par un facteur plus important et que tu pourras
mettre en place un serveur plus conséquent

Le clustering ne permet pas non plus de partager une base de données entre
deux serveurs
Cela ne change rien au fond du problème


--
Bien cordialement
Med Bouchenafa

"Jérôme Quintard" a écrit dans le
message de news:
Non med, 2 serveurs IIS en load balancing. Sur chaque serveur IIS est
connecté 1 serveur SQL Server du genre :

IIS1 <-> IIS2
| |
SQL1 SQL2

Maintenant mon architecture est comme celle-ci :

Local <--------> Distant
IIS1 <-> IIS2
| |
SQL0 SQL1 SQL2

Il faut que les données saisies sur SQL0 soient transmises à SQL1 et SQL2.
Là il y a au minimum deux choix :

1. Réplication de SQL0 -> SQL1 et SQL0 -> SQL2
2. Réplication de SQL0 -> SQL1 et SQL1 -> SQL2 (gain de bande passante ?
célérité du lan ? un abonné peut il devenir lui même distributeur de la
base?)

A cause du loadbalancing j'ai besoin que la synchronisation entre SQL1 et
SQL2 soit la plus rapide possible (c'est pour ça que je regardais l'autre
jour si un partage de la base sur le NAS était possible). Autre point, les
utilisateurs connectés sur IIS1 risque de modifier des données dans SQL1
qui doivent transmises à leur tour sur SQL0 et SQL2.

Une meilleure solution serait de mettre en place qu'un seul SQL Server
attaqué par les deux IIS



Oui mais vu le traffic j'ai peur que mon BiProc soit limite !! Et comment
évoluer dans le futur si le traffic augmente par 3 ou 4 ?

Quelles solutions j'ai pour partager la base (à part du clustering j'ai
pas les moyens d'acheter les versions Enterprise de l'OS et de SQLServer)
??

Jérôme



Avatar
Jérôme Quintard
> Dans l'absolu, tu essaies de faire de la répartition de charge sur deux
SQL Server



Oui... tu as compris, même si c'est une façon pas forcément "rigoureuse"...

La réplication n'est qu'un moyen (que je qualifie d'illusoire)



Oui je comprend et tu as tout à fait raison...

Oui, un Abonné peut à son tour devenir Editeur



ah ? bonne nouvelle... mais bon je sais pas si je vais vraiement gagner
grand chose en terme de temps et au niveau supervision c'est pas terrible...

Moi, je reste persuader qu'un seul serveur attaqué par les deux IIS est la
meilleure solution



Oui sauf qu'aujourhui on a investi dans 2 gros biProc au lieu d'un quadri
sur les conseils du fabricant. C'est assez délirant, surtout quand tu sais
ensuite que la solution proposé au départ ne fonctionne finalement pas ...
(je parle du partage de la base sur un NAS) car au départ c'est notre
fournisseur qui s'est fait valider la config par un ingé Microsoft...

Le jour où ton traffic se multiple par 3 ou 4, il faut espérer que tes
revenus se multiplient par un facteur plus important et que tu pourras
mettre en place un serveur plus conséquent



Ok mais le jour ou ça ce développe de façon considérable je me vois mal
passer d'un BiProc à un Quadri et d'un Quadri à un Octo en terme d'évolution
c'est pas terrible... faut toujours racheter du matériel plus gros plutôt
que d'acheter "une extention" pour l'architecture existante... Tu as une
idée de la façon dont gère ce problème les sites internet à très forte
charge (microsoft, amazon et tant d'autres...) ?

Le clustering ne permet pas non plus de partager une base de données entre
deux serveurs



Oui uniquement de la haute dispo... Mais donc sur SQL Server il existe
aucune solution de partage de base ?! Sais tu si c'est possible sur d'autres
SGBDR (Oracle, PostGreSQL, MaxDB, Firebird, Interbase ou autres...)

En tout cas merci pour tes conseils med !!

Jérôme
Avatar
Patrice
Pour info, j'avais vu également les "vues partitionnées" :

Si mes souvenirs sont exacts, le principe est :
- chaque serveur prend en charge une partie des lignes
- chaque serveur peut avoir accès à la totalite des lignes (mais de façon
moins efficace pour les lignes qu'il ne gère pas donc il est intéressant de
diriger la requête vers le "bon" serveur)

Par contre la mise en oeuvre concrète ne me parait pas si "transparente" que
cela (en théorie oui mais il y a sans doute en amont pas mal de préparation
pour voir comment partionner les données le plus efficacement après cela
dépend sans doute aussi si l'application s'y prête bien).

Attention : ici il s'agit bien de répartition de charge et pas de tolérance
de pannes (les données sont réparties pas dupliquées).

TerraServer : http://terraserver.microsoft.com/about.aspx?n«outDbstats
MSA :
http://www.microsoft.com/resources/documentation/msa/idc/all/solution/en-us/rag/ragc06.mspx
(Scaling out with SQL Server Federations)

Bon courage...

--

"Jérôme Quintard" a écrit dans le
message de news:
> Dans l'absolu, tu essaies de faire de la répartition de charge sur deux
> SQL Server

Oui... tu as compris, même si c'est une façon pas forcément


"rigoureuse"...

> La réplication n'est qu'un moyen (que je qualifie d'illusoire)

Oui je comprend et tu as tout à fait raison...

> Oui, un Abonné peut à son tour devenir Editeur

ah ? bonne nouvelle... mais bon je sais pas si je vais vraiement gagner
grand chose en terme de temps et au niveau supervision c'est pas


terrible...

> Moi, je reste persuader qu'un seul serveur attaqué par les deux IIS est


la
> meilleure solution

Oui sauf qu'aujourhui on a investi dans 2 gros biProc au lieu d'un quadri
sur les conseils du fabricant. C'est assez délirant, surtout quand tu sais
ensuite que la solution proposé au départ ne fonctionne finalement pas ...
(je parle du partage de la base sur un NAS) car au départ c'est notre
fournisseur qui s'est fait valider la config par un ingé Microsoft...

> Le jour où ton traffic se multiple par 3 ou 4, il faut espérer que tes
> revenus se multiplient par un facteur plus important et que tu pourras
> mettre en place un serveur plus conséquent

Ok mais le jour ou ça ce développe de façon considérable je me vois mal
passer d'un BiProc à un Quadri et d'un Quadri à un Octo en terme


d'évolution
c'est pas terrible... faut toujours racheter du matériel plus gros plutôt
que d'acheter "une extention" pour l'architecture existante... Tu as une
idée de la façon dont gère ce problème les sites internet à très forte
charge (microsoft, amazon et tant d'autres...) ?

> Le clustering ne permet pas non plus de partager une base de données


entre
> deux serveurs

Oui uniquement de la haute dispo... Mais donc sur SQL Server il existe
aucune solution de partage de base ?! Sais tu si c'est possible sur


d'autres
SGBDR (Oracle, PostGreSQL, MaxDB, Firebird, Interbase ou autres...)

En tout cas merci pour tes conseils med !!

Jérôme




Avatar
Jérôme Quintard
Hello patrice,

J'ai regardé quelques documents sur le partionnement mais visiblement ça
correspond mieux à une base volumineuse qu'à une base comme la notre (au
pire 2000 enregistrements). De plus en terme de backup/restauration et
réplication ça à l'air assez galère... Non ?

Jérôme
Avatar
Jérôme Quintard
et puis de toutes façons c'est dispo uniquement dans la version enterprise
:) :) moi j'ai que la stantard :) :)
Avatar
Med Bouchenafa
Si tu as les ressources nécessaires (notamment temps) tu peux t'amuser à
mettre en place une réplication transactionnelle bidirectionnelle entre SQL1
et SQL2

Concernant ce qui se fait chez les autres
Je connais notamment la solution d'Oracle pour avoir assister à une démo
Elle s'appelle RAC.
Voici un document Microsoft qui en parle
http://download.microsoft.com/download/e/8/e/e8ec4b71-bf13-4fd5-9af5-aabcbec859e6/RealityBehind_RAC.pdf.


--
Bien cordialement
Med Bouchenafa


"Jérôme Quintard" a écrit dans le
message de news:
Dans l'absolu, tu essaies de faire de la répartition de charge sur deux
SQL Server



Oui... tu as compris, même si c'est une façon pas forcément
"rigoureuse"...

La réplication n'est qu'un moyen (que je qualifie d'illusoire)



Oui je comprend et tu as tout à fait raison...

Oui, un Abonné peut à son tour devenir Editeur



ah ? bonne nouvelle... mais bon je sais pas si je vais vraiement gagner
grand chose en terme de temps et au niveau supervision c'est pas
terrible...

Moi, je reste persuader qu'un seul serveur attaqué par les deux IIS est
la meilleure solution



Oui sauf qu'aujourhui on a investi dans 2 gros biProc au lieu d'un quadri
sur les conseils du fabricant. C'est assez délirant, surtout quand tu sais
ensuite que la solution proposé au départ ne fonctionne finalement pas ...
(je parle du partage de la base sur un NAS) car au départ c'est notre
fournisseur qui s'est fait valider la config par un ingé Microsoft...

Le jour où ton traffic se multiple par 3 ou 4, il faut espérer que tes
revenus se multiplient par un facteur plus important et que tu pourras
mettre en place un serveur plus conséquent



Ok mais le jour ou ça ce développe de façon considérable je me vois mal
passer d'un BiProc à un Quadri et d'un Quadri à un Octo en terme
d'évolution c'est pas terrible... faut toujours racheter du matériel plus
gros plutôt que d'acheter "une extention" pour l'architecture existante...
Tu as une idée de la façon dont gère ce problème les sites internet à très
forte charge (microsoft, amazon et tant d'autres...) ?

Le clustering ne permet pas non plus de partager une base de données
entre deux serveurs



Oui uniquement de la haute dispo... Mais donc sur SQL Server il existe
aucune solution de partage de base ?! Sais tu si c'est possible sur
d'autres SGBDR (Oracle, PostGreSQL, MaxDB, Firebird, Interbase ou
autres...)

En tout cas merci pour tes conseils med !!

Jérôme



Avatar
Jérôme Quintard
> Si tu as les ressources nécessaires (notamment temps) tu peux t'amuser à
mettre en place une réplication transactionnelle bidirectionnelle entre
SQL1 et SQL2



Ca revient à une fusion non ??? Quelle différence ?
1 2 3