arquitetura.rst.in 3.72 KB
Arquitetura
===========

A arquitetura do SPB consiste em 5 servidores, representados na figura
a seguir.

.. image:: arquitetura.png

Servidores e serviços
---------------------

Um proxy reverso trata requisições http e as direciona para uma segunda
máquna, onde são distribuidas para os serviços solicitados. Todos os bancos
de dados relevantes estão concentrados em uma única máquina e todos os
emails disparados pelo sistema partem de um mesmo relay.

O ambiente é composto por 5 máquinas com funções distintas:

* integration

  * Segundo proxy reverso

  * Repositórios Git

  * Listas de email

* email

  * relay de email

* social

  * Máquina dedicada para rede social Noosfero

* database

  * Servidor de banco de dados PostgreSQL

* reverseproxy

  * proxy reverso

Apenas as máquinas reverseproxy e email possuem IP's externos. A primeira para
receber requisições HTTP/HTTPS (portas 80 e 443) e possibilitar que usuários
utilizem os repositórios git (porta 22) e a última para receber emails (porta
25). Além disso, todas as máquinas aceitam conexões ssh originadas apenas da
máquina integration, ou seja, não é possível, de acordo com as regras de
firewall, realizar conexões ssh nas demais máquinas se a conexão não for
originada da integration. Conexões na porta 22 da máquina reverseproxy são
redirecionadas para integration. As máquinas email, social e database aceitam
conexão SSH vindas da integration na porta 22 e a reverseproxy em uma porta
alternativa, especificada no arquivo de configuração do ambiente,
config/$SPB_ENV/config.yaml pelo valor passado a 'alt_ssh_port'. 

Por exemplo, para se conectar na máquina email é necessário estabelecer conexão
SSH na porta 22 da reverseproxy, esta conexão será redirecionada para a máquina
integration e finalmente, partindo desta, pode-se realizar a conexão com a
máquina email na porta 22. Ainda como exemplo, caso seja necessária uma conexão
na máquina reverseproxy, deve-se estabelecer conexão na porta 22 da mesma, esta
conexão será redirecionada para a máquina integration e finalmente, partindo
desta, pode-se realizar a conexão com a máquina reverse proxy na porta definida
por 'alt_ssh_port' definida em config/$SPB_ENV/config.yaml.

Note que, como será demonstrado neste manual, existem atalhos definidos no
repositório de gestão de configuração para simplificar o acesso por SSH às
máquinas. Internamente, as máquinas integration e social também rodam web
servers para servirem suas aplicações. Por fim, as máquinas integration e social
conectam-se em database usando a porta 5432 para acesso aos bancos de dados.

Gestão de configuração
----------------------

O repositório de gestão de configuração se encontra em
git@portal.softwarepublico.gov.br:softwarepublico/softwarepublico.git e pode
ser obtido a partir do comando::

  $ git clone git@portal.softwarepublico.gov.br:softwarepublico/softwarepublico.git

Note que para tal, é necessário possuir uma conta no Portal do SPB com chaves
SSH configuradas.

Este repositório contém scripts que realizam todos os passos necessários
para a instalação, configuração e manutenção do ambiente. Isto é feito
através de scripts em linguagem Ruby que utilizam um programa chamado Chef,
para a automatização de configurações de ambientes. Mais informações em
https://docs.chef.io.

Os scripts mencionados são gerenciados por uma segunda ferramenta, Chake, que
elimina a necessidade de um servidor Chef dedicado para gerenciar as máquinas
do ambiente. O Chake conecta-se em cada uma das máquinas descritas via SSH,
copiando scripts e outros arquivos, contendo as diretrizes necessárias para
instalar e configurar todo o ambiente. Mais informações em
https://github.com/terceiro/chake.