Quando tenho vários hosts virtuais com farms de cache separados do AEM Dispatcher configurados no meu servidor da Web, como faço para liberar o cache correto do AEM?

Ambiente

Apache HTTP Server / AEM dispatcher

Etapas

Existem várias soluções:

  1. Configure um agente de liberação do dispatcher por farm de dispatchers, defina o cabeçalho do Host e configure o "ID do usuário do agente" com um usuário que tenha acesso de leitura a caminhos relevantes.
  2. Configure o servidor da Web para definir o cabeçalho do Host correto quando determinados caminhos forem recebidos no cabeçalho CQ-Path de uma solicitação de liberação. 

Nas soluções abaixo, assumimos o seguinte:

  • Você está usando o Apache HTTP Server 2.2 ou versão posterior
  • Vários VirtualHosts configurados
  • Vários farms de dispatchers com caches separados

Por exemplo:
Configurações do Apache httpd VirtualHost:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.geometrixx.com
    ServerAlias *.geometrixx.com
    DocumentRoot /var/www/html/cache-www-geometrixx-com
     ...  
</VirtualHost>

<VirtualHost *:80>
    ServerName www.geometrixx-outdoors.com
    ServerAlias *.geometrixx-outdoors.com
    DocumentRoot <Global Doc root>/site2
    Include <Configurations specific to site2>
</VirtualHost>
DocumentRoot /var/www/html/cache-www-geometrixx-outdoors-com

Na configuração do dispatcher, você tem vários farms configurados para lidar com sites diferentes pelo nome do host (virtualhosts):

/virtualhosts
  {
      "*geometrixx.com*"
  }

  /renders
  {
        ...
  }

  /cache {
       /docroot "/var/www/html/cache-www-geometrixx-com"

Solução 1: Configurar vários agentes de limpeza

Se você tiver apenas um punhado de fazendas de despachante separadas (5 ou menos), a configuração de vários agentes de limpeza é uma solução fácil.

  1. Abrir http://aem-host:port/miscadmin for each AEM publish instance

  2. Navegue até Replication => Agents on Publish

  3. Clique em Editar

  4. Debaixo de ID do usuário do agente, insira o nome de um usuário criado posteriormente, que estaria associado a esse agente.  Você poderia usar uma convenção de nomenclatura com o nome do host do site.  Por exemplo: "flush-agent-www-geometrixx-com" 

  5. Selecione a guia "Extended"

  6. Em HTTP Headers adicione outro cabeçalho.  Como o valor, insira "Host: www.geometrixx.com" onde "www.geometrixx.com" deve ser substituído por um dos hosts DNS dos sites.

  7. Clique em Ok para salvar

  8. Acesse http://aem-host:port/useradmin e crie o usuário a partir do passo 4

  9. Na guia do usuário Permissões, conceda ao usuário acesso de leitura a todos os caminhos que você deseja que o agente possa liberar para o site referenciado.  Por exemplo: /content/geometrixx, /content/dam, /etc, /libs, /apps, /var

  10. Salvar

  11. Repita as etapas 1 a 10 para todos os outros sites em cada instância de publicação.  Você estará criando um agente de limpeza para cada site em cada instância de publicação.

  12. No servidor da Web, compartilhe caminhos comuns usando links simbólicos.  Por exemplo, você pode definir links simbólicos para /content/dam, /etc, /libs, /apps e /var para um local de cache comum.  Então /content e qualquer coisa sob a raiz do cache seriam armazenados em cache separadamente.  Aqui está um exemplo de comando para a pasta /libs

    ln -s /var/www/html/cache-www-geometrixx-com/libs /var/www/html/shared-cache

  13. Agora, quando você ativa páginas em um site específico, a solicitação de liberação só é direcionada ao agente de limpeza aplicável

Solução 2: modificar o cabeçalho do host no servidor da Web

Para lidar com solicitações de liberação de despachante para caminhos de site específicos, use regras como estas em cada uma delas:

SetEnvIfNoCase CQ-Path ^/content/geometrixx hostnameforfarm=www.geometrixx.com
SetEnvIfNoCase CQ-Path ^/content/geometrixx-outdoors hostnameforfarm=www.geometrixx-outdoors.com 
RequestHeader set Host %{hostnameforfarm}e env=hostnameforfarm

Para essa solução, você também precisa de links simbólicos ou de um farm de dispatchers compartilhado para caminhos de conteúdo compartilhado, como /content /dam, /etc, /libs, / apps e /var.  Veja a etapa 12 na Solução 1 acima para obter detalhes sobre o uso de links simbólicos.

Esta obra está licenciada sob uma licença não adaptada da Creative Commons Attribution-Noncommercial-Share Alike 3.0  As publicações do Twitter™ e do Facebook não são cobertas pelos termos do Creative Commons.

Avisos legais   |   Política de privacidade online