arquitetura.rst.in
3.42 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
96
97
98
99
100
101
102
103
104
Arquitetura
===========
A arquitetura do SPB consiste em 7 servidores como representado 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áquina, 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 6 máquinas com funções distintas:
* **Reverseproxy**
* Proxy reverso
* **Integration**
* Segundo proxy reverso;
* Repositórios Git;
* Listas de email;
* Backend final de email;
* **Email**
* *Relay* de email;
* **Social**
* Servidor de rede social Noosfero;
* **Database**
* Servidor de banco de dados PostgreSQL;
* **Monitor**
* Monitoramento de informações dos outros serviços;
As máquinas **Reverseproxy**, **Email** e **Monitor** possuem IP's externos.
**Reverseproxy** recebe requisições HTTP/HTTPS (portas 80 e 443) e possibilita
que usuários utilizem os repositórios git (porta 22). **Email** recebe emails
(porta 25) e enviar emails para fora da plataforma. **Monitor** recebe
requisições HTTP/HTTPS (portas 80 e 443). Os IP's variam de acordo com o ambiente.
Conexões na porta 22 da máquina reverseproxy são redirecionadas para integration.
Todas as máquinas aceitam conexões **ssh** originadas apenas da máquina integration,
ou seja, não é possível realizar conexões **ssh** nas demais
máquinas se a conexão não for originada da 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 `alt_ssh_port`.
.. image:: ssh.png
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 o Chef_ para a automatização
de configurações e deploy de ambientes.
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.
.. _Chef: https://docs.chef.io
.. _Chake: https://github.com/terceiro/chake