Versionamento
Versão |
|
Data |
|
Comentários |
|
||||
|
|
|
|
|
|
|
|
|
|
|
1.0 |
|
|
23/09/2020 |
|
|
Versão inicial do documento. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Atualização do manual para conter etapas de instalação |
|
|
2.0 |
|
20/01/2021 |
|
|
manual do sistema e seus módulos, assim como |
|
|||
|
|
|
|
|
|
|
configuração dos mesmos. |
|
|
|
|
|
|
|
|
|
|
|
|
|
2.1 |
|
|
21/01/2021 |
|
|
Revisão, inclusão de informações nos módulos e |
|
|
|
|
|
|
|
adicionando ANEXO I. |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.2 |
|
13/04/2021 |
|
|
Adicionando módulo “Service Discovery” e detalhamento de |
|
|||
|
|
|
configurações de observability. |
|
|||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Este documento tem como objetivo detalhar o processo de instalação e atualização do S-Works na versão 2.0 ou superior, em ambiente de homologação ou produção. Inicialmente, vamos tratar a instalação e configuração manual do sistema, e ao final do documento trataremos a utilização do instalador como forma de atualização
A versão 2.0 do S-Works representa a migração do sistema do NET Framework 4.7.2 para o NET Core 3.1, portanto, é necessário realizar o download e instalação das seguintes dependências nos servidores de aplicação:
\\172.16.1.62\Build\SWorks\VersaoAtual\S-Works_v2.0\Releases
Por se tratar de uma instalação em um novo framework .NET, é necessário realizar a limpeza e desinstalação dos módulos de versões anteriores à versão 2.0 que estejam instaladas.
Abaixo seguem os principais módulos do S-Works.
Em azul escuro estão representados os módulos que necessitam instalação e configuração para funcionamento, e em azul claro estão os módulos que são executados internamento em outros módulos, sem necessidade de instalação explícita.
Os módulos Web App e Web Api são responsáveis por conter a aplicação web e a API REST para integração com terceiros.
As aplicações web em .NET Core já possuem um servidor interno chamado “Kestrel”, e, portanto, o IIS funcionará apenas como proxy para receber as requisições e direcioná-las para a aplicação.
Até a versão 1.42 do sistema, o módulo de integração era chamado “Sworks.WCFService” pelo fato de conter um serviço WCF respondendo em protoloco SOAP.
Esse protocolo não é mais suportado na versão 2.0 ou superior, contendo apenas a API REST para comunicação via HTTP.
Devido a isso, devemos renomear a aplicação instalada no IIS para “Sworks.WebApi”.
Pool.
Managed Code” na opção “.NET CLR version”.
8. Altere o application pool vinculado para o criado anteriormente.
Web App e Web Api em Ambientes Clusterizados
Os módulos Web App e Web Api podem ser implantados de forma clusterizada, ou seja, atrás de um balanceador de carga para fins de escalabilidade das aplicações.
Quando implantados de forma clusterizada, faz-se necessária a configuração de um diretório compartilhado para armazenamento das chaves de proteção de dados.
Anteriormente, aplicações Net Framework utilizavam uma chave chamada
Para configurar o caminho para armazenamento das chaves de proteção de dados, siga as instruções abaixo:
Módulos Orquestrador (Producer/Worker) e Ações em Lote
Os módulos de orquestração (producer e worker), e o módulo de “Ações em Lote”, são executados utilizando a aplicação “ChassiSVC” como gerenciador de serviços.
Dito isto, todos esses módulos devem ser instalados na forma de Windows Service, utilizando a aplicação “sc” para criar/remover os serviços.
Abaixo seguem orientações genéricas de como instalar o ChassiSVC na forma de
Windows Service, e mais abaixo serão detalhadas as configurações de cada módulo:
▪ Na primeira aba, em "Startup type" altere para "Automatic (Delayed Start)".
Para os módulos “Producer” e “Worker” essas credenciais precisam ter acesso à fila do MSMQ configurada. Mais detalhes sobre essa configuração no tópico relacionado.
A configuração de qual serviço que será executado dentro do Windows
Services do ChassiSVC é determinada no arquivo
“ChassiSVC.dll.config”, na tag “services”. Apenas um serviço deve ser executado dentro de um mesmo ChassiSVC, ou seja, cada módulo deverá ter uma pasta de instalação separada.
O módulo orquestrador pode ser instalado de duas formas:
Orquestrador com Processamento Local
Método utilizado para ambientes de homologação ou clientes de baixa demanda (até aproximadamente 5 mil processos/mês).
Nesse tipo de implantação, o enfileiramento de processos acontece em memória, e seu processamento na mesma aplicação.
A seguinte configuração deve ser feita no arquivo ChassiSVC.dll.config:
<add ServiceType="TaskQueue" name="Serviço do Orquestrador S-Works" assemblyname="SWorks.Orquestrador, Version=1.1.0.0, Culture=neutral, PublicKeyToken=5c21879e795ae678" typename="SWorks.Orquestrador.OrquestradorSVC" MaxCount="4" WaitSecondsOnNoTasks="5" WaitSecondsOnCaptureError="20" WaitSecondsOnGetMaxCountError="20" />
Orquestrador com Processamento Distribuído
Método utilizado para clientes com grandes volumes de processamento, podendo ser configurado em ambiente auto escalável, ou máquinas ligadas 24/7.
Nesse método, o orquestrador é dividido em dois sub-módulos:
Instalando o Message Queuing (MSMQ)
Para instalar o módulo Producer é necessário a instalação do MSMQ:
Após instalação e configuração do MSMQ, siga as orientações abaixo para configurar o
ChassiSVC com o módulo Producer:
<add ServiceType="MQDispatcher" name="Serviço do Orquestrador S-Works" assemblyname="SWorks.Orquestrador, Version=1.1.0.0, Culture=neutral, PublicKeyToken=5c21879e795ae678"
typename="SWorks.Orquestrador.MQDispatcher" MaxCount="1"
WorkQueueName="SWorksQueue" WaitSecondsOnNoTasks="5" WaitSecondsOnCaptureError="20" WaitSecondsOnEnqueue="10" />
O módulo Worker também deve ser instalado na forma de Windows Service do ChassiSVC. Abaixo seguem as configurações necessárias para que esse módulo seja capaz de processar os itens da fila do MSMQ:
<add ServiceType="MQWorker" name="Serviço do Orquestrador MQWorker S-Works" assemblyname="SWorks.Orquestrador, Version=1.1.0.0, Culture=neutral, PublicKeyToken=5c21879e795ae678"
typename="SWorks.Orquestrador.MQWorker" MaxCount="48"
WorkQueuePath="FormatName:DIRECT=TCP:172.28.0.7\private$\SWorksQueue"
WaitSecondsOnNoTasks="5" WaitSecondsOnCaptureError="30" />
Algumas infraestruturas em nuvem exigem a liberação de portas específicas para que a comunicação entre no protocolo do MSMQ seja viabilizada, como por exemplo na AWS. Se após a instalação, os workers não conseguirem “receber” trabalhos da fila do MSMQ, talvez seja necessário a liberação das seguintes portas:
Módulo Ações em Lote
O módulo de “Ações em Lote” deve ser instalado num servidor “AlwaysOn”, usando também o “ChassiSVC” como Windows Service.
Siga os seguintes passos para configurar o módulo:
<add ServiceType="TaskQueue" name="Serviço do Orquestrador de Ações em Lote" assemblyname="SWorks.AcoesLote, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=5c21879e795ae678"
typename="SWorks.AcoesLote.OrquestradorLoteSVC" MaxCount="2" WaitSecondsOnNoTasks="30" WaitSecondsOnCaptureError="20" WaitSecondsOnGetMaxCountError="20" />
Módulo Distribuidor de Atividades (Activity Dispatcher)
O módulo de distribuição de atividades, também conhecido como Activity Dispatcher, é responsável por distribuir atividades manuais solicitadas pelos usuários operadores através do módulo Web App.
Kestrel, conforme abaixo:
“URL_WS_DISTRIBUICAO_ATIVIDADES” automaticamente.
Configuração Pós Instalação do Distribuidor de Atividades (Activity Dispatcher)
O sistema possui duas formas de controlar a distribuição de atividades manuais, a padrão, que usa consulta direta em banco de dados, e a recomendada usando o “Activity Dispatcher”.
Para ativar a distribuição de atividades usando o módulo “Activity Dispatcher”:
“ARQUITETURA_BUSCA_ATIVIDADES_MANUAIS”
O módulo “Service Discovery” é uma aplicação web, que deve ser instalada na forma de Windows Service, responsável por manter um registro de todos os módulos do sistema em execução.
A interação entre os demais módulos do S-Works e o Service Discovery ocorre da seguinte forma:
o Periodicamente, o Service Discovery irá “pingar” o serviço através de uma URL de health-check disponibilizada pelo módulo registrado.
o Caso um módulo não responda por 3 vezes seguidas, seu registro é apagado do arquivo de dados interno.
Este módulo deverá ser instalado num servidor “AlwaysOn” que seja acessível por todas as instâncias do cluster do S-Works.
1
O módulo Service Discovery também mantém um arquivo chamado “Target File”, utilizado pelo Prometheus para obter os endpoints para realizar a leitura das métricas publicadas por cada módulo.
O seguinte trecho de configuração do arquivo appsettings.json diz respeito sobre essa funcionalidade.
“ambiente” e “cliente”, caso a instalação do Prometheus seja compartilhada.
O diagrama a seguir mostra o ciclo de comunicação entre o Service Discovery e os demais módulos do sistema.
Devido à alteração de framework, algumas configurações dos módulos, que costumavam ficar nos arquivos “web.config” para aplicações web, e no arquivo “ChassiSVC.exe.config”, agora estão localizadas em outros arquivos:
Arquivo |
|
Módulos |
|
Descrição |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Arquivo de configuração, em formato |
|
|
|
|
|
|
Web App, Web Api, |
|
|
JSON, presente nas aplicações web. |
|
|
|
|
|
|
|
|
Responsável por conter a string de |
|
|
|
|
appsettings.json |
|
|
Distribuidor de |
|
|
|
|
|
|
|
|
|
|
conexão e configurações que |
|
|
||
|
|
|
|
Atividades |
|
|
|
|
|
|
|
|
|
|
|
antigamente ficavam na tag |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
“AppSettings” do antigo “web.config” |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Arquivo de configuração dos logs do |
|
|
|
|
|
|
Web App, Web Api, |
|
sistema, utilizando log4net. Utilize |
|
||
log.config |
|
Distribuidor de |
|
para filtrar os níveis de logs registros, |
|
||||
|
|
|
|
Atividades |
|
e tipos de saída, por ex.: arquivo, |
|
||
|
|
|
|
|
|
|
Graylog. |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
Orquestrador |
|
|
Arquivo que contém quais serviços o |
|
|
|
ChassiSVC.dll.config |
|
|
(Producer/Worker), |
|
|
ChassiSVC deverá executar quando o |
|
|
|
|
|
|
Ações em Lote |
|
|
Windows Service for iniciado. |
|
|
|
|
|
|
|
|
|
|
|
|
ChassiSVC.dll.json |
* |
|
|
Mesmo propósito do arquivo |
|
||||
|
|
“appsettings.json”. |
|
||||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
ChassiSVC.dll.log.config |
|
|
* |
|
|
Mesmo propósito do arquivo |
|
|
|
|
|
|
|
“log.config”. |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"DefaultConnection": "Server=localhost;Database=Sworks_banco;Integrated
Security=false;User ID=sworks_teste;Password=senha@senha"
O arquivo responsável pelas configurações de log são:
Em ambientes clusterizados, onde os módulos estão em múltiplos servidores, é recomendado que se crie uma pasta compartilhada no servidor “AlwaysOn”, ou em qualquer servidor que fique ligado 24/7, com liberação de leitura/escrita para os usuários dos módulos, e em seguida alterar as configurações do “Appender” de nome “RollingLogFileAppender”.
O módulo Orquestrador (Worker) possui uma particularidade na configuração do log, que permite que cada linha de log exiba o código do processo em uma coluna específica, facilitando a aferição de problemas no processamento pela equipe de técnica.
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger -
[Processo|%property{processo}] - %message%newline" />
</layout>
A partir da versão 2.1, todos os módulos do S-Works possuem configurações que dizem respeito à habilitação e configuração da coleta de métricas do sistema.
A instrumentação dos módulos é realizada usando a biblioteca AppMetrics, e suas configurações são realizadas através do arquivo appsettings.json de cada módulo instalado.
O seguinte trecho de configuração estará presente em todos os arquivos de templates de configuração, podendo ser reaproveitados e alterados para aplicação correta nos arquivos originais.
módulo configurado
módulo inicialize um endpoint para leitura de métricas, economizando recursos de CPU e memória.
A instrumentação do S-Works prepara métricas para serem extraídas no formato de leitura da ferramenta Prometheus. Este manual não abordará a instalação e configuração desta ferramenta, porém se faz necessária a informação de leitura dos endpoints de métricas.
Conforme falado anteriormente, o módulo Service Discovery é responsável por manter um arquivo, chamado de “Targets File”, que contém as informações de coleta de métricas a serem lidas pelo Prometheus durante a operação de scrape (leitura das métricas). Para informar ao Prometheus a localização desse arquivo:
o arquivo gerenciado pelo Service Discovery.
Isso se
A partir da versão 1.42, o S-Works possui compatibilidade padrão para envio de registros de log para uma instalação de Graylog existente. Para isso, siga as instruções abaixo:
<appender name="GelfHttpAppender"
type="Gelf4net.Appender.GelfHttpAppender, Gelf4Net.HttpAppender"> <url value="http://localhost:12201/gelf%22 />
<layout type="Gelf4net.Layout.GelfLayout, Gelf4Net.HttpAppender"> <param name="AdditionalFields"
value="Ambiente:Dev,Cliente:Simply,Modulo:TestConsole,Level:%level" /> <!--<param name="Facility" value="RandomPhrases" />-->
<param name="IncludeLocationInformation" value="false" /> <param name="SendTimeStampAsString" value="false"/>
<!-- Sets the full_message and short_message to the specified pattern-->
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - [Processo|%property{processo}] - %message%newline" />
</layout>
</appender>
Graylog ou o Wiki do S-Works para realiziar essa configuração no Graylog caso não exista.
no padrão de conversão (conversion pattern) as em “[Processo|%property{processo}], porém essa para a configuração do appender do módulo
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" /> <appender-ref ref="GelfHttpAppender" />
</root>
Ao final da instalação, certifique-se que os logs estão sendo corretamente enviados para o Graylog.
Importante: Caso exista um appender chamado “AdoNetAppender” nas configurações, remova-o. Este appender salva informações de log em banco de dados, porém será descontinuado em breve.
As pastas dos módulos, no pacote de release, contém arquivos com sufixo ".template" contendo exemplo de configuração. Esses arquivos podem ser clonados, removendo o sufixo, para serem usados como referência de configuração.
No pacote de release está contido o instalador do S-Works (SWorks.Instalador.exe), porém seu papel ainda é voltado para atualização do sistema, fazendo a interrupção dos applications pools e Windows Services devidos, e realizando a substituição dos arquivos das pastas de destino.
Só utilize o instalador caso todos os módulos já estejam pré-instalados e configurados, ou para realizar a geração do script de migration na primeira etapa do instalador.
Execute o instalador como usuário administrador e siga as instruções na tela para criação do script de migração do banco de dados, se houver, configuração das pastas onde os módulos devem ser extraídos.
Objetivo
Este documento tem o intuito de orientá-lo na análise da consistência do sistema S-Works pós instalação/atualização. Segue abaixo os passos necessários de verificação.
Módulo Web App
Figura 1 - Validar se a versão apresentada bate com a versão instalada.
Módulo Web Api
” ou “{url}/index.html
PENDENTE
Módulo Distribuidor de Atividades (Activity Dispatcher)
Figura 3 - Arquivo de log do ActivityDispatcher
Módulo Orquestrador (Producer)
Figura 4 - Registro de log do Orquestrador Producer mostrando licença válida.
Módulo Orquestrador (Worker)
Figura 5 - Registro de log do Orquestrador Worker mostrando processos sendo recebidos.
Módulo Orquestrador – Processamento Local
Geralmente em ambientes menores, em vez de termos a dupla Producer+Worker, temos instalado apenas o Orquestrador que é responsável tanto por buscar os processos a serem processados, quanto de fato processar. Para isso então:
Figura 6 - Registro de log do Orquestrador mostrando licença válida.
Orientações Gerais
As seguintes orientações podem ser utilizadas em todos os módulos do sistema.
Ambientes com Integração Externa (Função)
Alguns ambientes possuem um mecanismo de integração externa, nesses casos possuímos 2 módulos avulsos implantados no ambiente de produção que são responsáveis por processar a integração de propostas no sistema.
Figura 7 - Página inicial do módulo Funcao.WS
Figura 8 - Resultado de GET na URL de integração com Funcao.WS.
b. Verifique, a partir da tela de "Integração Função" no WebApp, se as propostas são integradas corretamente. Ex: