Clusters do Tomcat visam aumentar a capacidade de carga e distribuir acessos uniformemente entre diferentes servidores. Tome como exemplo a estrutura ilustrada na figura a seguir.

Os clusters da Alibaba Cloud geralmente se dividem em dois modos. O primeiro é a sessão totalmente concentrada, em que todos os nós mantêm consistência entre si. O segundo aplica-se a sessões únicas, nas quais um nó específico do cluster é designado para prestar o serviço.
-
Instale o Tomcat e o JDK no ECS
Este exemplo utiliza Tomcat 7 e JDK 7. Recomendamos baixe o Tomcat para o armazenamento local primeiro e, após concluir a configuração, fazer o upload para o ECS.
-
Adicione ao Tomcat o pacote lib com suporte a Memcached.
Para mais informações sobre como configurar o memcached-session-manager, consulte este documento.
Nesta etapa, alguns pacotes lib são baixados. Os endereços de download constam no documento mencionado anteriormente. Coloque os pacotes lib baixados no diretório Tomcat/lib, conforme mostra a figura a seguir.
NotaNota: O prefixo msm- não existe originalmente no início de cada arquivo. Ele foi adicionado para facilitar a gestão.

Com esses pacotes, configure a conexão do Tomcat com o Memcache.
-
Use o Tomcat para sincronizar sessões com o Memcache.
Esta etapa exige uma configuração específica do Tomcat. Há dois modos disponíveis: STICKY e NON-STICKY.
STICKY: O Server Load Balancer distribui todas as requisições para o mesmo nó do cluster com base nas sessões do usuário. Todos os dados de sessão vêm do Tomcat, que faz backup da sessão no Memcache para garantir alta eficiência na obtenção das sessões.
-
NON-STICKY: O Server Load Balancer distribui requisições de cada conexão separadamente, sem considerar as sessões do usuário. Todas as sessões ficam armazenadas no Memcache, e as operações de leitura e gravação ocorrem diretamente nele. Esse modo exige acesso remoto aos dados, o que reduz a eficiência, mas atende melhor aos efeitos esperados de cluster ou cache concentrado.
No arquivo /Tomcat/conf/context.xml, edite a configuração de conexão com o Memcache e adicione as descrições de configuração abaixo sob o elemento
<Context>. A seguir, veja os dois modos de configuração do Tomcat:Modo STICKY
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="Memcache address: 11211" username="Memcache instance name" password="Memcache password" memcachedProtocol="binary" sticky="true" sessionBackupAsync="true" sessionBackupTimeout="1000" requestUriIgnorePattern=".*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html|htm|xml|json)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" ></Manager>Modo NON-STICKY
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="Memcache address: 11211" username="Memcache instance name" password="Memcache password" memcachedProtocol="binary" sticky="false" lockingMode="auto" sessionBackupAsync="false" sessionBackupTimeout="1000" requestUriIgnorePattern=".*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html|htm|xml|json)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />NotaNota: A definição memcachedProtocol="binary" é obrigatória porque o valor padrão do atributo para o modo de extensão memcached do Tomcat é text, mas a Alibaba Cloud suporta apenas dados binários.
-
Modifique as configurações de JVM e NIO do Tomcat.
-
No diretório /Tomcat/bin/, modifique as configurações da JVM e adicione o arquivo setenv.sh. Insira a configuração de otimização.
CATALINA_OPTS="-server -Xms3072m -Xmx3072m -Xmn1024m -XX:PermSize=96m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSMaxAbortablePrecleanTime=50 -XX:+CMSPermGenSweepingEnabled" -
No arquivo /Tomcat/conf/context.xml, modifique as configurações de NIO.
Comente a linha original Connector=8080 e adicione a configuração a seguir, com o modo NIO ativado.
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" URIEncoding="UTF-8" useBodyEncodingForURI="true" enableLookups="false" redirectPort="8443" />
-
-
Crie um JSP para verificar sessões.
Crie um arquivo JSP no diretório Tomcat/webapps/ROOT.
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'session.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1> <% out.println("This is (TOMCAT1), SESSION ID:" + session.getId()); %> </h1> </body> </html> -
Faça o upload do Tomcat preparado para o ECS.
Após iniciar o upload, acesse seu Tomcat em: http://yourserver:8080/session.jsp. Se o texto abaixo for exibido, isso indica que o Tomcat se conectou com sucesso ao Memcache.
This is (TOMCAT1), SESSION ID:CAC189E5ABA13FFE29FCB1697F80182B-OCS
Nota: O Memcache funciona normalmente no cache de sessões do Tomcat quando a carga do site é baixa. Quando a carga de tráfego estiver alta e você encontrar falhas frequentes de sessão, atualize as regras do Memcache para restaurar a funcionalidade normal.