arquitetura.rst.in
3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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
* Backend final 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 segunda para receber emails (porta
25) e enviar emails para fora de plataforma. 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. Para mais informações sobre essas configurações, veja a :doc:`/apoio`.
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.