Bookmark and Share
Document Actions

Montare ZODB multipli
difficile

Questo how to mostra come montare ZODB multipli sulla stessa istanza utilizzando il nostro buildout. La guida è valida sia per una installazione Zope standalone che con un cluster ZEO.

Scopo

Non tutti sanno che è possibile montare più di uno ZODB alla vosta sulla stessa istanza.

Questa operazione in generale può essere fatta per:

  • facilitare i backup, per esempio mettendo capienti folder o interi portali su un DB separato
  • avere un migliore parallelismo in scrittura separando i database
  • separare il portal_catalog tool su un DB separato e modificare la object cache, in modo tale da avere sempre il numero più alto di brain possibile nella cache ed avere un Plone più reattivo

In questa guida mostreremo come portare il nostro portal_catalog su ZODB separati, sia nel caso di installazione Zope standalone che con uno ZEO cluster. Inoltre

E'importante effettuare questa configurazione soprattutto quando si ha a che fare con grossi portali o intranet.

Requisiti

Questa guida presuppone l'utilizzo di un buildout. Non è difficile applicare le stesse operazioni su una istanza tradizionale.

Passo passo

Mostreremo qui di seguito le istruzioni per montare su un DB separato il catalogo utilizzato da Plone ed ottenere quindi un sistema più performante.

ZODB separato su un'istanza Zope standalone

Supponiamo di avere nella root della nostra istanza Zope un Plone site con id pari a myplone.

Ferma l'istanza Zope con un:

$ ./bin/instance stop

Clona il Data.fs contenente il nostro Plone site myplone:

$ cp var/filestorage/Data.fs var/filestorage/CatalogData.fs

Ora modificheremo il buildout.cfg aggiungendo alla sezione [instance] l'opzione zope-conf-additional la registrazione del nostro mount point, come mostrato qui sotto. Modifica la configurazione del tuo buildout.cf come segue:

zope-conf-additional =
  <zodb_db catalog>
    # Catalog database
    <filestorage>
      path ${buildout:directory}/var/filestorage/CatalogData.fs
    </filestorage>
    mount-point /myplone/portal_catalog:/myplone/portal_catalog
    container-class Products.CMFPlone.CatalogTool.CatalogTool
    cache-size 10000
  </zodb_db>

Qui specifichiamo che andremo a "innestare" il portal_catalog presente sul CatalogData.fs nella posizione /myplone/portal_catalog del Data.fs principale. In questo caso sono uguali in quanto abbiamo clonato il Data.fs ma in generale il primo /myplone/portal_catalog dell'opzione mount-point si riferisce alla posizione di innesto sul Data.fs principale; la seconda invece indica l'area da montare sul CatalogData.fs.

Metti inoltre un cache-size adeguato, cercando di mantenere in cache il numero più alto possibile di brain (questo valore dipende da quanta memoria vuoi utilizzare e dal server che si utilizza).

Naturalmente modifica la configurazione mettendo impostazioni (come la container-class che deve essere coerente), path e nomi di file corretti a seconda del tuo caso.

Questa configurazione verrà resa effettiva non appena lanceremo lo script buildout e riavvia l'istanza, come segue:

$ ./bin/buildout

$ ./bin/instance start

Abbiamo quasi terminato.

Ora vai sulla ZMI sul tuo /myplone e CANCELLA il portal_catalog tool. Non preoccuparti: il tuo sito non sarà compromesso per sempre! A questo punto non devi fare altro che aggiungere dalla ZMI la voce ZODB Mount Point, seleziona il nostro mount point senza modificare altre impostazioni e conferma.

Sul seguente url http://localhost:8080/Control_Panel/Database/manage_main potrai verificare che è in utilizzo il nostro ZODB separato per il catalogo e verificare che i parametri di cache siano impostati correttamente.

Fatto!

ZODB separato su un cluster ZEO

Seguendo le istruzioni di questa sezione faremo servire allo ZEO Server del nostro cluster il portal_catalog tool del nostro portale Plone myplone su uno ZODB separato rispetto a quello principale. Quindi lo ZEO Server condividerà con gli ZEO Client che serviranno le richieste degli utenti sia il Data.fs che quello relativo al catalogo.

L'iter è molto simile alla configurazione precedente dal punto di vista logico. Quindi si fermerà lo ZEO cluster, si clonerà il Data.fs e si effettuerà la seguente configurazione sul buildout.cfg (in grassetto sono evidenziate le aggiunte rispetto ad una esistente configurazione ZEO):

[zeo]
recipe = plone.recipe.zope2zeoserver
...
zeo-conf-additional = 
  <filestorage 2>
     path ${buildout:directory}/var/filestorage/CatalogData.fs
  </filestorage>

[instance01]
recipe = plone.recipe.zope2instance
...
zope-conf-additional =
  <zodb_db catalog>
    mount-point /myplone/portal_catalog
    container-class Products.CMFPlone.CatalogTool.CatalogTool
    cache-size 10000
    <zeoclient>
      server ${zeo:zeo-address}
      storage 2
      name catalogstorage
      var ${buildout:parts-directory}/instance01/var
      cache-size 400MB
    </zeoclient>
  </zodb_db>
  <environment>
    DISABLE_PTS 1
    TEMP ${buildout:directory}/tmp
  </environment>

Una volta rilanciato lo script buildout si può riavviare il cluster. Dopo di ciò non bisogna fare altro che cancellare il portal_catalog tool dal nostro Plone site ed aggiungere il mount come fatto nella sezione precedente.


Note

  • Una volta montato il nuovo ZODB il lavoro principale dovrebbe essere terminato. Tuttavia per velocizzare ulteriormente il proprio portale a questo punto sarebbe necessario effettuare un tuning dei parametri di configurazione sia del mount dello ZODB che riguardo caratteristiche proprie dei singoli zeo client. Naturalmente i parametri di configurazione effettivi variano a seconda delle caratteristiche del proprio server e dell'ambiente applicativo che si vuole pubblicare e quindi non verrà discusso in questa guida.
  • Per concludere un'ulteriore operazione da effettuare potrebbe essere quella di "pulire" lo ZODB clonato, lasciando solo la cartella da montare ed eliminando tutto il resto
by Davide Moro last modified 2009-01-14 17:56
 

Supporto

Ottieni un
aiuto veloce e mirato sul forum, gratis!

partecipa al forum

 

Segui le icone

 

Livelli di difficoltà

livello guruSolo per i "guru"!
livello avanzatoPer configuratori e sviluppatori
livello medioPer chi ha già familiarità
livello basePer tutti!

 

I video

video

Il documento è supportato da un video!