http://issues.alfresco.com/jira/browse/ALF-10319?page=com.atlassian.streams.streams-jira-plugin%3Aactivity-stream-issue-tab
Así pues, sigo recomendando actualmente una estructura más adecuada y ya analizada en el anterior artículo: http://www.fegor.com/2011/09/arquitecturas-cluster-en-alfresco.html
—-
A la hora de elaborar una arquitectura en alta disponibilidad y en la parte de balanceo de carga hacia los nodos podemos usar varios escenarios.
En este primer escenario vamos a usar el siguiente sistema:
Aquí se usan dos balanceadores, por un lado para las comunicaciones en SMB (CIFS) y otra para el acceso a través del cliente web (HTTP).
Para el acceso a través de los protocolos SMB/CIFS y HTTP se utilizará HAProxy, un magnífico programa que es capaz de gestionar comunicaciones en alta disponibilidad y balancear a nivel de protocolo TCP y dentro de este, el HTTP.
En este contexto, un fichero de configuración para HAProxy (/etc/haproxy.conf) podría ser:
maxconn 32000
defaults applications HTTP
log global
mode http
option httplog
option forwardfor
option dontlognull
option httpclose
balance roundrobin
clitimeout 20000
srvtimeout 20000
contimeout 4000
retries 3
listen alfpru_http 192.168.56.150:80
mode http
cookie JSESSIONID prefix
server alfpru1_http alfpru1:8080 cookie alfpru1_server check weight 50
server alfpru2_http alfpru2:8080 cookie alfpru2_server check weight 50
defaults applications TCP
log global
mode tcp
balance roundrobin
clitimeout 180000
srvtimeout 180000
contimeout 4000
retries 3
redispatch
listen alfpru_smb alfpruha:445
mode tcp
balance roundrobin
server alfpru1_smb alfpru1:10445 check weight 50
server alfpru2_smb alfpru2:10445 check weight 50
De esta forma tenemos un balanceo (round robin) así como una persistencia en las sesiones.
Otro escenario posible es dividir el balanceo por protocolo, es decir, dejar SMB/CIFS para HAProxy y HTTP para Apache. El diagrama sería:
El nuevo fichero de configuración para HAProxy sería el siguiente:
maxconn 32000
defaults applications TCP
log global
mode tcp
balance roundrobin
clitimeout 180000
srvtimeout 180000
contimeout 4000
retries 3
redispatch
listen alfpru_smb alfpruha:445
mode tcp
balance roundrobin
server alfpru1_smb alfpru1:10445 check weight 50
server alfpru2_smb alfpru2:10445 check weight 50
Y a su vez, la configuración de Apache (/etc/httpd/conf.d/proxy_ajp.conf) como sigue:
ServerName alfpruha.pruebas.local
ServerAdmin admin@pruebas.local
ProxyRequests Off
KeepAlive On
Order deny,allow
Allow from all
ProxyPass /balancer-manager !
ProxyPass /alfresco balancer://cluster1 stickysession=JSESSIONID lbmethod=byrequests nofailover=Off
ProxyPassReverse /alfresco http://alfpru1:8080/alfresco
ProxyPassReverse /alfresco http://alfpru2:8080/alfresco
BalancerMember http://alfpru1:8080/alfresco route=jvm1
BalancerMember http://alfpru2:8080/alfresco route=jvm2
ProxyPass /share balancer://cluster2 stickysession=JSESSIONID lbmethod=byrequests nofailover=Off
ProxyPassReverse /share http://alfpru1:8080/share
ProxyPassReverse /share http://alfpru2:8080/share
BalancerMember http://alfpru1:8080/share route=jvm1
BalancerMember http://alfpru2:8080/share route=jvm2
SetHandler balancer-manager
Order deny,allow
Allow from all
ErrorLog /var/log/httpd/alfpru-error_log
CustomLog /var/log/httpd/alfpru-access_log common
En este caso, no hay que olvidarse, que también habrá que configurar Tomcat para que se ajuste a las «rutas» del balanceo, en este caso en el fichero tomcat/conf/server.xml:
y en el segundo nodo:
También podría configurarse mediante mod_jk en lugar de mod_proxy/mod_proxy_balancer.
En ambos escenarios hay que reconfigurar los puertos SMB/CIFS para Alfresco (en este caso solo se usa el 445TCP del SMB ya que las instalaciones están realizadas en Linux CentOS 5) en el fichero ${ALFRESCO_HOME}/tomcat/shared/classes/shared/classes/alfresco/extension/subsystems/fileServers/default/default/custom-file-servers.properties:
cifs.tcpipSMB.port=10445
cifs.netBIOSSMB.sessionPort=10139
cifs.netBIOSSMB.namePort=10137
cifs.netBIOSSMB.datagramPort=10138
Estos son dos ejemplos de balanceo de tráfico para escenarios en alta disponibilidad, además de esta existen multitud de arquitecturas, p.e. un HAProxy que balancee a un Apache que balancee hacia los Tomcat/Alfresco, usar el mismo HAProxy para balancear tráfico TCP para MySQL o para Oracle, etc.
Datos sobre los nodos/hosts:
Donde 192.168.56.150 es la IP flotante o virtual.
HAProxy puede obtenerse de http://haproxy.1wt.eu/ así como toda la documentación para su correcta instalación y todas las opciones de configuración que no son pocas.
Apache mod_proxy_balancer puede descargarse y leer su documentación en el proyecto apache, en concreto en http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html