Introdução
Usaremos o script de instalação do Linux para ter uma instância do AirysChat rodando. Além disso, em vez de depender de Redis, Postgres e Nginx instalados na mesma ec2; nós prosseguiremos usando serviços gerenciados da AWS para o mesmo, viz Elasticache, RDS e ALB.Pré-requisitos
- Conta na AWS
- Domínio para usar com o AirysChat
Arquitetura
Este guia seguirá uma arquitetura padrão de 3 camadas na AWS.
Rede
Criar VPC
- Faça login no console da AWS e escolha a região onde você fará a implantação.
- Navegue até o console VPC e crie uma nova vpc para o airyschat. Na tag
name, insiraairyschat-vpce use o bloco CIDR10.0.0.0/16. - Deixe o restante das opções como padrão e clique em
Create VPC.

Sub-redes
Crie duas sub-redes públicas e privadas na vpc que criamos. Certifique-se de tê-las em diferentes AZs e com intervalos CIDR que não se sobreponham.- Navegue até VPC > Subnets.
- Clique em
Create Subnet. Selecione aairyschat-vpcque criamos antes, nomeie-a comoairyschat-public-1, selecione uma zona de disponibilidade (por exemplo, ap-south-1a) e o bloco CIDR como10.0.0.0/24.

- Siga o mesmo procedimento para criar as sub-redes restantes.
| Nome | Tipo | Zona de Disponibilidade | Bloco CIDR |
|---|---|---|---|
airyschat-public-1 | public | ap-south-1a | 10.0.0.0/24 |
airyschat-public-2 | public | ap-south-1b | 10.0.1.0/24 |
airyschat-private-1 | private | ap-south-1a | 10.0.2.0/24 |
airyschat-private-2 | private | ap-south-1b | 10.0.3.0/24 |
- Após criar todas as sub-redes, habilite
auto assign public ipv4 addresspara as sub-redes públicas emActions>Subnet Settings.
Internet Gateway
- Selecione
Create Internet Gateway, nomeie-oairyschat-igwe clique em create. - Selecione-o na lista de internet gateways, escolha actions e, em seguida, selecione
Attach to VPC. - Escolha
airyschat-vpce clique em attach.

NAT Gateway
Os servidores de aplicativos do AirysChat precisam ser implantados na sub-rede privada. Para que eles acessem a internet, precisamos adicionar gateways NAT à nossa sub-rede pública e adicionar uma rota a partir das sub-redes privadas.-
Navegue no painel VPC e selecione
NAT gateways. -
Clique em
Create NAT Gateway.- Nomeie-o
airyschat-nat-1. - Selecione a sub-rede
airyschat-public-1. - Clique em
Allocate Elastic IP. - Adicione tags adicionais de acordo com sua necessidade.
- Clique em
Create NAT gateway.
- Nomeie-o

- Siga o mesmo procedimento para criar um segundo gateway NAT (
airyschat-nat-2) e escolha a sub-redeairyschat-public-2.
Tabelas de Roteamento
A tabela de roteamento controla o acesso de entrada e saída para uma sub-rede.Tabela de Roteamento Pública
Criaremos tabelas de roteamento para que nossas sub-redes públicas possam acessar a internet por meio do Internet gateway. Navegue até o painel VPC e selecioneRoute Tables.
- Clique em
Create route table. - Use o nome
airyschat-public-rte escolhaairyschat-vpcem VPC. - Clique em
Create.

airyschat-igw).
- Selecione a tabela de roteamento
airyschat-public-rtna lista e clique emEdit routes>Add Route. - Defina o destino como
0.0.0.0/0e escolha o alvo comoairyschat-igw. Clique emSave Changes.
- Selecione a tabela de roteamento
airyschat-public-rtna lista e clique emSubnet Associations>Edit subnet associations. - Selecione ambas as sub-redes públicas(
airyschat-public-1,airyschat-public-2) e clique emsave.
Tabela de Roteamento Privada
Também criaremos tabelas de roteamento privadas para que nossas sub-redes privadas possam acessar a internet através dos gateways NAT.- Siga o guia acima e crie duas tabelas de roteamento privadas, a saber,
airyschat-private-aeairyschat-private-b. - Selecione as tabelas de roteamento e adicione uma rota ao gateway NAT em sua respectiva zona de disponibilidade.
- Para
airyschat-private-a, adicione uma rota para0.0.0.0/0e o alvo comoairyschat-nat-1. - Para
airyschat-private-b, adicione uma rota para0.0.0.0/0e o alvo comoairyschat-nat-2.
- Para
- Associe as tabelas de roteamento privadas com as sub-redes privadas correspondentes.
- Para
airyschat-private-a, associe a sub-redeairyschat-private-1. - Para
airyschat-private-b, associe a sub-redeairyschat-private-2.
- Para
Application Load Balancer (ALB)
Crie um application load balancer para receber tráfego nas portas 80 e 443 e distribuí-lo através das instâncias do AirysChat.- Navegue até a seção EC2 e escolha a seção Load Balancer.
- Clique em
Create Load Balancer.- Escolha
Application Load Balancer. - Para o nome do load balancer, use
airyschat-loadbalancer. - Selecione o scheme como
internet-facinge IP address type comoIPv4. - Para a seção de mapeamento de rede,
- Selecione
airyschat-vpc. - Selecione as sub-redes públicas
airyschat-public-1eairyschat-public-2na seção de mapeamento.
- Selecione
- Para a seção de Security group,
- Crie um novo security group,
airyschat-loadbalancer-sg. - Adicione regras para permitir o tráfego HTTP e HTTPS de qualquer lugar(
0.0.0.0/0,::/0). - Além disso, adicione uma regra para permitir TCP na porta 3000. Esta regra permite que as verificações de integridade do load balancer passem, já que o AirysChat roda na porta 3000.
- Adicione uma regra para permitir tráfego SSH a partir do security group do bastion que criaremos em uma etapa posterior do guia. Revisite esta seção após concluir a etapa do bastion.
- Crie um novo security group,
- Para a seção de Listeners and routing, crie dois listeners para 80 e 443. Defina a regra de encaminhamento no listener 80 para redirecionar
httpparahttps.- Além disso, crie um target group,
airyschat-tg, que encaminhará as requisições para a porta3000(o AirysChat ouve nesta porta). - Adicione uma verificação de integridade no endpoint
/api. Este endpoint não é autenticado e deve retornar a versão da aplicação.
- Além disso, crie um target group,
- Escolha
- Adicione quaisquer tags necessárias e clique em create.
Postgresql usando AWS RDS
O AirysChat usa o Postgres como camada de DB, e usaremos o Amazon RDS com uma opção multi-AZ para confiabilidade.Security group do RDS
- Navegue até EC2 > Security groups e crie um novo sg.
- Nomeie-o
airyschat-rds-sg. - Selecione a
airyschat-vpce adicione uma regra de entrada para a porta do postgres com origemairyschat-loadbalancer-sg.
Grupo de sub-redes do RDS
- Navegue até a seção RDS e selecione subnet groups.
- Crie
airyschat-rds-groupe escolhaairyschat-vpc. - Selecione ambas as AZs e as sub-redes privadas.
RDS
- Selecione create a database.
- Use a criação padrão e escolha a engine do Postgres.
- Use o template de produção e crie um usuário master e senha do Postgres.
- Habilite a implantação Multi-AZ.
- Selecione
airyschat-vpce selecione o security group do rds que criamos anteriormente. - Habilite a autenticação por senha.
- Clique em create.
- Após concluir a criação, anote o hostname, username e senha. Precisaremos disso para configurar o AirysChat.
Redis usando AWS Elasticache
- Siga passos semelhantes como os do rds para criar os grupos de segurança e de sub-rede do Redis.
- Crie o cluster Redis com a opção multi-AZ.
Criando servidores Bastion
Crie servidores bastion em ambas as sub-redes públicas. Esses servidores serão usados para fazer ssh nas instâncias do AirysChat nas sub-redes privadas.- Navegue até o painel EC2 e clique em launch instance.
- Use uma imagem
Ubuntu 20.04 imagecom o tipot3.micro. - Escolha
airyschat-vpce a sub-redeairyschat-public-1. - Nomeie-o
airyschat-bastion-a. - Adicione um novo sg,
airyschat-bastion-sge habilite o acesso ssh de qualquer lugar. - Deixe o restante como padrões e clique em launch.
- Assim que a instância estiver ativa, tente fazer SSH na instância.
airyschat-bastion-b na outra AZ.
Instalar AirysChat
- Navegue até a seção EC2 e clique em launch instance.
- Use uma imagem
Ubuntu 20.04 imagecom o tipo de instânciac5.xlarge. - Escolha a airyschat-vpc e selecione a sub-rede privada
airyschat-private-1. - Desative a atribuição automática de IP público e aumente o armazenamento do root volume para 60 GB.
- Adicione as tags necessárias. Defina a tag
Nameparaairyschat. - Selecione o security group do load balancer e clique em launch.
- Faça SSH no servidor bastion e, a partir de lá, faça ssh na instância do airyschat que criamos.
- Mude para o usuário
root. - Baixe o script de instalação do airyschat para Linux.
- Execute o script.
Configurar AirysChat
- Assim que a instalação for concluída, mude para o usuário airyschat e navegue até a pasta airyschat. Edite o arquivo .env e substitua as credenciais do Postgres e Redis pelos valores do RDS e elasticache.
- Execute a migração do db.
- Modifique também as outras variáveis de ambiente necessárias para a configuração do seu airyschat. Consulte https://www.airyschat.com/docs/self-hosted/deployment/linux-vm#configure-the-required-environment-variables
-
Reinicie o serviço
airyschat.
Verificar o login
- Adicione esta instância ao target group anexado ao alb.
- Navegue até o seu domínio do airyschat para ver se tudo está funcionando.
Criar uma AMI personalizada
- Se você estiver recebendo a página de integração, conclua a inscrição e verifique a instalação.
- Voila !! Sua instância do airyschat está no ar.
- Se tudo estiver correto, prossiga para criar uma ami a partir desta instância e nomeie-a
airyschat-base-ami.
Grupos de Auto Scaling (ASG)
- Crie uma launch configuration usando a imagem base acima.
- Prossiga para criar um auto-scaling group a partir dessa launch config.
- Defina a capacidade mínima e desejada para 2 e a máxima para 4. Modifique isso de acordo com sua necessidade.
- Crie uma política de escalonamento baseada na utilização da CPU.
- Neste ponto, estamos prontos para encerrar a instância que criamos anteriormente.
- Verifique o load balancer ou target group para verificar se duas novas instâncias do airyschat surgiram.
- É isso.
Monitoramento
Atualizando o AirysChat
- Faça login em um dos servidores de aplicativo e conclua as instruções de atualização. Execute migrações se necessário. Consulte https://www.airyschat.com/docs/self-hosted/deployment/linux-vm#upgrading-to-a-newer-version-of-airyschat
- Crie uma nova ami e atualize a launch config.