Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Sumário



Índice
excludeSumário|Revisão|Download dos arquivos

Revisão



Versão do Documento

Modificação

Autor / Revisor

1.0 - 23/03/2018

Criação do documento

1.1 - 26/03/2018

Alteração do documento

1.2 - 26/03/2018

Alteração do documento

HTML
<style>
.panelContent, .panelContent p, .panelContent p span{
	color: white !important;
	background: #202020 !important;
}
</style>

1 Introdução



Este documento é um guia de instalação e configuração do serviço de cache centralizado para os produtos da linha TOTVS RM. Dentre os benefício que o cache centralizado traz estão: racionalização de recursos de memória e eliminação de chaves duplicadas em instancias distintas de servidores de aplicação.

1.1. Organização do documento



Para instalar o serviço de cache centralizado será necessário realizar as operações dos seguintes tópicos deste documento: 

  • Intalação do Redis, tópico 2. (requerido)
  • Caso opte por utilizar a criptografia SSL, tópico 3. (opcional)
  • Configuração dos serviços de host do Totvs RM, tópico 4. (requerido)

1.2. Entendendo os benefícios



Os benefícios de utilização do cache centralizado está relacionado com o tamanho do ambiente. Quanto maior o ambiente, ou seja, quanto maior o número de instancias de servidores de aplicação (Host) e servidores de job (Job Server) maiores serão os ganhos na utilização deste serviço.

2 Instalando o Redis



Dentre as opções de instalação do Redis estão: Instalação nativa nos sistemas operacionais Linux, Windows e instalação  via Docker em ambos os sistemas operacionais.

A versão corrente para  Windows é a 3.2.1 e atualmente não recebe atualizações, apesar de suportar o uso do serviço de cache do Totvs RM.

O Docker Container oficial disponível no Docker Hub é para Linux. Desta forma se você pretende utiliza-lo em ambiente Windows terá que realizar as configurações mencionadas no tópico 2.2 deste documento.

2.1. Instalando o Redis no Linux



Para instalar o Redis no Linux utilizando o gerenciador de pacotes apt-get, abra uma sessão ssh e entre com os camandos abaixo:

Sincronizando os índices dos pacotes

Painel

sudo apt-get update

sudo apt-get upgrade

Instalando o Redis

Painel

sudo apt-get install redis-server

Configurando o Redis – Abra o arquivo de configuração

Painel

sudo vi /etc/redis/redis.conf

Procure pela chave bind, descomente-a e altere-a para o IP o qual será visto pelos servidores RM. NÃO utilize um IP que seja expoto à internet.

Painel

bind 10.1.21.102

A porta default do redis é 6379, caso precise alterar esta porta altere a chave port.

Painel

port 6379

Procure pela chave protected-mode, descomente-a e altere-a para no.

Painel

protected-mode no

Procure pela chave requirepass, descomente-a e altere-a para o valor do password que desejar. Este password deverá ser informado na configuração do RM.Host.Service.

Painel

requirepass MYPASSWORD

Habilite o Redis no boot

Painel

sudo systemctl enable redis-server.service

Reinicie o Redis

Painel

sudo systemctl restart redis-server.service

Liberando a porta 6379 no firewall

Painel

sudo ufw allow 6379/tcp

Obs: Os comandos de instalação, assim como a localização dos arquivos de configuração, podem variar de acordo com a distribuição do Linux utilizado, porém a sequencia de comandos e configuração permenece a mesma. Caso seja necessário verifique as documentações de referências para sua distribuição Linux na Internet.

2.2.  Instalando o Redis via Docker



O Redis pode ser utilizado também via docker container.  Para isso assume-se que o docker encontra-se instalado e configurado na maquina e que esta possui acesso à Internet.

 Além disso, se a máquina host do Docker for Windows deve haver uma instância do Hyper-V com uma máquina Linux configurada. Mais detalhes podem ser obtidos em https://forums.docker.com/t/linux-container-on-windows-docker-host/25884.

Para instalar e rodar o container execute o seguinte comando:

Rodando o container Redis. Configure o parâmetro –requirepass com o password desejado.

 OBS: Utilizando Powershell (no Windows) deve-se retirar o comando sudo

Painel

sudo docker run -d                 \

-p 6379:6379                    \

--name redis-1                   \

docker.io/redis:4.0.8-alpine   \

redis-server                     \

--appendonly yes \

--requirepass MYPASSWORD

Liberando a porta 6379 no firewall

Painel

sudo ufw allow 6379/tcp

2.3. Instalando o Redis no Windows



Baixe o arquivo de instalação (msi) em https://github.com/MicrosoftArchive/redis/releases.

Inicie o programa de instalação.

Marque a opção para adicionar o Redis no path da maquina

Image Added


Marque a opção para adicionar a porta ao firewall.

Image Added


Desmarque a opção de memory limit

Image Added


Avance até o final da instação.

Configurando o Redis – Abra o arquivo de configuração

Painel

C:\Program Files\Redis\redis.windows-service.conf

Procure pela chave bind, descomente-a e altere-a para o IP o qual será visto pelos servidores RM. NÃO utilize um IP que seja exposto à internet.

Painel

bind 10.1.21.102

Procure pela chave protected-mode, descomente-a e altere-a para no.

Painel

protected-mode no

Procure pela chave requirepass, descomente-a e altere-a para o valor do password que desejar. Este password deverá ser informado na configuração do RM.Host.Service.

Painel

requirepass  MYPASSWORD

Reiniciando o serviço Redis pelo prompt de comando

Painel

sc stop Redis

sc start Redis

3 Configurando SSL


3.1.  Configurando SSL no Linux 



De acordo com o modelo de segurança defendido pelos fornecedores o Redis foi projetado para ser acessado por clientes confiáveis e dentro de ambientes confiáves. Isto significa que é contraindicado expor uma intância Redis diretamente à Internet ou em um ambiente onde clientes não confiáveis possam acessa-lo diretamente. Mais detalhes a este respeito pode ser encontrado em: https://redis.io/topics/security

Se a utilização de criptografia se fizer necessária isto pode ser feito por meio de tunelamento utilizando o stunnel. Seguem abaixo os passos para instalação e configuração:

Instalando o stunnel

Painel

sudo apt-get install stunnel

Edite o arquivo de configuração (OBS: /ect/default/stunnel4)

Painel

sudo vi /etc/default/stunnel

Encontre

Painel

ENABLED=0

Troque por

Painel

ENABLED=1

Gere um certificado para o host/ip da máquina onde se encontra instalado o Redis ou que contém o docker container. Altere a tag HOST_NAME com o nome do host ou com o ip

Painel

sudo openssl req -x509 -nodes -days 3650         \

-newkey rsa:2048                          \

-subj '/CN=HOST_NAME/O=HOST_NAME'         \

-keyout /etc/stunnel/redis-server.key     \

-out    /etc/stunnel/redis-server.crt

Altere a permissão dos arquivos gerados

Painel

Sudo chmod 640 /etc/stunnel/redis-server.key

Sudo Chmod 640 /etc/stunnel/redis-server.crt

Crie/Edite o arquivo de configuração

Painel

sudo vi /etc/stunnel/stunnel.conf

Adicione a seguinte configuração

Painel

pid = /var/run/stunnel.pid


[redis-server]

cert = /etc/stunnel/redis-server.crt

key = /etc/stunnel/redis-server.key

accept = 6380

connect = 127.0.0.1:6379

Configurando o Redis – Abra o arquivo de configuração

Painel

sudo vi /etc/redis/redis.conf

Para permitir apenas requisições locais no Redis e assim proteje-lo, procure pela chave bind, descomente-a e altere-a para o IP 127.0.0.1.

Painel

bind 127.0.0.1

Habilite o stunnel no boot

Painel

sudo systemctl enable stunnel

Caso o arquivo stunnel.service não exista, devemos criá-lo.

Painel

sudo vi /lib/systemd/system/stunnel.service

Preencha-o com os seguintes comandos

Painel

[Unit]

Description=SSL tunnel for network daemons

After=network.target

After=syslog.target


[Install]

WantedBy=multi-user.target

Alias=stunnel.target


[Service]

Type=forking

ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf

ExecStop=/usr/bin/killall -9 stunnel


#Give up if ping don't get an answer

TimeoutSec=600


Restart=always

PrivateTmp=false

Reinicie o stunnel

Painel

sudo systemctl restart stunnel

Libere a porta 6380 no firewall e bloqueie a porta 6379

Painel

sudo ufw allow 6380/tcp

sudo ufw deny 6379

3.2. Instalando Certificado no Servidor Windows



Após ter realizado as configurações constantes no item 3.1 deste documento será possível realizar o restante das configurações na máquina onde os serviçoes RM estão instalados.

Copie o arquivo abaixo do servidor Redis do Linux para a(as) maquina(as) onde os serviços RM.Host.Service estão instalados.

Painel

/etc/stunnel/redis-server.crt

Instalando o certificado no servidor RM.Host.Service

Painel

1-  Pressione Windows + R

2-  Clique com o botão direito e depois em Add/Remove Snap-In

3-  Clique em Certificates  e depois em Add

4-  Uma nova janela será mostrada, selecione “My user account” -> Finish

5-  Clique em OK

6-  Sob Console Root, expanda para “Certificates - Current User.”

7-  Clique em “Trusted Root Certification Authorities” e entãso em “Certificates”.

8-  Clique em “More Actions” no menu à direira, então em “All Tasks” e então em “Import”

9-  Uma nova janela abrirá, clique em Next e então selecione o arquivo "redis-server.crt"

10-Clique em Next, e então Next e Finish

Será exibida uma mensagem de advertência, clique em Yes

Edite o arquivo RM.Host.Service.exe.config e altere a tag port e a tag ssl conforme mostrado abaixo 

Painel

<add key="KVSCacheConfig" value="<IP>:6380, ..., ssl=true" />

Após alterar todos os arquivos RM.Host.Service.exe.config de seu ambiente, reinicie cada um dos serviços RM.Host.Service.

4 Configurando o Totvs RM



 Este tópico descreverá as instruções para configurar o RM.Host.Service para utilização do cache centralizado.   

4.1.  Configurando o Redis



Edite o arquivo RM.Host.Service.exe.config e insira as chaves abaixo.

Altere a tag IP, PORT e MYPASSWORD com os valores utilizados na instalação do Redis.

A tag ssl deve ser configurada como false à não ser que a criptográfia via SSL esteja abilitada. Neste caso verifique o tópico 3.2 deste documento. 

Painel

<add key="KVSCacheConfig"

value=" IP:PORT,

abortConnect = false,

connectTimeout = 5000,

password = MYPASSWORD,

ssl = false” />


Reinicie o RM.Host.Service. Realize esta configuração em todos os Servidores de App e Servidores de Job.

Download dos arquivos



Informações
titleDownload Arquivo DOCX

Realize o download do documento aqui.



Informações
iconfalse
Informações
iconfalse

Produto: Framework

Informações
iconfalse

Versão: 12.1.20 ou Superior

Informações
iconfalse

Cache Centralizado - Instalação e Configuração

Informações
iconfalse
Informações
iconfalse

Status: Finalizado

Informações
iconfalse

Data:  

Informações
iconfalse

Autores:

Carlos Philippe de Farias Marques

Carlos Roberto Pereira Garcia

Diogo Damiani Ferreira

Informações
iconfalse
 
View file
nameTotvs RM - Serviço de Cache - Instalação e Configuração.docx
height250
HTML
<script type="text/javascript" src="/download/attachments/330843097/TOTVS_Carousel.js?version=5&modificationDate=1521836856000&api=v2"></script>
<script type="text/javascript" src="/download/attachments/347442711/TOTVS_Accordion.mutate.js?version=1&modificationDate=1521827027000&api=v2"></script>
<script type="text/javascript" src="/download/attachments/347442711/TOTVS_Accordion.js?version=1&modificationDate=1521827211000&api=v2"></script>
<link rel="stylesheet" type="text/css" href="/download/attachments/330843097/TOTVS_Carousel.css?version=1&modificationDate=1521836856000&api=v2">
<link rel="stylesheet" type="text/css" href="/download/attachments/347442711/TOTVS_Accordion.css?version=1&modificationDate=1521826790000&api=v2">
HTML
<style>
.prev{
	left: 0px;
}
.totvs-skin-wrapper-header{
	position: relative;
	text-align: center;
	color: white;
	font-size: 20px;
	font-family: 'Lato', sans-serif !important;
	padding-bottom: 8px;
	margin-top: -5px;
}


.totvs-skin-wrapper-header img{
	position: absolute;
	right: 0;
	margin-top: 4px;
}

.totvs-skin-wrapper-footer-player-container-play{
	width: 16px;
	height: 16px;
	cursor: pointer;
	margin-top: -18px;
}

.totvs-skin-wrapper-footer-player-container-pause{
	width: 16px;
	height: 16px;
	cursor: pointer;
	margin-top: -18px;
}


.totvs-skin-wrapper-footer-player-container-stop{
	width: 16px;
	height: 16px;
	cursor: pointer;
	padding:2px;
	margin-top: -18px;
}
</style>

Índice:

Tags:

     documento_tecnico redis cache_centralizado docker linux full_document

Objetivo:

     Este documento foi criado com o objetivo de realizar uma pequena apresentação da documentação criada para explicar o funcionamento do Cache Centralizado.

Apresentação do funcionamento do Cache Centralizado:

HTML
<div style="border:1px solid #aab8c6;padding:5px;-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;background: #f7f7f7">      
      <div style="background:#f7f7f7;width:100%;height:40px;color: #000;font-weight:bold;font-size: 16px;padding:5px;border-bottom: 1px solid #aab8c6;margin-bottom:14px;padding-bottom:5px">
           <span style="float:left"><img style="width: 16px; height: 16px;" src="/download/attachments/344478255/totvs_icon_2.png?version=1&modificationDate=1521057604227&api=v2" /></span>
           <span style="float:left;font-size:inherit;padding-left:5px">Funcionamento / Configuração do Cache Centralizado</span>
     </div>
HTML
<div style="border: 1px solid #aab8c6">      
       <div style="background:#f7f7f7;width:100%;height:40px;color: #000;font-weight:bold;font-size: 16px;padding:5px;border-bottom: 0px;">
           <span style="float:left;margin-top:3px;"><img style="width: 16px; height: 16px;" src="/download/attachments/347442711/presentation.png?version=1&modificationDate=1521750455855&api=v2" /></span>
           <span style="float:left;font-size:inherit;padding-left:5px;margin-top: 3px">Apresentações em PDF</span>
      </div>
      <div style="background:#f0f0f0;width:100%;height:auto;min-height:40px;color: #000;font-weight:bold;font-size: 16px;padding:5px;border-bottom: 0px;">
HTML
<div style="width:100%;height: 40px;padding-top:5px"><span style="float:left;margin-top: 4px;font-weight:normal !important"><img style="width: 16px; height: 16px;" src="/download/attachments/309398329/cube.png?version=1&modificationDate=1509370590936&api=v2" /></span>
           <span style="float:left;font-size:inherit;padding-left:5px;margin-top: 4px;font-weight:normal !important">Apresentação PDF 1 <b>(Cache Centralizado)</b></span><span style="float:left;font-size:inherit;padding-left:5px;font-weight:normal !important;margin-top:4px;"><a href="/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o.pdf?version=2&modificationDate=1522185753010&api=v2"><img src="/download/attachments/344478255/google-drive-pdf-file.png?version=1&modificationDate=1521065702952&api=v2" /></a> </span><span style="float:right;margin-top: 4px;padding-right:5px;cursor:pointer" onclick="Show('hiddenDiv32', 'img32');"><img id="img32" name="img32" style="width: 16px; height: 16px; margin-top: 3px" src="/download/attachments/309398329/add.png?version=1&modificationDate=1509382756808&api=v2"></span></div>
<div style="background: #e2e2e2;">
<div id="hiddenDiv32" style="visibility:hidden;height: 0px; line-height: 40px; padding-left: 5px; background: #e2e2e2;font-weight:normal">
<div style="background: #fff; padding:10px;text-align:center;width: calc(100% - 5px);;border-top:#e2e2e2 5px solid">
HTML
<div id="divContainer"></div>
HTML
<script>
var _images = [];


var _imagesSettings1 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-01.png?version=1&modificationDate=1522169758909&api=v2',
	Caption: 'Página 1'
}


var _imagesSettings2 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-02.png?version=1&modificationDate=1522169759000&api=v2',
	Caption: 'Página 2'
}


var _imagesSettings3 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-03.png?version=1&modificationDate=1522169760000&api=v2',
	Caption: 'Página 3'
}


var _imagesSettings4 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-04.png?version=1&modificationDate=1522169764000&api=v2',
	Caption: 'Página 4'
}


var _imagesSettings5 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-05.png?version=2&modificationDate=1522185429171&api=v2',
	Caption: 'Página 5'
}


var _imagesSettings6 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-06.png?version=1&modificationDate=1522169764000&api=v2',
	Caption: 'Página 6'
}


var _imagesSettings7 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-07.png?version=1&modificationDate=1522169756000&api=v2',
	Caption: 'Página 7'
}


var _imagesSettings8 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-08.png?version=1&modificationDate=1522169757000&api=v2',
	Caption: 'Página 8'
}


var _imagesSettings9 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-09.png?version=2&modificationDate=1522185430480&api=v2',
	Caption: 'Página 9'
}


var _imagesSettings10 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-10.png?version=2&modificationDate=1522185424722&api=v2',
	Caption: 'Página 10'
}



var _imagesSettings11 = {
	Url: '/download/attachments/347442711/Totvs%20RM%20-%20Servi%C3%A7o%20de%20Cache%20-%20Instala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o-11.png?version=2&modificationDate=1522185428828&api=v2',
	Caption: 'Página 11'
}

_images.push(_imagesSettings1);
_images.push(_imagesSettings2);
_images.push(_imagesSettings3);
_images.push(_imagesSettings4);
_images.push(_imagesSettings5);
_images.push(_imagesSettings6);
_images.push(_imagesSettings7);
_images.push(_imagesSettings8);
_images.push(_imagesSettings9);
_images.push(_imagesSettings10);
_images.push(_imagesSettings11);
TOTVS_Carousel.Init('Carousel1', 'divContainer', 5000, _images, true, true, true, 'Cache Centralizado', 'black');
TOTVS_Carousel.ShowSlides();
</script>

...