Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
instalacao_on_premise_flashman [11/07/2019 19:51]
superuser
instalacao_on_premise_flashman [22/05/2020 17:03] (atual)
superuser
Linha 3: Linha 3:
 === Sistemas operacionais testados: Ubuntu 16.04 e 18.04 === === Sistemas operacionais testados: Ubuntu 16.04 e 18.04 ===
 === Requisitos de hardware: Processador quad core (i5 ou superior). 8GB RAM. 50GB HDD disponíveis. === === Requisitos de hardware: Processador quad core (i5 ou superior). 8GB RAM. 50GB HDD disponíveis. ===
 +=== Requisito de rede: IP real público (Será necessário para os aplicativos FlashApp acessarem o roteador de qualquer rede) ===
 +=== Requisitos de Domínio: Criar um mapeamento de domínio para o IP escolhido. (Exemplo: flashman.provedor.com.br) ===
 +
 +----
 +
   - Atualizar repositórios através do comando <​code>​sudo apt-get update</​code>​   - Atualizar repositórios através do comando <​code>​sudo apt-get update</​code>​
   - IMPORTANTE! Instalar e configurar o NTP   - IMPORTANTE! Instalar e configurar o NTP
Linha 10: Linha 15:
 </​code>​ </​code>​
     - Aguardar um minuto e verificar status de sincronização através do comando <​code>​timedatectl</​code>​     - Aguardar um minuto e verificar status de sincronização através do comando <​code>​timedatectl</​code>​
 +  - Instalar o Git
 +    - Insira o seguinte comando: <​code>​
 +sudo apt-get install git
 +</​code>​
   - Instalar o Nginx (versão 1.10.3 ou superior)   - Instalar o Nginx (versão 1.10.3 ou superior)
     - Insira o seguinte comando: <​code>​     - Insira o seguinte comando: <​code>​
Linha 34: Linha 43:
     - Para instalar em sistemas operacionais diferentes do Ubuntu, veja a documentação em https://​docs.mongodb.com/​manual/​installation/​     - Para instalar em sistemas operacionais diferentes do Ubuntu, veja a documentação em https://​docs.mongodb.com/​manual/​installation/​
     - Atenção! Não alterar a porta padrão 27017     - Atenção! Não alterar a porta padrão 27017
-  - Instalar NodeJS (versão ​6.4.0 ou superior)+  - Instalar NodeJS (versão ​8.17.0)
     - Para instalar utilizando o Ubuntu     - Para instalar utilizando o Ubuntu
       - Insira os seguintes comandos: <​code>​       - Insira os seguintes comandos: <​code>​
-curl -sL https://​deb.nodesource.com/​setup_6.x | sudo -E bash -+curl -sL https://​deb.nodesource.com/​setup_8.x | sudo -E bash -
 sudo apt-get install -y nodejs sudo apt-get install -y nodejs
 </​code>​ </​code>​
       - Para instalar em sistemas operacionais diferentes do Ubuntu, veja a documentação em https://​nodejs.org/​en/​download/​package-manager/​       - Para instalar em sistemas operacionais diferentes do Ubuntu, veja a documentação em https://​nodejs.org/​en/​download/​package-manager/​
   - Instalar pacotes essenciais do Ubuntu: <​code>​sudo apt-get install build-essential</​code>​   - Instalar pacotes essenciais do Ubuntu: <​code>​sudo apt-get install build-essential</​code>​
-  - Instalar o instalador de pacotes do NodeJS: <​code>​sudo apt-get install npm</​code>​ 
   - Instalar o PM2 através do comando: <​code>​   - Instalar o PM2 através do comando: <​code>​
-npm install pm2 -g+sudo npm install pm2 -g
 </​code>​ </​code>​
   - Instalar o extrator de .ZIP através do comando: <​code>​sudo apt-get install unzip</​code>​   - Instalar o extrator de .ZIP através do comando: <​code>​sudo apt-get install unzip</​code>​
Linha 55: Linha 63:
 </​code>​ </​code>​
   - Configure o Nginx para receber e autorizar a comunicação HTTPS com o Flashman através do seguinte trecho de código de exemplo: <​code>​   - Configure o Nginx para receber e autorizar a comunicação HTTPS com o Flashman através do seguinte trecho de código de exemplo: <​code>​
 +server {
 +    listen 80 default_server;​
 +    listen [::]:80 default_server;​
 +    server_name _;
 +    return 301 https://​$host$request_uri;​
 +}
 server { server {
     listen 443 ssl;     listen 443 ssl;
Linha 150: Linha 164:
 O script de recuperação de dados do Flashman na nuvem da Anlix está localizado em: O script de recuperação de dados do Flashman na nuvem da Anlix está localizado em:
 <​code><<​caminho completo>>/​flashman/​scripts/​restore-flashman-onpremise-db.sh</​code>​ <​code><<​caminho completo>>/​flashman/​scripts/​restore-flashman-onpremise-db.sh</​code>​
 +
 +==== Opcional: Replicação de instâncias do Flashman para escalabilidade do serviço ====
 +
 +**Atenção! Essa configuração deve ser feita com o acompanhamento da equipe técnica da Anlix. Necessário apenas em casos de alta carga de rede**
 +
 +- Instale o proxy HAProxy para balanceamento de requisições MQTTS
 +<​code>​sudo apt-get install haproxy</​code>​
 +- Instale o banco de dados em memória Redis
 +<​code>​sudo apt-get install redis-server</​code>​
 +- Habilite os serviços instalados
 +<​code>​
 +sudo systemctl enable haproxy
 +sudo systemctl enable redis-server
 +</​code>​
 +
 +- Edite o arquivo mqtts-port.json presente no diretório flashman para o valor existente no arquive acrescido de uma unidade
 +
 +- Edite o arquivo de configuração do HAProxy para o seguinte formato. Lembre de alterar onde estiver marcado
 +<​code>​
 +global
 +  nbproc 4
 +  cpu-map ​ 1 0
 +  cpu-map ​ 2 1
 +  #ADICIONE MAIS CPUS AQUI CASO SEJA POSSIVEL
 +  #​cpu-map ​ 3 2
 +  #​cpu-map ​ 4 3
 +  # ulimit-n 500000
 +  maxconn 40000
 +  # maxpipes 40000
 +  # tune.maxaccept 8000
 +  tune.ssl.cachesize 1000000
 +  tune.ssl.default-dh-param 2048
 +  log /dev/log local0 info
 +  chroot /​var/​lib/​haproxy
 +  stats socket /​run/​haproxy/​admin.sock mode 660 level admin expose-fd listeners
 +  user haproxy
 +  group haproxy
 +  daemon
 +
 +defaults
 +  log global
 +  mode tcp
 +  option dontlognull
 +  option redispatch
 +  maxconn 40000
 +  timeout connect 5000ms
 +  timeout client 50000ms
 +  timeout server 50000ms
 +
 +listen mqtt
 +  bind *:<​**porta MQTTS designada para o provedor**>​
 +  mode tcp
 +  # Use this to avoid the connection loss when client subscribed for a topic and its idle for sometime
 +  option clitcpka # For TCP keep-alive
 +  timeout client 3h # By default TCP keep-alive interval is 2hours in OS kernel, 'cat /​proc/​sys/​net/​ipv4/​tcp_keepalive_time'​
 +  timeout server 3h # By default TCP keep-alive interval is 2hours in OS kernel
 +  option tcplog
 +  balance leastconn
 +  server flashman-2 localhost:<​**porta MQTTS designada para o provedor + 2**> check
 +  server flashman-3 localhost:<​**porta criada no passo anterior + 3**> check
 +</​code>​
 +
 +- Edite o arquivo de configuração Nginx para balancear a carga HTTPS. Edite onde estiver marcado conforme abaixo.
 +<​code>​
 +upstream backend {
 +    ip_hash;
 +    server localhost:<​** porta web 8001 ou porta web configurada + 1 **>;
 +    server localhost:<​** porta web 8002 ou porta web configurada + 1 **>;
 +}
 +
 +# INSIRA O BLOCO ABAIXO DENTRO DA CHAVE SERVER
 +
 +location ~* ^/​deviceinfo/​syn/​ {
 +   ​proxy_redirect http:// https://;
 +
 +   ​proxy_set_header X-Real-IP $remote_addr;​
 +   ​proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;​
 +   ​proxy_set_header X-NginX-Proxy true;
 +   ​proxy_set_header Upgrade $http_upgrade;​
 +   ​proxy_set_header Connection '​upgrade';​
 +   ​proxy_set_header Host $host;
 +
 +   ​proxy_pass http://​backend;​
 +   ​proxy_http_version 1.1;
 +
 +   ​proxy_cache_bypass $http_upgrade;​
 +}
 +</​code>​
 +
 +- Edite o arquivo environment.config.json no diretório flashman principal, alterando as seguintes chaves:
 +<​code>​
 +"​FLM_CERT_MQTT_DIR":​ "<<​caminho completo>>/​flashman/​certs",​
 +"​FLM_SCHEDULER_ACTIVE":​ true,
 +"​FLM_USE_MQTT_PERSISTENCE":​ true,
 +</​code>​
 +
 +- Insira também quantas instâncias serão iniciadas no mesmo aquivo, após a chave "​exec_mode":​
 +<​code>​
 +"​exec_mode":​ "​cluster",​
 +"​instances"​ : "​max"​
 +</​code>​
 +
 +- Edite o arquivo mqtts-port.json para um porta alta com numeração seguinte a porta MQTTS designada para o provedor
 +
 +- Reinicie os serviços nginx e haproxy
 +
 +** Atenção! Instância principal deverá ser removida e recriada no pm2 **
 +
 +<​code>​
 +pm2 delete flashman
 +pm2 start environment.config.json
 +</​code>​
 +
 +
 +