root/traduc/trunk/slony/listenpaths.xml

Revision 1014, 10.3 kB (checked in by daamien, 7 months ago)

1ère traduction, à relire

Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- DerniÚre modification
3      le       $Date$
4      par      $Author$
5      révision $Revision$ -->
6
7 <sect1 id="listenpaths"><title>Voies d'écoute</title>
8
9 <indexterm><primary>voies d"écoute</primary></indexterm>
10
11 <note><para> Si vous utilisez une version &slony1; 1.2 ou ultérieure, il
12     est <emphasis>complÚtement inutile</emphasis> de lire cette section car
13     cette version dispose d'un méthode de gestion automatique de cette partie
14     de sa configuration. Pour les versions antérieures, cependant, ce qui va
15     suivre est nécessaire.
16     </para>
17 </note>
18
19 <para>Si vous avez plus de deux ou trois noeuds et un niveau d'abonnement
20   en cascade ( <emphasis>c'est à dire</emphasis> des noeuds qui s'abonne
21   à des noeuds abonnés ), vous devez être trÚs prudent avec la configuration
22   des <quote>voies d'écoute</quote> par les commandes Slonik
23   <xref linkend="stmtstorelisten"/> et  <xref linkend="stmtdroplisten"/> qui
24   contrÃŽle le contenu de la table <xref linkend="table.sl-listen"/>.</para>
25
26 <para>Les entrées de cette table contrÎlent où chaque noeuds doit écouter afin
27   d'obtenir les événements propagés par les autres noeuds.  Vous vous dites
28   peut-être que chaque noeud doit simplement écouter le noeud
29   <quote>parent</quote> qui leur transmet les mise à jours, mais en réalité, ils doivent
30   pouvoir recevoir des messages de ma part de <emphasis>tous</emphasis> les noeuds
31   afin de pouvoir déterminer si les <command>SYNC</command>s ont été reçus
32   partout et que les entrées de <xref linkend="table.sl-log-1"/> et <xref
33   linkend="table.sl-log-2"/> ont été appliquées partout et qu'elles
34   peuvent être purgées. Ces communications supplémentaires permettent à
35   <productname>Slony-I</productname> de déplacer les origines vers d'autres
36   noeuds.</para>
37
38 <sect2><title>Comment l'écoute peut être rompue</title>
39
40 <indexterm><primary> rupture d'écoute </primary></indexterm>
41
42 <para>A une occasion, j'ai eu besoin de supprimer un noeud abonné (#2) et
43   de la recréer. Ce noeud était le fournisseur d'un autre abonné (#3) qui
44   était, de facto, un <quote>esclave en cascade</quote>.
45   La suppression du noeud abonné ne fonctionna, en effet
46   <xref linkend="slonik"/> m'informa qu'il existait un noeud dépendant.
47   Je fit pointer le noeud dépendant vers le noeud <quote>maître</quote>
48   de l'ensemble de réplication, ce qui se déroula, pour un temps,
49   sans difficultés.</para>
50
51 <para>Je supprimais alors l'abonnement du <quote>node 2</quote>, et tentais de
52   l'abonner de nouveau. Cela déclencha un événement &slony1;
53 <command>set_subscription</command>, qui commença à copier les tables.
54 À ce moment, les événements ne furent plus propagés au <quote>noeud 3</quote>,
55 et tandis qu'il était en parfait état de fonctionnement, plus aucun
56 événement ne lui parvenait.</para>
57
58 <para>Le problÚme était que le noeud #3 attendait de recevoir des événements de la part
59   du noeud #2, qui était occupé par le traitement de l'événement <command>set_subscription</command>
60   et ne transmettait aucune autre information.</para>
61
62 <para>Nous supprimames les rÚgles qui ordonnait au noeud #3 d'écouter le noeud #2,
63   en les remplaçant par des rÚgles qui lui indiquait d'attendre les événements en provenance
64   du noeud #1 ( le noeud origine de la réplication ). À ce moment,
65   <quote>comme par magie</quote>, le noeud #3 recommença à répliquer, car
66   il avait découvert une source ou écouter les évÚnements <command>SYNC</command>.</para>
67 </sect2>
68 <sect2><title>Comment configurer les écoutes</title>
69
70 <para>Les cas simples sont facile à gérer. Intéressons-nous plutÎt
71   à un configuration plus complexe.</para>
72
73 <para>Considérons un ensemble de noeuds, de 1 à 6, où 1 est l'origine,
74 2-4 sont abonnés directement à l'origine, 5 est abonné à 2,
75 et 6 est abonné à 5.</para>
76
77 <para>Voici un <quote>réseau d'écoute</quote> qui montre où chaque noeud doit
78   écouter les messages en provenance des autres noeuds :
79
80 <screen>
81        1|   2|   3|   4|   5|   6|
82 --------------------------------------------
83    1   0    2    3    4    2    2
84    2   1    0    1    1    5    5
85    3   1    1    0    1    1    1
86    4   1    1    1    0    1    1
87    5   2    2    2    2    0    6
88    6   5    5    5    5    5    0
89 </screen>
90 </para>
91 <para>La ligne 2 indique toutes les rÚgles d'écoute pour le noeud 2;
92   il obtient les événements des noeuds 1, 3 et 4 chez le noeud 1 et il
93   écoute sur le noeud 5 les événements des noeuds 5 et 6.
94   </para>
95
96 <para>La derniÚre ligne composée de 5, celle du noeud 6, indique que le noeud 6
97 écoute le noeud 5 pour obtenir les événements des noeuds 1 à 5.</para>
98
99 <para>Les commandes slonik <command>set listen</command> qui exprime
100   ce <quote>réseau d'écoute</quote> sont les suivantes :
101
102 <programlisting>
103 store listen (origin = 1, receiver = 2, provider = 1);
104 store listen (origin = 1, receiver = 3, provider = 1);
105 store listen (origin = 1, receiver = 4, provider = 1);
106 store listen (origin = 1, receiver = 5, provider = 2);
107 store listen (origin = 1, receiver = 6, provider = 5);
108 store listen (origin = 2, receiver = 1, provider = 2);
109 store listen (origin = 2, receiver = 3, provider = 1);
110 store listen (origin = 2, receiver = 4, provider = 1);
111 store listen (origin = 2, receiver = 5, provider = 2);
112 store listen (origin = 2, receiver = 6, provider = 5);
113 store listen (origin = 3, receiver = 1, provider = 3);
114 store listen (origin = 3, receiver = 2, provider = 1);
115 store listen (origin = 3, receiver = 4, provider = 1);
116 store listen (origin = 3, receiver = 5, provider = 2);
117 store listen (origin = 3, receiver = 6, provider = 5);
118 store listen (origin = 4, receiver = 1, provider = 4);
119 store listen (origin = 4, receiver = 2, provider = 1);
120 store listen (origin = 4, receiver = 3, provider = 1);
121 store listen (origin = 4, receiver = 5, provider = 2);
122 store listen (origin = 4, receiver = 6, provider = 5);
123 store listen (origin = 5, receiver = 1, provider = 2);
124 store listen (origin = 5, receiver = 2, provider = 5);
125 store listen (origin = 5, receiver = 3, provider = 1);
126 store listen (origin = 5, receiver = 4, provider = 1);
127 store listen (origin = 5, receiver = 6, provider = 5);
128 store listen (origin = 6, receiver = 1, provider = 2);
129 store listen (origin = 6, receiver = 2, provider = 5);
130 store listen (origin = 6, receiver = 3, provider = 1);
131 store listen (origin = 6, receiver = 4, provider = 1);
132 store listen (origin = 6, receiver = 5, provider = 6);
133 </programlisting>
134 </para>
135 <para>Ces lignes de commandes d'écoute sont lues lorsque...</para>
136
137 <para>... le noeud <quote>récepteur</quote>, cherche un noeud <quote>fournisseur</quote>
138 pour obtenir les événements en provenance du noeud d'<quote>origine</quote>.</para>
139
140 <para>L'outil <filename>init_cluster</filename> parmi les scripts
141 <filename>altperl</filename> produit un réseau d'écoute optimisé
142 sous forme de tableau et ainsi qu'une liste de commandes
143 <xref linkend="slonik"/>.</para>
144
145 <para>Il y a trois <quote>épines</quote> dans ce bouquet de roses :
146
147 <itemizedlist>
148
149 <listitem><para> Si vous changez la structure du l'ensemble de noeuds, alors
150     les noeuds sont abonnés différemment et vous devez supprimer les entrées
151     de la table  <xref linkend="table.sl-listen"/> et en créez de nouvelles
152     pour décrire les nouvelles voies d'écoute entre les noeuds.
153     Jusqu'à &slony1; 1.2, il n'y a aucune maniÚre automatique de réaliser
154     cette <quote>restructuration</quote>.</para></listitem>
155
156 <listitem><para> Si vous <emphasis>ne changez pas</emphasis> les entrées
157 <xref linkend="table.sl-listen"/>, les événements se propageront
158 tant que les noeuds fonctionnerait correctement. Le problÚme se
159 déclenchera lorsqu'un noeud sera retiré,,rendant <quote>orphelin</quote>
160 les noeuds qui l'écoutaient.</para></listitem>
161
162 <listitem><para> Vous pouvez essayer de multiples ensembles de réplication
163     qui ont des structures <emphasis>différentes</emphasis> pour leur arborescence
164     d'abonnés. Il n'y aucune configuration d'écoute qui convienne parfaitement
165     dans ce cas.</para></listitem>
166
167 <listitem><para> Afin de créer une voie <xref linkend="table.sl-listen"/>,
168     il <emphasis>doit</emphasis> exister une série d'entrées<xref linkend="table.sl-path"/>
169     qui connectent l'origine au récepteur.  Cela implique que si le contenu
170     de <xref linkend="table.sl-path"/> ne définit pas réseau <quote>connecté</quote>
171     de noeuds, alors certains noeuds ne seront pas accessibles. Typiquement cela
172     peut se produire, lorsque vous avez deux ensembles de noeuds, placés sur deux
173     sous-réseaux séparés, avec simplement deux noeuds <quote>pare-feu</quote>
174     qui communiquent d'un sous-réseau à l'autre. Couper un de ces noeuds et les
175     sous-ensembles de réplication s'arrêtent.</para></listitem>
176
177 </itemizedlist></para>
178
179 </sect2>
180
181 <sect2 id="autolisten"><title>Génération automatique de voie d'écoute</title>
182
183 <indexterm><primary>génération automatique de voie d'écoute </primary></indexterm>
184
185 <para> Dans &slony1; version 1.1, une rÚgle heuristique est introduite pour
186   générer automatiquement les entrées <envar>sl_listen</envar>.
187   Cela se fait en fonction de 3 types d'informations :
188
189 <itemizedlist>
190
191 <listitem><para>Les entrées <xref linkend="table.sl-subscribe"/> sont
192     les informations primordiales et vitales sur qui doit écouter quoi;
193     nous <emphasis>savons</emphasis> qu'il doit y avoir une voie
194     directe entre chaque abonné et son fournisseur.
195     </para></listitem>
196
197 <listitem><para>Les entrées <xref linkend="table.sl-path"/> sont
198     le second indicateur; si a table <xref linkend="table.sl-subscribe"/>
199     n'indique pas <quote>comment écouter</quote>, alors un noeud
200     peut écouter directement l'origine si il existe une voie praticable
201     dans <xref linkend="table.sl-path"/>.</para></listitem>
202
203 <listitem><para> Enfin, si aucune indication n'a été obtenue à partir des
204     informations précédentes. alors les noeuds peuvent écouter indirectement
205     via un noeud qui est fournisseur de l'abonné, ou qui utilise l'abonné comme
206     fournisseur.</para></listitem>
207
208 </itemizedlist></para>
209
210 <para> À chaque fois que les tables <xref linkend="table.sl-subscribe"/> ou <xref
211 linkend="table.sl-path"/> sont modifiées, la fonction
212 <function>RebuildListenEntries()</function> est appelée pour
213 mettre à jour les voies d'écoute.</para>
214
215 </sect2>
216 </sect1>
Note: See TracBrowser for help on using the browser.