… Este artigo não está completo e será continuado mais tarde …
Usamos Amazon Virtual Private Cloud (VPC) para servir nosso produto de banco de dados, aplicativo, cache, Logstash, escalonamento automático e muito mais.
Porém, temos um requisito adicional onde o aplicativo deve ser executado na máquina local ou na rede de cada região, conforme diagrama abaixo:
A nova arquitetura deve suportar as seguintes regras:
1) Cada computador local é acessível através da rede privada.
Por exemplo, Jacarta local (192.168.123.110) pode usar o SSH Local New York com seu IP privado (192.169.1.2) ou Riyadh local (10.20.30.40) pode abrir o aplicativo no navegador usando o IP privado Delhi local (10.10.230.10)
2) O aplicativo no computador local pode acessar o banco de dados no EC2 local.
** Nosso banco de dados não é aberto ao público, ele só pode ser acessado entre a sub-rede EC2 (rede privada). precisamos criar um banco de dados de replicação e failover em que o mestre estará no local, mas sincronizará automaticamente com o banco de dados EC2. Caso o EC2 seja desligado o aplicativo pode funcionar ou se houver grande problema de força no local, ainda temos backup na nuvem e nuvem * *
3) Os logs do aplicativo precisam ser enviados ao servidor Logstash
Usamos o logstash para centralizar e gerar relatórios das atividades do aplicativo, mas o logstash não é aberto ao público, ele apenas autoriza a sub-rede local EC2
4,5,6 e muitos mais que não preciso contar tudo aqui.
Felizmente, a Amazon forneceu o conceito aqui , mas como implementá-lo do zero?
Precisamos de um servidor de rede privada virtual (VPN) que tenha conexão com a Internet para cada região, incluindo o AWS VPC (usaremos EC2 para VPN) e deve ter IP público estático e IP local.
Eu uso o openswan para rodar no ubuntu server como VPN.
apt-get -y update
apt-get -y install openswan
se você vir um pop-up, pode clicar em ‘NÃO’ e em ‘OK’, não é necessário reiniciar após a instalação
Edite as tabelas de ip colando os códigos básicos abaixo (você pode editar por requisito)
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
Volte o ipsec.conf atual e crie um novo:
mv /etc/ipsec.conf /etc/ipsec.conf.default
vim /etc/ipsec.conf
copie e cole o ipsec.conf básico abaixo:
version 2.0
config setup
protostack=netkey
nat_traversal=yes
virtual_private=
oe=off
include /etc/ipsec.d/*.conf
Observação: você pode restringir a lista virtual_private como% v4: 172.16.0.0/12 ou% v4:! 10.1.1.0/24, mas se não tiver certeza, pode deixá-la em branco para mais detalhes sobre ipsec.conf
Crie mais configurações ipsec na pasta ipsec.d. Os arquivos de configuração abaixo são para conectar a VPN da Indonésia ao EC2, Arábia Saudita, Estados Unidos e Índia.
vim /etc/ipsec.d/indonesia-to-ec2.conf
aqui está a configuração básica:
conn indonesia-to-ec2
type=tunnel
authby=secret
left=%defaultroute
leftid=<current-machine-ip-public>
leftnexthop=%defaultroute
leftsubnet=<current-machine-subnet>/<cidr>
right=<target-ip-public>
rightsubnet=<target-subnet>/<cidr>
pfs=yes
auto=start
Resultado de exemplo:
conn indonesia-to-ec2
type=tunnel
authby=secret
left=%defaultroute
leftid=118.123.234.234
leftnexthop=%defaultroute
leftsubnet=192.168.123.0/24
right=217.80.90.100
rightsubnet=172.30.0.0/16
pfs=yes
auto=start
NOTA:
- CIDR é roteamento de domínio de Internet de cluster, você pode aprender mais em [wiki] ( http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing )
- Para obter a sub-rede local, você pode usar ifconfig e encontrar o endereço inet de eth0 ou en0 ou en1, se você vir o diagrama, o ip privado é 192.168.123.234, então sua sub-rede pode ser 192.168.123.0/24 ou 192.168.0.0/16
Depois disso, você precisa criar todas as configurações de conexão para todas as regiões, indonesia-to-saudi-arabia.conf, indonesia-to-united-state.conf, indonesia-to-india.conf
Edite /etc/sysctl.conf
e adicione ou edite a configuração abaixo:
net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
Depois disso, execute os seguintes pedidos:
sysctl -p /etc/sysctl.conf
ipsec verify
depois de executar, ipsec verify
certifique-se de não obter nenhum aviso [FALHA] ou vermelho. Em seguida, reinicie o seu ipsec
service ipsec restart
service ipsec status
Você obterá 0 túnel em execução, mas seu processo já está feito. Agora você deve criar o mesmo processo para todos os servidores VPN. Assim que terminar, todos os servidores terão túneis em execução.
Se tudo estiver funcionando corretamente, você pode executar ping em cada servidor VPN para seu ip local.
… continua…