Friday, July 23, 2010

Tricks for Red Hat Cluster Suite (RHCS) - IP sleeptime

Ma ocupam zilele acestea de configurarea unui cluster Red Hat (RHEL 5.5, system-config-cluster-1.0.57) si am dat de urmatoarea situatie: mutarea unui serviciu de pe un nod pe altul dureaza aproximativ 11 secunde.

Serviciul contine doar definitia unei adrese IP de genul:
<ip address="10.10.10.101" monitor_link="1"/>
iar colegii mei s-au aratat mirati de acest lucru.

Verificand logurile de cluster am gasit ca aproximativ 10 secunde sunt "pierdute" la oprirea serviciului:
Jul  1 12:44:37 node2 clurgmgrd[9896]:  Stopping service service:ipA
Jul  1 12:44:37 node2 clurgmgrd: [9896]:  Removing IPv4 address 10.10.10.101/24 from eth2
Jul  1 12:44:47 node2 clurgmgrd[9896]:  Service service:axigenA is stopped
Jul  1 12:44:47 node2 clurgmgrd[9896]:  Sent remote-start request to 1
Jul  1 12:44:50 node2 clurgmgrd[9896]:  Service service:axigenA is now running on member 1

Am facut o scurta verificare in script-ul asociat resursei IP (ip.sh) si am descoperit cauza:
# XXX Let nfsd/lockd clear their queues; we hope to have a
# way to enforce this in the future
if [ -z "$OCF_RESKEY_sleeptime" ]; then
 sleep 10
else
 if [ "$OCF_RESKEY_sleeptime" -gt "0" ]; then
  sleep $OCF_RESKEY_sleeptime
 fi
fi

Tentatia a fost sa modificam sleep 10 in sleep 3 insa am gasit ca exista parametrul sleeptime care poate fi specificat pentru respectiva resursa:
<parameter name="sleeptime">
 <longdesc lang="en">
  Amount of time to sleep after removing an IP address.
  Value is specified in seconds. Default value is 10.
 </longdesc>
 <shortdesc lang="en">
  Amount of time (seconds) to sleep.
 </shortdesc>
 <content type="string"/>
</parameter>

Am modificat resursa respectiva in fisierul cluster.conf de pe unul din noduri si am vrut sa propagam configuratia catre restul nodurilor (prin intermediul system-config-cluster) insa am avut surpriza sa constatam ca fisierul este considerat invalid.


Dupa cateva cautari am gasit raportul unui bug, raportat inca din Martie 2009. Dupa adaugarea in fisierul cluster.ng a unei reguli de validare pentru parametrul sleeptime totul a fost in regula.

Tuesday, May 11, 2010

Cum controlam accesul copilor la internet?

Problema: se dau 2 copii (10, respectiv 7 ani) care descopera calculatorul si Internet-ul insa "uita" ca li s-a acordat un interval de timp (30-45 de minute). In plus, din link in link pot ajunge pe unde nici nu banuiesti.

Pana de curand am folosit programul Blue Coat K9 care este foarte util la filtrarea site-urilor insa nu ofera suport pentru limitarea timpului petrecut online (in afara setarii unor intervale in care accesul la Internet este permis). Dupa cateva cautari am gasit programul PGsurfer (de asemenea free + adresa de mail pentru activare) pe care l-am instalat aseara si, la prima vedere, pare ceea ce cautam.

Contorizarea timpului online se face destul de simplist - in sensul existentei unui buton de tip Start/Stop Internet care porneste sau opreste cronometrul. Desigur ca aceasta optiune apare doar daca s-a activat limitarea timpului online. Cel mai putin poate fi selectata 1 ora, cu optiunea de contorizare per zi/sapatamana sau luna.

In afara de setarile de tip orar mai exista o multitudine de alte setari (site-uri blocate explicit, keywords, blocare aplicatii, blocare IM, email-uri, etc.) insa nu am apucat sa le testez.

Ce nu-mi convine este ca trebuie definiti utilizatori noi - mi-ar fi placut ca setarile sa fie asociate cu utilizatorii de Windows si nu cu cei de PGsurfer. Dar fiind free nu am ce sa comentez.

Ramane de vazut cum se vor obisnui membrii familiei cu el - daca trece o luna si setup-ul rezista inseamna ca am dat "lovitura".

Thursday, April 01, 2010

How to generate the patch diff file

Nu sunt familiarizat cu generarea fisierelor de patch pentru programele de tip script si de aceea acest post este destinat mai mult pentru "arhiva".

  1. Se copiaza script-ul original cu sufixul .orig (de ex. test.pl.orig)
  2. Se fac modificarile in script
  3. Se testeaza
  4. Se genereaza fisierul de patch prin comanda:

diff -u test.pl.orig test.pl > /tmp/patch.test-pl.txt

Pentru a executa fisierul de patch generat se va rula comanda de mai jos in directorul in care se afla fisierul ce trebuie modificat.
patch -p0 < /tmp/patch.test-pl.txt