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> |