23/11/2011

Windows cluster forcecleanup

Windows riesce sempre a sorprenderti, quando pensi di aver raggiunto una livello di esperienza professionale tale da poter dire con fare soddisfatto “ho visto sfighe che voi uomini non potete immaginare…”, ecco che in quel momento ti capita tra capo e collo un cluster Windows claudicante da riportare sulla retta via.

Personalmente non ho mai visto di buon occhio questa tecnologia, ho installato e configurato alcuni cluster active/passive su distribuzioni RedHat, ma su Windows mi ha sempre indispettito questo alone di mistero che si frappone tra utente e risorse del cluster, oppure il fatto che fosse necessario un dominio Active Directory per fare qualcosa che una banale RedHat fa con un file xml editabile con vi.

La situazione di partenza è la seguente:

  • OS Windows Server 2003 Enterprise
  • storage su SAN FC definito come risorsa di cluster
  • server disconnesso dal dominio Active Directory con indirizzi e hostname differenti rispetto alla condizione di normale funzionamento del cluster

L’obbiettivo è riportare il server ad essere un sistema stand-alone con risorse indipendenti (in particolare lo storage) dal cluster Windows.

A tal proposito Microsoft viene in soccorso con il seguente articolo; se siete fortunati vi basterà lanciare il comando che segue ottenendo il risultato sperato:

C:\>cluster node /forcecleanup
Attemping to clean up node 'clustest01' ...
Clean up successfully completed.

Tornate dal vostro manager e bullatevi di fronte ai colleghi (che ovviamente ignoreranno ogni dettaglio riguardante il problema e vi guarderanno come il tipico nerd alieno :\ )

Se invece siete sfortunati come il sottoscritto e quando attraversate la strada anche i gatti neri “si toccano” invece otterrete:

C:\>cluster node /forcecleanup
Attemping to clean up node 'clustest01' ...

System error -2147352567 has occuerred (0x80020009).
Exception occurred.

A questo punto non fatevi prendere dal panico e verificate quanto segue:

  • log del servizio di clustering nel percorso C:\WINDOWS\system32\LogFiles\Cluster
  • aprite il registro di sistema lanciando il comando regedit e verificate che il valore della chiave di registro
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Currentversion\Cluster Server\ClusterInstallationState sia settato a ‘2’
    Nel caso non lo fosse modificatela in modo che abbia quel valore, riavviate e riprovate a lanciare il comando di forcecleanup

Nel caso in cui la modifica della chiave di registro ClusterInstallationState non abbia sortito gli effetti sperati non vi resta che passare alla soluzione radicale…
NO FERMI! Lasciate stare il cd di installazione! Reinstallare il sistema operativo per un problema ad un servizio è da noob :)

Procedete in questo modo:

  1. utilizzando regedit effettuate il backup delle chiavi di registro:
    – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusNet
    – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusSvc
    – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusDisk\Parameters
    – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusDisk\Enum
  2. backup dei file/directory:
    – C:\WINDOWS\Cluster\MSCS\
    – C:\WINDOWS\Cluster\CLUSDB
  3. utilizzando regedit cancellare le chiavi di registro indicate al punto 1 e i file/directory indicati al punto 2
  4. modificate la chiave di registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Currentversion\Cluster Server\ClusterInstallationState settando il valore a ‘1’
  5. riavviate il sistema operativo
  6. rilanciate il comando “cluster node /forcecleanup”, ora l’esecuzione dovrebbe essere andata a buon fine e le risorse di storage dovrebbero essere tornate accessibili come lun indipendenti.
  7. YEPPA!

22/11/2011

Esportare log.nsf in formato testo

Come qualunque sistemista potrà confermarvi i log sono l’essenza stessa di questo lavoro.
Il log sono la fonte di conoscenza suprema, sono la chiave di volta del processo di problem solving, i log sono la luce in fondo al tunnel :)

Lotus Domino di default ha il brutto vizio di scrivere i log in un database (solitamente log.nsf) ruotando i log stessi in differenti documenti, un sistema che per certi versi può risultare comodo e funzionale, per altri una fonte inesauribile di mal di testa e maledizioni.
Esistono apposite opzioni per far loggare il servizio in append ad un file di testo su filesystem, nella vita però si sa che “la fortuna è cieca ma la sfiga vede anche i raggi gamma” (cit) e non sempre è possibile modificare la configurazione per abilitare queste features.

Per chi dovesse trovarsi in questa situazione segnalo un semplice agente Lotuscript in grado di esportare in un file di testo (c:\temp\out.txt) il body dei documenti selezionati da una vista del database log.nsf

Sub Initialize
    Dim session As NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim stream As NotesStream

    Set session = New NotesSession
    Set db = session.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument

    Set outStream = session.CreateStream
    If Not outStream.Open("c:\temp\out.txt", "binary") Then
        Messagebox outPath,, "Open failed"
        Exit Sub
    End If
    If outStream.Bytes <> 0 Then
        Messagebox outPath,, "File exists and has content"
        Exit Sub
    End If

    While Not(doc Is Nothing)
        Forall voce In doc.EventList
            Call outStream.WriteText(voce )
            Call outStream.WriteText(Chr(13) & Chr(10))
        End Forall

        Set doc = dc.GetNextDocument(doc)
    Wend
End Sub

Come qualunque sistemista potrà confermarvi, i log sono l’essenza stessa di questo lavoro.
Il log sono la fonte di conoscenza suprema, sono la chiave di volta del processo di problem solving, i log sono la luce in fondo al tunnel :)

Lotus Domino di default ha il brutto vizio di scrivere i log in un database (solitamente log.nsf) ruotando i log stessi in differenti documenti, un sistema che per certi versi può risultare comodo e funzionale, per altri una fonte inesauribile di mal di testa e maledizioni.
Domino prevede apposite opzioni per far loggare il servizio in append ad un file di testo su filesystem, purtroppo però non sempre è possibile modificare la configurazione per abilitare queste features.

Per chi dovesse trovarsi in questa situazione segnalo un semplice agente Lotuscript in grado di esportare in un file di testo (c:\temp\out.txt) il body dei documenti selezionati da una vista del database log.nsf