Histórico da Página
Informações | ||
---|---|---|
| ||
Esta página foi revisada para considerar as configurações do serviço de indexação a partir da atualização Waterdrop (1.6.4). Caso possua uma atualização 1.6.0 à 1.6.3 acesse: Como configurar o fluig Indexer para executar em cluster da release 1.6.0 à 1.6.3?. |
Painel | ||
---|---|---|
| ||
Para atualizações 1.5.6 à 1.5.13 acesse: Como configurar o fluig Indexer para executar em cluster da release 1.5.6 à 1.5.13?. [essa página está arquivada, mas caso seja necessário, solicitar para alguém de Gestão do Conhecimento]. |
...
Índice
Índice | ||||||||
---|---|---|---|---|---|---|---|---|
|
Introdução
Em ambientes onde será utilizado cluster, ou quando a quantidade de documentos é consideravelmente grande, é aconselhado a utilização de um servidor exclusivo para indexação.
Segue as instruções para a instalação e configuração deste:
Considerações iniciais
Deverá ser efetuados os seguintes passos do documento Configurando Fluig Indexer para executar em servidor separado:
- Preparando ambiente.
- Instalando o Fluig Indexer Server para cada um dos nós do cluster de indexação.
- Configurando o Fluig Indexer Server para cada um dos nós do cluster de indexação.
Configurando o Fluig Indexer Server
Configurando os tenantes que irão estar armazenados no nó do Servidor de Indexação
Abra o arquivo <fluigIndexer>/solr/solr.xml e adicione uma linha de xml <core> para cada um dos Tenantes com o ID do Tenante e o diretório onde estará o índice:
name é o Id do Tenante.
instanceDir é o diretório onde o índice será criado e mantido.
Bloco de código | ||
---|---|---|
| ||
<cores defaultCoreName="collection1" adminPath="/admin/cores" zkClientTimeout="${zkClientTimeout:15000}" hostPort="7070" hostContext="indexer" host="127.0.0.1">
<core instanceDir="fluig/1" name="1"/>
<core instanceDir="fluig/2" name="2"/>
</cores> |
Configurando o Fluig Server para usar o Fluig Indexer em cluster
No servidor onde está instalado o Fluig Server, acesse o diretório <fluig-server>/repository/wcmdir/config/, crie ou edite o arquivo configuration.properties e edite ou inclua estas linhas (para mais formas de configuração):
Bloco de código | ||
---|---|---|
| ||
totvs/solrURL=server:9983
totvs/solrCloud=true
totvs/solrRemote=true |
Modifique para o <IP>:<Porta> onde está executando o Fluig Indexer Master. Deverá ser informado apenas o IP ou HostName do servidor onde está instalado o serviço de indexação e a porta, sem o protocolo e contexto. A porta utilizada será a do serviço de coordenação do cluster que por padrão é a porta do 9983. A chave totvs/solrCloud vai configurar o fluig para ativar a opção do Solr Cloud.
Executando o Fluig Indexer Master
Basta executar o arquivo <fluigIndexer>/solr/startCloudMaster.sh ou <fluigIndexer>/solr/startCloudMaster.bat que o processo irá iniciar. Para interromper, execute o arquivo <fluigIndexer>/solr/stopCloud.sh ou <fluigIndexer>/solr/stopCloud.bat.
Obs: É importante que o Fluig Indexer seja iniciado antes do Fluig, caso contrário este irá considerar que não há Serviço de Indexação disponível.
Configuração do Fluig Indexer Slave
Edite o arquivo runCloudSlave.bat / runCloudSlave.sh para configurar o IP e porta do processo de coordenação do cluster de indexação que é executado no servidor Master
Bloco de código | ||
---|---|---|
| ||
java -DzkHost=server:8070 -jar start.jar |
Executando o Fluig Indexer Slave
Basta executar o arquivo runCloudSlave.bat ou runCloudSlave.sh em cada um que o processo irá iniciar. Ctrl-C faz com que o processo finalize.
Obs: É importante que o Fluig Indexer Master seja iniciado antes do Fluig Index Slave, caso contrário este irá considerar que não há Serviço de Coordenação disponível.
Registrando o Fluig Indexer como Serviço no Windows
Para registrar ele como serviço, basta executar o .bat correspondente. Lembrando antes de editá-lo para a acertar o diretório de instalação
...
- Para a execução standalone sem a utilização de cluster
...
- Para a execução em cluster do nó coordenador
...
As instruções a seguir completarão a instalação de um fluig Indexer em um cluster de servidores dedicados, continuando as instruções iniciadas na página Servidor de indexação dedicado.
Na maioria dos cenários, uma máquina bem dimensionada executando o serviço de indexação é suficiente para atender as demandas de indexação e busca da plataforma.
Sendo assim, as configurações apresentadas nesta página são consideradas avançadas, com maior necessidade de administração do ambiente e recomendadas apenas em casos específicos, quando a busca é uma funcionalidade crítica, ou quando se faz necessário garantir a alta disponibilidade deste serviço.
Redundância
...
O serviço de indexação na plataforma é realizado pelo Apache® Solr. Em um ambiente de alta disponibilidade, são necessárias mais máquinas com este serviço rodando para, no caso de uma delas falhar, ter outra(s) para continuar processando as requisições e, neste caso, o gerenciamento destas requisições será realizado pelo Apache® ZooKeeper.
Para garantir a alta disponibilidade desta funcionalidade, é necessário que exista redundância em ambos os serviços: Apache® Solr para indexação/busca e Apache® ZooKeeper para gerenciamento das configurações de indexação e das requisições. Também é necessário que todas as máquinas do cluster sejam acessíveis entre si (estejam na mesma rede).
O princípio de funcionamento do Apache® ZooKeeper é baseado em quorum, ou seja, é necessário que a maioria (>50%) dos servidores estejam disponíveis para o processamento das requisições.
Por exemplo, se existirem apenas dois servidores e um deles ficar indisponível, apenas 50% dos servidores estarão saudáveis e, como isso não é a maioria, o cluster será incapaz de processar as requisições. Por outro lado, se existirem três servidores e um ficar indisponível, ainda restarão dois saudáveis, ou 66%, atendendo ao critério de maioria. Por esse motivo é recomendado um número ímpar de servidores executando o Apache® ZooKeeper.
Configurando o Apache® ZooKeeper
...
O primeiro passo é efetuar o download da versão 3.4.10 do Apache® ZooKeeper, que pode ser obtida no endereço https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/
Após efetuar o download e extrair o arquivo compactado no diretório de sua preferência [ZOOKEEPER_HOME] em cada uma das máquinas do cluster, é necessário criar, caso ainda não exista, o arquivo [ZOOKEEPER_HOME]/conf/zoo.cfg com o seguinte conteúdo:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
tickTime=2000
dataDir=C:/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=<server1_address>:2888:3888
server.2=<server2_address>:2888:3888
server.3=<server3_address>:2888:3888 |
- tickTime: corresponde ao tempo em milisegundos entre cada tick, sendo que uma das validações para determinar se um nó está disponível é de dois ticks (similar ao ping para verificar se uma máquina é encontrada na rede). Se dois ticks consecutivos não obtiverem resposta, ocorre timeout e a máquina é considerada indisponível.
- dataDir: aponta o diretório onde serão armazenadas as informações referentes ao cluster. No início, este diretório deve estar vazio e com permissão de escrita pelo usuário que irá iniciar o ZooKeeper. O mapeamento deve ser feito sempre com o caracter '/', mesmo em ambientes windows.
- clientPort: corresponde à porta que será utilizada pelo Apache® Solr.
- initLimit: quantidade de tempo (em ticks) para que uma máquina com ZooKeeper se conecte e sincronize com a máquina que foi eleita líder. Neste caso, são 5 ticks com 2000 milisegundos cada, totalizando 10 segundos. Este valor pode ser incrementado sob demanda se a quantidade de informações gerenciadas pelo ZooKeeper for elevada.
- syncLimit: quantidade de tempo (em ticks) que uma máquina com ZooKeeper pode estar atrasada em relação à líder. Se uma máquina não conseguir sincronizar com a líder neste intervalo, ela será descartada do cluster.
- server.X: são os IDs e localização (endereço na rede interna) de todos os nós do cluster, e as portas nas quais eles comunicam-se entre si. O ID identifica cada nó do cluster, precisando ser referenciado em um arquivo de nome 'myid', dentro do diretório definido na propriedade 'dataDir'. Neste exemplo seria necessário criar o arquivo '/var/lib/zookeeperdata/myid' com o conteúdo '1' (sem aspas) para a máquina configurada na propriedade 'server.1', o mesmo arquivo com conteúdo '2' (sem aspas) para a máquina configurada na propriedade 'server.2', e assim por diante, para cada máquina existente no cluster. As portas 2888 e 3888 serão utilizadas para comunicação entre cada uma das máquinas do cluster e podem ser alteradas de acordo com a necessidade, desde que informadas na linha correspondete ao servidor em questão, no arquivo 'zoo.cfg' de todas as máquinas do cluster.
Painel |
---|
Certifique-se que o arquivo "myid" foi criado corretamente em cada máquina (na pasta definida pela propriedade dataDir), tendo o ID numérico do servidor como conteúdo. |
Com essa configuração em cada máquina do cluster, basta iniciá-las com o seguinte comando:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
cd <ZOOKEEPER_HOME>/bin
zkServer.sh start zoo.cfg |
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
cd <ZOOKEEPER_HOME>/bin
zkServer.cmd |
Configurando o Apache® Solr
...
A instalação do Apache® Solr pode ser realizada através da instalador do fluig no modo caractere, seguindo o passo a passo para instalar somente o servidor de indexação em Windows ou Linux.
Para existir redundância, devem conter no mínimo duas máquinas executando este serviço de indexação, podendo estas serem as mesmas máquinas que executam o serviço de gerenciamento (ZooKeeper) ou máquinas distintas na mesma rede, dependendo da arquitetura desejada de tolerância à falhas.
O Solr possui dois modos de inicialização: Standalone e Cloud. Em um ambiente de alta disponibilidade, é necessário utilizar o modo Cloud, apontando para os servidores onde estão sendo executados os serviços de gerenciamento das configurações e requisições (ZooKeeper). Para isso, basta incluir o parâmetro ZK_HOST no arquivo de configuração do servidor de indexação, conforme exemplo abaixo:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
ZK_HOST="<server1_address>:2181,<server2_address>:2181,<server3_address>:2181"
SOLR_HOST="<server>" |
Neste caso, os endereços <server1_address>, <server2_address> e <server3_address> no item ZK_HOST, são os mesmo informados anteriormente nos parâmetros 'server.X' do arquivo 'zoo.cfg', e a porta 2181 corresponde ao parâmetro clientPort informado nesse mesmo arquivo. As aspas devem ser mantidas.
O parâmetro <server> utilizado no item SOLR_HOST se refere ao endereço ou ip do próprio servidor que está configurando. As aspas devem ser mantidas.
A localização deste arquivo de configuração varia de acordo com o sistema operacional, e pode ser verificada na tabela abaixo:
Sistema Operacional | Arquivo de Configuração | Localização |
---|---|---|
Linux | fluig_Indexer.in.sh | /etc/default/ |
Windows | solr.in.cmd | [Instalação fluig Indexer]/solr/bin/ |
Painel |
---|
Após esta configuração, é necessário iniciar os serviços do Solr (fluig_Indexer) em todas as máquinas que o executarão para seguir com os próximos passos. |
Nota | ||
---|---|---|
| ||
É importante que o serviço de gerenciamento (ZooKeeper) seja iniciado antes do serviço de indexação (Solr), caso contrário, este último irá considerar que não há serviço de gerenciamento disponível. |
Configurações de indexação
...
Quando o Apache® Solr é executado no modo Cloud, as configurações do índice são armazenadas e gerenciadas pelo Apache® ZooKeeper. Por isso, primeiramente é necessário publicar as configurações utilizadas pela plataforma. Estas configurações são instaladas juntamente com o serviço de indexação e para publicá-las no serviço de gerenciamento (ZooKeeper), pode-se utilizar o comando abaixo:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
<SOLR_DIR>/bin/solr zk upconfig -d fluig -n fluig -z <server1_address>:2181,<server2_address>:2181,<server3_address>:2181 |
- O parâmetro '-d fluig' corresponde ao nome do diretório onde estão armazenadas as configurações utilizadas pela plataforma, instaladas por padrão juntamente com o serviço de indexação, no diretório 'fluig'. O comando irá efetuar o upload deste diretório para os endereços informados no parâmetro '-z'.
- O parâmetro '-n fluig' corresponde ao nome que esta configuração irá receber no serviço de gerenciamento (ZooKeeper) e será utilizado no próximo passo (criação da collection).
- O parâmetro '-z' informa a lista de serviços de gerenciamento (ZooKeeper) onde serão publicadas estas cofigurações, conforme detalhado anteriormente.
Nota | ||
---|---|---|
| ||
Como existe o ZooKeeper para gerenciar o cluster, este comando precisa ser executando apenas em uma das máquinas do Solr. |
Criação de collection
...
Cada empresa (tenant) criada no fluig é mapeada para uma collection no Apache® Solr. Quando em cluster, é necessário definir a quantidade de nós (shards) em que o índice será dividido e o fator de replicação (replicationFactor) das informações referentes à esta collection, através do seguinte comando:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
<SOLR_DIR>/bin/solr create_collection -c <ID do Tenant> -d fluig -shards 1 -replicationFactor 2 |
- Informe o código numérico que será usado para a empresa criada no fluig em <ID do Tenant>.
- Neste caso o parâmetro '-d' corresponde ao nome da configuração armazenada no ZooKeeper (parâmetro '-n' do comando utilizado anteriormente para upload).
- Informe o número total de instâncias do Apache® Solr após o parâmetro '-replicationFactor'.
Nota | ||
---|---|---|
| ||
Como existe o ZooKeeper para gerenciar o cluster, este comando precisa ser executando apenas em uma das máquinas do Solr, mas as outras máquinas precisam estar com o Solr em execução. |
Configurando o fluig para usar o Indexer
...
Se o fluig tiver em execução, siga os passos abaixo:
Deck of Cards | |||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||
|
- Se o fluig estiver parado, siga os passos abaixo:
Deck of Cards | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
|
HTML |
---|
<script>
$("b:contains('oculto')").parent().parent().hide();
</script> |
...
Atualizando o Fluig Indexer
Sempre que houver uma atualização do Fluig Server, o arquivo foundation-addon-indexer-web.war deve ser movido para o diretório webapps do Fluig Indexer Server de cada um dos nós do cluster. Caso haja várias instâncias do Fluig Server, este arquivo deve ser removido de todas as instâncias.
...