howto

You are currently browsing articles tagged howto.

I modi possono essere diversi ma ci sono comunque una serie di best pratices che possono essere sempre applicate….

  • Disabilitare hostname lookup: generalmente è inutile e si evita di fare connessioni a raffica ai DNS.
    Va disabilitato in /etc/mysql/my.cnf[mysqld]

    ….
    skip-name-resolve
  • Attivare la cache delle query: verifica lo stato del Query Cache
    mysql> show status like 'Qcache%';
    +-------------------------+----------+
    | Variable_name | Value |
    +-------------------------+----------+
    | Qcache_free_blocks | 483 |
    | Qcache_free_memory | 12579128 |
    | Qcache_hits | 48752 |
    | Qcache_inserts | 33533 |
    | Qcache_lowmem_prunes | 0 |
    | Qcache_not_cached | 28295 |
    | Qcache_queries_in_cache | 3092 |
    | Qcache_total_blocks | 6958 |
    +-------------------------+----------+
    8 rows in set (0.00 sec)
    

    Se necessario verifica le variabili di impostazione della query cache:

    mysql> SHOW VARIABLES LIKE '%query_cache%';
    +------------------------------+----------+
    | Variable_name | Value |
    +------------------------------+----------+
    | have_query_cache | YES |
    | query_cache_limit | 1048576 |
    | query_cache_min_res_unit | 4096 |
    | query_cache_size | 25165824 |
    | query_cache_type | ON |
    | query_cache_wlock_invalidate | OFF |
    +------------------------------+----------+
    6 rows in set (0.00 sec)
    

    Le opzioni vanno inserite in /etc/mysql/my.cf
    [mysqld]


    query_cache_size = 52428800;
    query_cache_type = 1

Tags: , , ,

Non lo avevo mai installato. Non dovrebbe essere una cosa diversa da tutte le altri distribuzioni ma ho notato una cosa: non mi andava niente nel processo di installazione. Dopo alcune verifiche ho notato che Oracle usa comunque su un sistema solo 64bits le librerie a 32bits di molti package per il relink dei vari pezzi.

La cosa onestamente mi giunge veramente strana… è vero che è comune nei sistemi linux mixare 32bits e 64bits a differenza di sistemi come solaris che sono solamente a 64bits.. però perchè mai devi linkare roba a 32bits se io ho un sistema, una distribuzione e l’applicazione stessa a 64bits?!

Tags: , , , ,

Using a Windows 2003 domain controller as Kerberos Key Distribution Center to use a Single Sign-On with a Linux systems can be very hard. Windows Kerberos implementation simply sucks. Trying to solve some problem integratis Bladelogic SSO using a Ticket Granting-Ticket provided from a Windows KDC makes me able to understand some tricks:

Tags: , , , ,

Maybe we have to do many considerations about the right and the best way for a monitoring using or not agents. Of course we have to exclude all appliances, network devices and the rest of hardware where there’s no the possibility to install an agent. But, for all others systems, which is the best solution? Agent or not?

First of all, many softwares (almost all) use agentless way to monitor remote system. This due to reduce costs, no needed to create an agent for any operating system and also to maintain it, a simpler interface. Use of agents usually is reserved for enterprise software and introduce higher costs (you have to pay server and any agent) and an heavy management….

Agentless softwares have many limits in complex network envirnoment or every time you’ve to cross a NAT. Also standard used from agentless systems is the SNMP that is not really standard between architecture and platform. The most standard SNMP is the Net-SNMP that has really many problems, also security problems, and cannot work in the same way between all platforms. Also, agentless can’t always be proactive. Yes, you can send an alert, maybe an SNMP trap to your server, but there’s no a two-way channel where the SNMP is a standalone agent able to detect and solve problems.

Agent monitoring is the only, right, solution. Agent is autonomous, can contact one, two or many management server at the same time, is the only responsible to monitor itself and the system where it’s installed. The only network requirement is that agent have to be able to reach the server IP at the specified port, and this is possibile even if the agent is in a private backend. For security this is a good thing as you do not have to open a port or more to the requests coming from outside, but you’ve only to permit traffic from internal to an outside system and a specified port. Tunnel between agent and server is opened by the agent. Usually agents are able to monitor not only system but also applications and export metrics always in the same way (sure where the needed metric is applicable).

Agent-based monitoring is the last chance to monitor a complex environment with different networks, security policies, various operating systems, and so on….

For me the worst monitoring systems are Nagios (for freeware) and BMC Patrol (for payware). The best are Hyperiq HQ (for freeware) and HP OpenView. A special attention should be dedicated to Microsoft System Center Suite, in particular System Center Operations Manager 2007.

Tags: , , , , , , ,

Avevo bisogno di installare ESX server 3 (che poi è una redhat Enterprise 3 con i moduli VMWare) su una macchina con dei dischi SATA. Ufficialmente VMWare dichiara che il prodotto ESX (meglio conosciuto ora come VMWARE Infrastructure) non è installabile su dischi locali ma solo su device iSCSI o NAS in quanto è un prodotto enterprise e quindi va bene così. In effetti sarebbe buona cosa, ma il problema è che il mio server di base è un entry level di ACER che a malapena sa cosa sia un controller raid.

Su internet ho trovato un HOWTO che banalmente suggeriva durante il processo di installazione di aprire una console (CTRL+ALT+F2), con ifconfig attivare la scheda di rete e usare scp per richiamare i due moduli SATA che sono ata_piix.o e libata.o, fare un insmod e via. Io ho provato. Per comodità ho usato una chiavetta USB che viene normalmente riconosciuta senza problemi da ESX, montata in una directory temporanea e un buon insmod dei moduli.

Il problema è che ESX carica i moduli, vede perfettamente i due dischi, ma il kernel di base, che è già modificato da VMWare, in qualche modo ti limita o ti impedisce l’utilizzo. Di fatto tu hai i device caricati ma non puoi accedere. Non ho spiegazione.

Tags: , , , , , ,

Dopo VMWare, è il caso di iniziare a provare lo zones di solaris. Zones è un tool, un software, una collection di comandi, non come definirla bene, inclusa ovviamente in Solaris 10. Zones va a nozze con i nuovi hardware Sun multicore, questo perchè, come sulle versioni ESX di vmware, c’è la possibilità di controllare le risorse hardware in modo molto preciso, quindi si può, su un Sun T2000 con 8 core, creare 2 zone che usano 2 core, e tre zone con un core ciascuno.

Zones è configurabile in due modi diversi: nel primo caso la zona creata in realta condivide col sistema base alcune directory, in particolare /usr /lib /sbin /platform . Questo fa si che lo spazio disco occupato dalla zona sia di poco più di 100 mega. La zona infatti ha riservate /etc e /var.

I comandi da imparare sono zonecfg, zoneadm, zlogin.

Creiamo la nostra zona:

# zonecfg -z zonaditest
zonaditest: No such zone configured
Use ‘create’ to begin configuring a new zone.
zonecfg:small-zone> create
zonecfg:small-zone> set autoboot=true
zonecfg:small-zone> set zonepath=/export/zonaditest
zonecfg:small-zone> add net
zonecfg:small-zone:net> set address=192.168.1.101
zonecfg:small-zone:net> set physical=hme0
zonecfg:small-zone:net> end
zonecfg:small-zone> info
zonepath: /export/zonaditest
autoboot: true
pool:
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 192.168.1.101
physical: hme0
zonecfg:small-zone> verify
zonecfg:small-zone> commit
zonecfg:small-zone> exit

Analizziamo. Abbiamo lanciato il comando zonecfg per configurare la zona. Il sistema ci ha detto che la zona non esiste e inizia la configurazione ex-novo. In realtà è tutto abbastanza chiaro. Il parametro create verrà ripreso successivamente perchè merita il disco sull’argv -b che permette di create una zona senza inherit-pkg con la global zone.

Se volessimo creare una zona a se stante, senza inhinerit packages, dovremmo agire così:

# zonecfg -z zonaditest2
zonaditest2: No such zone configured
Use ‘create’ to begin configuring a new zone.
zonecfg:small-zone> create -b
zonecfg:small-zone> set autoboot=true
zonecfg:small-zone> set zonepath=/export/zonaditest2
zonecfg:small-zone> add net
zonecfg:small-zone:net> set address=192.168.1.102
zonecfg:small-zone:net> set physical=hme0
zonecfg:small-zone:net> end
zonecfg:small-zone> info
zonepath: /export/zonaditest2
autoboot: true
pool:
net:
address: 192.168.1.102
physical: hme0
zonecfg:small-zone> verify
zonecfg:small-zone> commit
zonecfg:small-zone> exit

Come prima, l’unica differenza è l’argv -b nel comando create. Una zona senza inhinerit packages occupa però molto di più, nel mio caso 3giga, diciamo 2/3 dello spazio occupato dal vostro sistema solaris base.

Solaris crea in /etc/zones dei profili xml per ogni zona. Prendiamo la zonaditest2:

# cat /etc/zones/zonaditest2.xml
< ?xml version=”1.0″ encoding=”UTF-8″?>
< !DOCTYPE zone PUBLIC “-//Sun Microsystems Inc//DTD Zones//EN” “file:///usr/share/lib/xml/dtd/zonecfg.dtd.1″>

< zone name=”zonaditest2″ zonepath=”/export/zonaditest2″ autoboot=”true”>
< network address=”192.168.1.102″ physical=”hme0″/>
< /zone>

Abbastanza semplice. Il resto nella prossima parte.

Tags: , , , ,

Solaris ha un sistema particolare di Raid software, sicuro e raffinato. Potrebbe essere configurabile via SMC (Solaris Management Console) ma a mano è più facile e si fa prima.

Ovviamente valgono le regole base di tutti i raid: 2 dischi uguali e partizioni identiche. A differenza di Linux è necessario su Solaris lasciare una slice (tipicamente da 300/400 mb) per le informazioni relative al SVM Replica. Supponiamo quindi che il nostro disco sia così configurato:

slice 0 root
slice 1 swap
slice 3 var
slice 4 Kernel crash dump
slice 7 SVM Replica

Copiamo la tabella delle partizioni dal primo disco (c0t0d0) al secondo disco (c1t0d0)

# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s – /dev/rdsk/c1t0d0s2

Ora dobbiamo creare il database per la replica, uno sul primo disco e uno sul secondo.

# metadb -a -f -c 2 c0t0d0s7
# metadb -a -c 2 c1t0d0s7

Una considerazione: il raid su Solaris non è mai un raid 1 puro, ma un raid 0+1, quindi è necessario prima attivsare un concat su ogni slice e poi fare il raid 1 delle partizioni in raid 0.

# metainit -f d10 1 1 c0t0d0s0
d10: Concat/Stripe is setup
# metainit -f d11 1 1 c0t0d0s1
d11: Concat/Stripe is setup
# metainit -f d13 1 1 c0t0d0s3
d13: Concat/Stripe is setup

Per il primo disco, e ora per il secondo:

# metainit -f d20 1 1 c1t0d0s0
d20: Concat/Stripe is setup
# metainit -f d21 1 1 c1t0d0s1
d21: Concat/Stripe is setup
# metainit -f d23 1 1 c1t0d0s3
d23: Concat/Stripe is setup

Adesso sempre con il comando metainit inizializziamo il raid 1 inserendo nel mirror solo le varie slice in raid 0 del primo disco:

# metainit d0 -m d10
d0: Mirror is setup
# metainit d1 -m d11
d1: Mirror is setup
# metainit d3 -m d13
d3: Mirror is setup

Utilizzamo il comando metaroot per specificare che il boot va fatto dal raid, mirror d0:

# metaroot d0

Ora dobbiamo modificare il file /etc/vfstab per fare in modoche il sistema monti le partizioni dal mirror e non singolarmente dal disco. Essenzialmente va modificato il device da montare, che non deve più essere il disco ma la posizione mirror del raid:

/dev/md/dsk/d1     –                             –          swap   –     no     -
/dev/md/dsk/d0     /dev/md/rdsk/d0     /          ufs     1     no     logging
/dev/md/dsk/d3     /dev/md/rdsk/d3     /var     ufs     1     no     logging

E’ arrivato il momento atteso. Fate il riavvio del vostro sistema. Incrociate le dita e sperate bene! Una volta fatto il riavvio non vi resta altro da fare che attaccare i raid 0 del secondo disco. Sempre con il comando metainit, come prima, fare:

#metattach d0 d20
#metattach d1 d21

#metattach d3 d23

Adesso il vostro sistema inizierà a mirrorare i dischi. Utilizzate il comando metastat per controllare lo stato del mirroring, in questo modo:

metastat d0

Dovreste ottenere un output simile a questo:

-bash-3.00# metastat d0
d0: Mirror
Submirror 0: d10
State: Okay
Submirror 1: d20
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 14339072 blocks (6.8 GB)
d10: Submirror of d0
State: Okay
Size: 14339072 blocks (6.8 GB)
Stripe 0:
Device     Start Block  Dbase        State Reloc Hot Spare
c0t0d0s0          0     No            Okay   Yes

d20: Submirror of d0
State: Okay
Size: 14339072 blocks (6.8 GB)
Stripe 0:
Device     Start Block  Dbase        State Reloc Hot Spare
c1t0d0s0          0     No            Okay   Yes

Probabilmente voi leggerete Mirroring XX% nello stato del secondo Submirror.

Per ultimo, attivate, la slice di dump per i kernel crash:

# dumpadm -d /dev/dsk/c0t0d0s4

Fine.

Mi raccomando, leggetevi il capitolo Volume Management del Sun Administration Book. E cercate di non fare danni. I dati sono vostri. Un bel backup prima di iniziare.

Tags: , , , , ,