Ciao ragazzi,
Giro la cosa anche a voi, sai mai mi sappiate dare una mano
Sto sbattendo un po' la testa su un problema: un amico ha una piccola società +sito, e l'architettura attuale non va alla grande. Ora, io mi ci metterò ovviamente e farò le mie considerazioni..ma mi piacerebbe sapere il vostro parere, se ve ne intendete..e anche se per caso conoscete persone davvero esperte nel settore a cui chiedere un paio di dritte / consulenze (pagate, ovviamente) con possibilità di collaborazione futura.
Qua sotto quel che ho tirato fuori sinora:
Architettura di sistema
3 webserver: web2, web3, web4 (raid5)
1 dbserver: db1 (RAID 10)
1 loadbalancer: cisco 11501s
1 cdn
*web2*
CPU 8core - RAM 46GB - 512GB spazio disco
OS: Red Hat Enterprise Linux Server release 5.6 (Tikanga) - kernel: 2.6.18-238.9.1.el5 - x86_64
WEBSERVER: Server version: Apache/2.2.3
Server built: Sep 9 2011 09:00:29
PHP: PHP 5.2.17
ZEND: Zend Server 5.6.0
Zend Framework 1.11.11
NFS: 1.0.9-50.el5 (x86_64)
Magento: v.1.4.1.1
*web3/web4*
CPU 12core - RAM 46GB - 512GB spazio disco
OS: Red Hat Enterprise Linux Server release 5.6 (Tikanga) - kernel: 2.6.18-238.12.1.el5 - x86_64
WEBSERVER: Apache/2.2.3 (Red Hat)
PHP: PHP 5.2.17
ZEND: Zend Server 5.6.0
Zend Framework 1.11.11
Magento: v.1.4.1.1
*db1*
CPU 8core - RAM 46GB
OS: Red Hat Enterprise Linux Server release 5.6 (Tikanga) - kernel: 2.6.18-238.12.1.el5 - x86_64
DB: mysql 5.1.56
*LB*
Cisco 11501s
*CDN*
la CDN e’ hostata presso Rackspace, e fornisce le immagini del catalogo.
Note:
Al momento il sito si basa su Magento, che obbliga a usare le sticky sessions.
Il load balancer è configurato per scegliere i server secondo l'algoritmo "least connections".
Web2 esporta via NFS buona parte delle immagini agli altri webserver. Altre immagini sono all'interno della struttura del codice di Magento.
Fino a poco tempo fa web2 fungeva da webserver e forniva le immagini, ma questo rallentava molto e faceva da collo di bottiglia, quindi ora e' stato tolto dal load balancer e serve solo le immagini. Questo ha migliorato la situazione ma e’ sotto-utilizzato.
In un prossimo futuro l'intenzione è quella di riprogettare il sito senza Magento.
Tutte le macchine ora sono fisiche, mentre nella nuova architettura prevedono di utilizzare macchine virtuali.
RFC:
Al mio amico interessa sapere come migliorare l’architettura attuale temporaneamente, in previsione di una crescita degli accessi al sito; e come progettare la nuova architettura.
Al momento il problema principale e’ che riscontra un carico non ben distribuito, soprattutto nei momenti di maggiore afflusso.
Quello che succede e’ che in alcuni casi uno dei webserver (alternativamente succede su tutti) sembra che venga visto dal load balancer come down anche se in realta’ e’ accessibile e scarico.
In particolare le domande che mi sono fatto io è capire, nel suo contesto:
- qual e’ il modo ottimale per servire le immagini e i contenuti statici
- se e’ opportuno riaggiungere web2 al bilanciatore o se e’ meglio tenere un server solo per le immagini e i contenuti statici
- come configurare il load balancer per sfruttarlo al meglio e ottenere un bilanciamento ottimale dei frontali
- se e’ meglio centralizzare o decentralizzare la cache (zend data cache, full page cache)
Secondo me non ha senso buttare tempo e soldi in un'architettura sorpassata. Azienda piccola, soluzione web based -> metto tutto su Cloud.
Ma..meanwhile? Grazie mille per ogni possibile hint!
Manu