Progetto

Generale

Profilo

SetupClusterHA » Cronologia » Versione 51

Amministratore Truelite, 04-10-2007 18:59

1 1 Amministratore Truelite
[[TracNav(TOC)]]
2
3 51 Amministratore Truelite
h1. Configurazione di un Cluster HA
4 1 Amministratore Truelite
5
6 51 Amministratore Truelite
In questo caso per _Cluster HA_ si intende un sistema composto da due macchine (dette nodi) in configurazione attivo/passivo, su cui viene gestita automaticamente la sincronizzazione dei dati attraverso DRBD, e lo _switch_ automatico dei servizi in caso di crollo del nodo attivo con l'uso di _heartbeat_.
7 1 Amministratore Truelite
8
9 51 Amministratore Truelite
h2. Predisposizione delle due macchine del Cluster
10
11
12
Per un buon funzionamento del cluster è quantomeno opportuno poter disporre di una interfaccia di rete in più, dedicata alla comunicazione diretta fra i due nodi; questo è importante anche per evitare errori nella rilevazione di un crollo (che normalmente viene fatta tramite una connessione di rete, anche se è possibile usare un collegamento seriale) qualora ad andare giù fosse lo _switch_ e non un singolo nodo. Disponendo dell'hardware necessario (interruttori controllabili da remoto) si può installare _stonith_ per assicurarsi dello spegnimento dell'altro nodo in caso di _switch_.
13
14
<pre>
15
16 1 Amministratore Truelite
Per poter utilizzare la sincronizzazione dei dati con DRBD occorre predisporre i dischi delle due macchine riservando lo spazio opportuno. Per questo occorrono due partizioni su ciascuna macchina (in realtà si potrebbe fare tutto con una sola, ma questo comporta che gli ultimi 128Mb della partizione devono essere lasciati liberi ed il filesystem presente su di essa opportunamento ridimensionato). La prima partizione sarà quella su cui si mantengono i dati, la seconda deve essere di almeno 128Mb e serve per i metadati usati da DRBD, la partizione dei dati deve essere approssimativamente della stessa dimensione su entrambe le macchine.
17
18
19 6 Amministratore Truelite
20 51 Amministratore Truelite
h2. Configurazione di DRBD
21 1 Amministratore Truelite
22 51 Amministratore Truelite
23
<pre>
24
25
<pre>
26
<pre>
27
<pre>
28 4 Amministratore Truelite
resource r0 {
29
  protocol C;
30
  incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";
31 27 Amministratore Truelite
  startup {
32 4 Amministratore Truelite
    degr-wfc-timeout 120;    # 2 minutes.
33
  }
34
  disk {
35
    on-io-error   detach;
36
  }
37 1 Amministratore Truelite
  net {
38 4 Amministratore Truelite
  }
39
  syncer {
40
    rate 10M;
41
    group 1;
42 1 Amministratore Truelite
    al-extents 257;
43
  }
44
  on servint1 {
45
    device     /dev/drbd0;
46
    disk       /dev/md3;
47
    address    192.168.234.1:7788;
48 51 Amministratore Truelite
    meta-disk  /dev/hda7r0;
49 1 Amministratore Truelite
  }
50 4 Amministratore Truelite
  on servint2 {
51
    device    /dev/drbd0;
52 38 Amministratore Truelite
    disk      /dev/hda5;
53 3 Amministratore Truelite
    address   192.168.234.2:7788;
54 51 Amministratore Truelite
    meta-disk /dev/hda7r0;
55 1 Amministratore Truelite
  }
56
}
57 51 Amministratore Truelite
</pre>
58
<pre>
59 1 Amministratore Truelite
60 51 Amministratore Truelite
<pre>
61 3 Amministratore Truelite
62 51 Amministratore Truelite
<pre>
63 2 Amministratore Truelite
64 51 Amministratore Truelite
<pre>
65
<pre>
66 1 Amministratore Truelite
modprobe drbd
67
drbdadm up all
68 51 Amministratore Truelite
</pre>
69
<pre>
70
<pre>
71 30 Amministratore Truelite
servint1:~# cat /proc/drbd
72 2 Amministratore Truelite
version: 0.7.10 (api:77/proto:74)
73 1 Amministratore Truelite
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
74
 0: cs:Connected st:Secondary/Secondary ld:Inconsistent
75 2 Amministratore Truelite
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
76 30 Amministratore Truelite
 1: cs:Unconfigured
77 51 Amministratore Truelite
</pre>
78 1 Amministratore Truelite
che ci dice che le due macchine si vedono fra loro, ma anche che lo stato di DRBD è inconsistente ed che i dischi sono entrambi classificati come secondari. A questo punto si potrà definire quale dei due dischi è il primario (quello che deve essere copiato sul secondario), ed iniziare la sincronizzazione dei dispositivi con il comando:
79 51 Amministratore Truelite
<pre>
80 1 Amministratore Truelite
drbdadm -- --do-what-I-say primary all
81 51 Amministratore Truelite
</pre>
82
<pre>
83
<pre>
84 1 Amministratore Truelite
servint1:~# cat /proc/drbd
85
version: 0.7.10 (api:77/proto:74)
86
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
87
 0: cs:SyncSource st:Primary/Secondary ld:Consistent
88
    ns:360356 nr:0 dw:0 dr:361240 al:0 bm:21 lo:135 pe:36 ua:221 ap:0
89 22 Amministratore Truelite
        [>...................] sync'ed:  0.6% (69265/69617)M
90 2 Amministratore Truelite
        finish: 1:44:47 speed: 11,252 (10,288) K/sec
91 1 Amministratore Truelite
 1: cs:Unconfigured
92 51 Amministratore Truelite
</pre>
93
<pre>
94 14 Amministratore Truelite
95
A questo punto si tratterà solo di attendere il tempo necessario perché venga eseguita la sincronizzazione via rete (la prima volta può essere piuttosto lungo), ed una volta che questa sarà completata avremo sul nodo primario qualcosa del tipo:
96 51 Amministratore Truelite
<pre>
97 14 Amministratore Truelite
servint1:~# cat /proc/drbd
98 1 Amministratore Truelite
version: 0.7.10 (api:77/proto:74)
99
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
100
 0: cs:Connected st:Primary/Secondary ld:Consistent
101
    ns:71288320 nr:0 dw:0 dr:71288320 al:0 bm:4352 lo:0 pe:0 ua:0 ap:0
102
 1: cs:Unconfigured
103 51 Amministratore Truelite
</pre>
104 1 Amministratore Truelite
mentre sul nodo secondario avremo qualcosa del tipo:
105 51 Amministratore Truelite
<pre>
106 1 Amministratore Truelite
servint2:~# cat /proc/drbd
107 12 Amministratore Truelite
version: 0.7.10 (api:77/proto:74)
108 1 Amministratore Truelite
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
109
 0: cs:Connected st:Secondary/Primary ld:Consistent
110 6 Amministratore Truelite
    ns:3028 nr:0 dw:0 dr:3028 al:0 bm:15 lo:0 pe:0 ua:0 ap:0
111 1 Amministratore Truelite
 1: cs:Unconfigured
112 51 Amministratore Truelite
</pre>
113 1 Amministratore Truelite
e come si può notare i ruoli dei dispositivi sono invertiti.
114
115 51 Amministratore Truelite
<pre>
116 1 Amministratore Truelite
117 51 Amministratore Truelite
<pre>
118 1 Amministratore Truelite
119 8 Amministratore Truelite
120 30 Amministratore Truelite
121 51 Amministratore Truelite
h2. Configurazione di heartbeat
122
123
124
<pre>
125
<pre>
126 8 Amministratore Truelite
cd /usr/share/doc/heartbeat
127
zcat ha.cf.gz > /etc/ha.d/ha.cf
128 1 Amministratore Truelite
zcat haresources.gz > /etc/ha.d/haresources
129 51 Amministratore Truelite
</pre>
130 1 Amministratore Truelite
131 51 Amministratore Truelite
<pre>
132
<pre>
133 49 Amministratore Truelite
logfacility     local0
134 7 Amministratore Truelite
keepalive 2
135 6 Amministratore Truelite
deadtime 30
136 11 Amministratore Truelite
bcast  eth1
137 1 Amministratore Truelite
auto_failback on
138
node servint1 servint2
139 51 Amministratore Truelite
</pre>
140 50 Amministratore Truelite
141 51 Amministratore Truelite
<pre>
142
<pre>
143 1 Amministratore Truelite
servint1 IPaddr::10.10.0.2/16/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/shared::ext3
144 51 Amministratore Truelite
</pre>
145 1 Amministratore Truelite
146 51 Amministratore Truelite
<pre>
147
<pre>
148 1 Amministratore Truelite
cp authkeys /etc/ha.d/
149
chmod 600 /etc/ha.d/authkeys
150 51 Amministratore Truelite
</pre>
151 1 Amministratore Truelite
e qui andrà specificata la modalità di autenticazione ed inserita la password, con qualcosa del tipo:
152 51 Amministratore Truelite
<pre>
153 1 Amministratore Truelite
auth 2
154
2 sha1 unabellapasswordbellalungaemoltocomplicata
155 51 Amministratore Truelite
</pre>
156 19 Amministratore Truelite
se si connettono le macchina con un cavo cross allora tutto questo è
157 1 Amministratore Truelite
sostanzialmente inutile, e si potrà usare molto più semplicemente qualcosa del
158
tipo: 
159 51 Amministratore Truelite
<pre>
160 35 Amministratore Truelite
auth 1
161 19 Amministratore Truelite
1 crc
162 51 Amministratore Truelite
</pre>
163 1 Amministratore Truelite
164 51 Amministratore Truelite
A questo punto si potrà avviare _heartbeat_ direttamente con lo script di avvio lanciando il comando:
165
<pre>
166 1 Amministratore Truelite
/etc/init.d/heartbeat start
167 51 Amministratore Truelite
</pre>
168
<pre>
169 42 Amministratore Truelite
170 45 Amministratore Truelite
171 17 Amministratore Truelite
172 51 Amministratore Truelite
h2. La configurazione dei servizi
173
174
175
<pre>
176
<pre>
177 17 Amministratore Truelite
for i in samba slapd nfs-kernel-server nfs-common dhcp3-server cupsys bind9 apache2
178 42 Amministratore Truelite
do
179 44 Amministratore Truelite
  update-rc.d -f $i remove
180
done
181 51 Amministratore Truelite
</pre>
182 44 Amministratore Truelite
(si tenga conto che nell'upgrade di un pacchetto l'attivazione dei servizi viene in genere ripristinata su tutti i runlevel, si verifichi sempre che le cose siano a posto).
183
184 51 Amministratore Truelite
<pre>
185
<pre>
186 44 Amministratore Truelite
mkdir -p /shared/var/lib
187
for i in dhcp3 ldap ldap-account-manager nfs samba slapd
188
do
189
  mv /var/lib/$i /shared/var/lib
190 1 Amministratore Truelite
  ln -s /shared/var/lib/$i /var/lib/$i
191 46 Amministratore Truelite
done
192 51 Amministratore Truelite
</pre>
193
<pre>
194
<pre>
195 42 Amministratore Truelite
mkdir -p /shared/var/cache
196
for i in bind cups samba
197
do
198 35 Amministratore Truelite
  mv /var/cache/$i /shared/var/cache
199 36 Amministratore Truelite
  ln -s /shared/var/cache/$i /var/cache/$i
200 1 Amministratore Truelite
done
201 24 Amministratore Truelite
mkdir -p /shared/var/spool
202 18 Amministratore Truelite
for i in cups samba slurpd
203 34 Amministratore Truelite
do
204 33 Amministratore Truelite
  mv /var/spool/$i /shared/var/spool/
205 34 Amministratore Truelite
  ln -s /shared/var/spool/$i /var/spool/$i
206
done
207 51 Amministratore Truelite
</pre>
208
<pre>
209 41 Amministratore Truelite
210 51 Amministratore Truelite
<pre>
211
<pre>
212 18 Amministratore Truelite
mkdir -p /shared/var/www
213 30 Amministratore Truelite
mv /var/www /shared/var
214 23 Amministratore Truelite
ln -s /shared/var/www /var/www
215 51 Amministratore Truelite
</pre>
216
<pre>
217 47 Amministratore Truelite
218
Si tenga conto poi che essendo i servizi attivi sul cluster, essi verranno acceduti con l'indirizzo generico di quest'ultimo, per cui occorrerà configurarli in maniera identica su entrambi i nodi, e fare in modo che, dove richiesto, per il nome a dominio compaia sempre quello del cluster e non del singolo nodo e lo stesso per l'indirizzo IP.
219
220 51 Amministratore Truelite
<pre>
221
<pre>
222 47 Amministratore Truelite
postrotate
223 23 Amministratore Truelite
       [ -f /var/run/cups/cupsd.pid ] || invoke-rc.d --quiet cupsys restart > /dev/null && sleep 10
224 30 Amministratore Truelite
endscript
225 51 Amministratore Truelite
</pre>
226
<pre>
227 26 Amministratore Truelite
228 51 Amministratore Truelite
Per la configurazione di LDAP si rammenti di usare gli stessi certificati (e CA) su entrambe le macchine, si abbia anche cura di creare i certificati in modo che il _commonName_ in essi inserito corrisponda al nome a dominio assegnato all'indirizzo pubblico del cluster, altrimenti non si riuscirà ad accedervi con SSL. Sarà comunque utile inserire nei _subjectAltName_ anche i valori degli indirizzi IP del cluster e dei singoli nodi.
229 25 Amministratore Truelite
230 51 Amministratore Truelite
<pre>
231
<pre>
232 40 Amministratore Truelite
INTERFACES="eth0"
233 51 Amministratore Truelite
</pre>
234
<pre>
235
<pre>
236 40 Amministratore Truelite
server-identifier 10.10.0.2;
237
server-name servint;
238 51 Amministratore Truelite
</pre>
239 40 Amministratore Truelite
240 39 Amministratore Truelite
241 51 Amministratore Truelite
<pre>
242
<pre>
243 49 Amministratore Truelite
   netbios name = SERVINT
244 18 Amministratore Truelite
   interfaces = 10.10.0.2
245 1 Amministratore Truelite
   bind interfaces only = yes
246 51 Amministratore Truelite
</pre>
247 1 Amministratore Truelite
248 51 Amministratore Truelite
<pre>
249
<pre>
250 1 Amministratore Truelite
net getlocalsid
251 51 Amministratore Truelite
</pre>
252 1 Amministratore Truelite
e poi impostare il valore ottenuto sul nodo secondario con qualcosa del tipo:
253 51 Amministratore Truelite
<pre>
254 1 Amministratore Truelite
net setlocalsid S-1-5-21-3442639467-1470014585-3232117252
255 51 Amministratore Truelite
</pre>
256
<pre>
257 1 Amministratore Truelite
258 51 Amministratore Truelite
<pre>
259
<pre>
260 1 Amministratore Truelite
servint1 IPaddr::10.10.0.2/16/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/shared::ext3 slapd samba bind9 dhcp3-server cupsys apache2
261 51 Amministratore Truelite
</pre>