Venerdì, 21 maggio 2010Drupal Hook
Girovagando in rete ho trovato questa lezione molto interessante sul sistema degli hook in drupal..
There's a hook for that! Extending Drupal / Beginning Module Development - Chris Wells from Utzu Logigan on Vimeo. Lunedì, 2 ottobre 2006Port Knocking
"Inutile bussare qui non aprirà nessuno...." diceva una canzone qualche tempo fa'. Cose' il port knocking? Quanti amministratori di sistema hanno lasciato la 22 aperta per poter accedere ai propri sistemi da remoto? Quante notti insonni nella speranza che nessuno bucasse quel server magari sfruttando un baco appena scoperto nelle librerie Openssl? Con il port knocking potrete dormire qualche sonno in più (non troppi ovviamente). Il port knocking consiste nel fare delle richieste precise al demone knockd su certe porte determinate precedentemente, se il demone vedrà in entrata la giusta sequenza prestabilita allora provvederà con "l'apriti sesamo!" ovvero con l'esecuzione di un nostro codice arbitario.
Ad esempio se volessimo aprire e/o chiudere l'ssh solo dal nostro ip e solo quando lo volgliamo noi verso una ipotetica macchina 192.168.x.x dobbiamo aggiungere nelle regole di firewall:
e poi installare e configurare ad hoc il nostro demone knockd. Installazione Port Knocking: Procedete al download di http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki e scegliete se ricompilare il software o usare i pacchetti o usare .deb o .rpm. Una volta installato il demone knockd passate alla modifica del file knockd.conf in questo modo:
abbiamo ora configuarto il demone, fatelo ripartire e per provare basterà eseguire da remoto;
e a questo punto l'ssh sarà aperto dal vostro ip. invece con
provvederete alla chiusura dell'ssh. Domenica, 24 settembre 2006Creazione di un raid software con FreeBSD
In questo articolo andremo a vedere come realizzare in maniera semplice ed efficace un dispositivo RAID-1 Mirror su una macchina FreeBSD.
CREAZIONE DI UN RAID-SOFTWARE CON FREEBSD In questo articolo andremo a vedere come realizzare in maniera semplice ed efficace un dispositivo RAID-1 Mirror su una macchina FreeBSD. Premessa Il sistema è stato provato con FreeBSD versione 6.1/AMD64, con una coppia di dischi SATA 160 GB identici dove ad4 è il primo disco SATA e ad6 il secondo disco SATA. Filosofia Da principio si ragiona come se si avesse a disposizione un disco solo, per cui si partiziona il primo disco (ad4) e si installa il sistema sul primo disco (ad4). Una volta installato il sistema operativo si crea il mirror. Passi operativi Da root eseguiamo: # dd if=/dev/zero of=/dev/ad4 bs=512 count=79 # gmirror label -v -b round-robin gm4 /dev/ad4 Can't store metadata on /dev/ad4: Operation not permitted allora per poter eseguire questo passaggio scriviamo: # sysctl kern.geom.debugflags=16 kern.geom.debugflags: 0 -> 16 # gmirror label -v -b round-robin gm4 /dev/ad4 Metadata value stored on /dev/ad4 # echo geom_mirror_load="YES" > /boot/loader.conf # cp /etc/fstab /etc/fstab.orig # vi /etc/fstab Cambiamo ora ogni ad con gm, e inseriamo mirror dopo /dev. Ad Esempio, /dev/ad4s1a diventa /dev/mirror/gm4s1a. Controlliamo il tutto e riavviaamo il server. Dopo il riavvio eseguiamo: gmirror insert gm4 ad6 dove ad6 è il secondo disco completamente vuoto e non partizionato, in automatico verrà generato il raid, passeranno alcuni minuti, dipendenti dalla dimensione dei dischi usati, prima che l'operazione venga terminata. Per ottenere informazioni sul dispositivo creato eseguiamo: #gmirror list e otteniamo ad esempio: Geom name: gm4 State: DEGRADED Components: 2 Balance: round-robin Slice: 4096 Flags: NONE GenID: 0 SyncID: 1 ID: 1112524699 Providers: 1. Name: mirror/gm4 Mediasize: 160041885184 (149G) Sectorsize: 512 Mode: r6w5e6 Consumers: 1. Name: ad4 Mediasize: 160041885696 (149G) Sectorsize: 512 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: NONE GenID: 0 SyncID: 1 ID: 2889437976 2. Name: ad6 Mediasize: 160041885696 (149G) Sectorsize: 512 Mode: r1w1e1 State: SYNCHRONIZING Priority: 0 Flags: DIRTY, SYNCHRONIZING GenID: 0 SyncID: 1 Synchronized: 73% ID: 2441507996 Comandi Vari # gmirror -help Visualizza l'help di gmirror. # gmirror remove gm0 ad6 Rimuove il secondo disco SATA dal RAID. # gmirror status Name Status Components mirror/gm4 DEGRADED ad4 ad6 (55%) Visualizza lo stato attuale, qui ad esempio il secondo disco è al 55% della fase di rebuilding. # gmirror status Risp. Name Status Components mirror/gm4 COMPLETE ad4 ad6 In questo caso lo status è COMPLETE, allora la costruzione dell'array è terminata. Sostituzione del disco Spegniamo il server,togliamo il disco rotto, inseriamo un disco nuovo della stessa dimensione, riaccendiamo il server ed eseguiamo: # gmirror forget gm4 Eseguendo gmirror forget diciamo al sistema di dimenticarsi di tutti i dispositivi mancanti, nel nostro caso il disco rotto, eseguiamo poi # gmirror insert -v gm4 ad6 in automatico ripartirà il rebuilding del mirror e quando si otterrà # gmirror status Risp. Name Status Components mirror/gm4 COMPLETE ad4 ad6 l'array sarà ripristanato. Fonti http://www.onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html?page=1 http://www.oreilly.com/catalog/cfreebsd/index.html?CMP=ILL-4GV796923290 http://plone.gufi.org Questo documento è stato scritto in LATEX2e ed è disponibile su www.linuxtime.it/enricopirozzi. File Postscript File Pdf Giovedì, 21 settembre 2006DRBD: CLUSTER AD ALTA DISPONIBILITA'
In questo articolo andremo ad esaminare come realizzare un cluster ad alta disponibilità in ambiente linux.
HARDWARE RICHIESTO Cominciamo con il vedere di quale hardware abbiamo bisogno per realizzare un sistema ad alta disponibilità: 2 Personal computer 6 Schede ethernet 1 Cavo seriale di tipo null modem ![]() ![]() Il channel bonding viene realizzato collegando due coppie di schede ethernet con con 2 cavi cross over come in figura SOFTWARE NECESSARIO: La soluzione qui proposta è stata realizzata in ambiente linux, e quello di cui si necessita è: Kernel Linux 2.6.xx Patch drbd per il kernel Heartbeat Tutto quello che segue è stato realizzato su Linux Debian 3.0 DRBD In questo capitolo andremo a vedere come sia possibile patchare un kernel 2.6.xx per avere il modulo drdb all'interno dei block devices del kernel.Se non esiste la prima cosa da fare e' crearsi il file Kconfig_block in /usr/src/linux-2.6.xx/arch/um/. A questo punto si puo lanciare il camando di patch make DIR=/usr/src/linux-2.6.xx kernel-patch. Eseguire poi cd /usr/src/linux-2.6.xx e poi patch -p1 < path-src-drdb/patch-linux-2.6.xx-drdb.0.7.xx. A questo punto si procede normalmente nella ricompilazione del kernel con make menuconfig o equivalenti e nella sezione block devices e' disponibible il modulo drdb, a questo punto tale modulo e' possibile come modulo selezionando oppure e' possibile ricompilarlo come parte integrante del kernel selezionando <*> Creazione del device: Per poter creare il device bisogna lanciare il comando su entrambe i nodi. mknod -m 0660 /dev/drbd0 b 147 0 a questo punto bisogna configurare id device drbd=0 in /etc/drbd.conf resource drbd0 { protocol C; startup { wfc-timeout 1; # 2 minutes. } net { } syncer { rate 100M; } on eva { device /dev/drbd0; disk /dev/sda4; address 192.168.100.1:7788; meta-disk internal; } on eva2 { device /dev/drbd0; disk /dev/hdb1; address 192.168.100.2:7788; meta-disk internal; } } In questo esempio abbiamo creato il network raid utilizzando gli ip interni 192.168.100.x, fatto questo rendiamo attivo il tutto con : drbdadm up all a questo punto eseguendo un cat /proc/drbd avremo come risultato un qualcosa del tipo: 0: cs:Connected st:Secondary/Secondary ld:Inconsistent ns:0 nr:0 dw:0 dr:0 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 Scegliamo ora quale dei due nodi deve diventare primario ed eseguiamo drbdadm -- --do-what-I-say primary drbd0 a questo punto con cat /proc/drbd otterremmo sul primario: 0: cs:SyncSource st:Primary/Secondary ld:Consistent ns:9276 nr:0 dw:0 dr:9404 al:0 bm:2 lo:0 pe:915 ua:32 ap:0 [=========>..........] sync'ed: 50.0% (4380/5000)K finish: 0:00:05 speed: 620 (620) K/sec mentre sul secondario: 0: cs:SyncSource st:Primary/Secondary ld:Consistent ns:12940824 nr:0 dw:87492 dr:13690591 al:109 bm:1668 lo:1000 pe:1876 ua:1000 ap:0 [========>...........] sync'ed: 44.4% (15858/28487)M finish: 0:09:20 speed: 28,933 (25,160) K/sec Ora e' giunto il momento di creare il file system sul device appena creato: mke2fs /dev/drbd0 e di montarlo su una directory esistente ad esempio la /vserver: mount -t ext2 /dev/drbd0 /vserver/ a questo punto il dispositivo network raid è pronto e potete iniziarci a divertirvi facendoci unpo di po' di prove. HEARTBEAT Andiamo ora a vedere ed esaminare heartbeat, quello che si può dire essere il cuore (heartbeat = battito cardiaco) del nostro cluster HA. Per prima cosa smontiamo (umount) la partizione appena creata, e installiamo heartbeat, per sempicità possiamo anche usare un pacchetto pre-compilato, quindi apt o dselect per debian oppure rpm per altre distribuzioni. Una volta installato in /etc.ha.d/ ci sono i files che gestiscono il pacchetto: e sono: ha.cf, haresources,authkeys Partiamo dall'ultimo, authkeys è il file che ci dice come vogliamo che sia fatta l'autenticazione tra i due nodi, siccome nel mio caso i due nodi sono connessi con due cavi cross in configurazione channel bonding ho dato ad authkeys il parametro 1 che sta a significare connessione in chiaro: authkeys: auth 1 Nel file ha.cf invece vengono scritte le configurazioni generali di Heartbeat, quella che ho usato io e' la seguente: ha.cf: debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 keepalive 2 deadtime 20 warntime 10 udpport 694 bcast eth0 baud 19200 serial /dev/ttyS0 watchdog /dev/watchdog auto_failback off respawn hacluster /usr/lib/heartbeat/ipfail node eva node eva2 initdead 20 Infine il terzo, ma forse il più antipatico è il file haresources, nel quale viene scritto dove il cluster va a procurarsi le risorse e come le deve usare: haresources: eva IPaddr::192.168.1.180/28/eth0 \ drbddisk::drbd0 \ Filesystem::/dev/drbd0::/vserver::ext2 apache La prima riga dice a quale ip deve rispondere il cluster e quale deve essere il nodo che si preferirebbe essere primario. Nel nostro caso si tratta di eva il nodo e l'ip è 192.168.1.180, occhio che questo ip non deve essere presente sulla lan e deve essere diverso dagli ip fisici dei due pc, in pratica è un alias che a seconda delle situazioni del sistema si può trovare sulla macchina primaria o su quella secondaria. Gli script drbddisk,FileSystem e apache e qualunque altra cosa si voglia fare, vanno messi dentro la directory resource.d, in questo caso drbdbdisk è copiato da /path_drbd_sorgenti/drbd-0.7.11/scripts e dice ad heartbeat come far pasare un disco da secondario a primario e viceversa; FileSystem invece ce lo da heartbeat e serve per montare e smontare il device drbd0, inoltre aggiungendo lo script apache si fa ripartire apache in caso di cambio di contesto tra le due macchine. CHANNEL BONDING Tramite channel bonding è possibile far vedere due schede di rete come se fossero una sola rispondendo quindi come se fossero un unico ip, in questo modo si riescono ad avere molteplici benefici: bilanciamento del carico sulle due schede aumento di prestazioni in caso di doppio canale condiviso diminuzione del SPOF sulla scheda di rete, nel senso che anche se una scheda si rompe il sistema continua ad andare avanti lo stesso. Per realizzare un channel bonding, bisogna innanzi tutto abilitare l'opzione del kernel sul channel bonding, installare il pacchetto ifenslave appropriato per la propria versione del kernel, e poi modificare il file interfaces in /etc/network: auto bond0 iface bond0 inet static address 192.168.1.218 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.254 up ifenslave -f bond0 eth0 eth1 ed il gioco è fatto. LINKS HeartBeat: http://www.linux-ha.org/ Drbd: http://www.drbd.org/ Kernel Linux: http://www.kernel.org/ CONTATTI Articolo scritto da Enrico Pirozzi scotty@linuxtime.it - www.linuxtime.it/enricopirozzi
(Pagina 1 di 1, in totale 4 notizie)
|
CategorieQuesta opera è pubblicata sotto licenza Creative CommonsPer ContattiPowered byRicerca veloce |