Ir para o conteúdo

Implantação de Alta Disponibilidade na AWS

Introdução

O Vinyl pode aproveitar muitos serviços da AWS para auxiliar na implantação de um ambiente de alta disponibilidade (HA).

anexo

Elementos AWS

  • S3 Bucket - configurado para permitir acesso de leitura/gravação do Vinyl para fins de criação e compartilhamento de chaves de segurança.

  • Vinyl Database - Pode ser executado usando RDS ou instalado em instâncias EC2.

  • ElastiCache - Usado como barramento de mensagens para compartilhamento de informações entre instâncias do Vinyl

  • Elastic Beanstalk – gerencia instâncias do Vinyl e fornece um balanceador de carga para distribuir solicitações de clientes.

Nota

Embora uma parte considerável deste documento discuta implantação do Elastic Beanstalk – isso não é necessário ou exigido. O Vinyl pode ser instalado em instâncias EC2 independentes e configurado adequadamente. Ainda exigirá sincronização da chave de criptografia, Redis/ElastiCache e configuração do servidor de aplicativos.

Configuração do S3 - Armazenamento de Chaves de Criptografia de Dados no S3

Conforme observado em Configuração de criptografia de dados, o armazenamento local da instância do EC2 não pode ser usado para armazenamento de longo prazo. Consequentemente, as chaves de criptografia de dados (DEKs) devem ser armazenadas em buckets S3.

Buckets S3 Usados para Armazenamento de Chave de Criptografia de Dados (dek)

Balde Endereço Acesso Notas
chaves de criptografia de dados de Vinyl https://s3.amazonaws.com/vinyl-data-encryption-keys aws-elasticbeanstalk-ec2- papel Bucket S3 padrão usado pelos ambientes do Elastic Beanstalk.

Dentro do bucket, as DEKs são prefixadas com o nome do ambiente do Elastic Beanstalk.

Configurar o armazenamento de chave de criptografia de dados (DEK) do ambiente do Elastic Beanstalk

O Vinyl vem com um script .ebextensions que registra as propriedades do ambiente para armazenamento DEK. Essas propriedades incluem:

Propriedade Padrão Exemplo
DataEncryptionKeyStorage S3 S3
DataEncryptionKeyS3BucketEndpoint https://{bucket}.s3{-aws-region}.amazonaws.com https://s3.amazonaws.com/vinyl-data-encryption-keys
DataEncryptionKeyS3KeyPrefix {nome do ambiente do pé de feijão elástico} aceitação zudy

O Vinyl não iniciará com as propriedades de ambiente padrão do Elastic Beanstalk. Você deve alterar os valores DataEncryptionKeyS3BucketEndpoint e DataEncryptionKeyS3KeyPrefix.

Conceder Acesso aos Ambientes do Elastic Beanstalk aos Buckets do S3

As instâncias do EC2 em um ambiente do Elastic Beanstalk são atribuídas a uma papel. O exemplo de política a seguir concede acesso a um bucket do S3.

{
  "Version": "2012-10-17",
  "Statement": [
    {
       "Effect": "Allow",
       "Action": "s3:*",
       "Resource": "arn:aws:s3:::{bucket-name}/*"
     },
     {
       "Effect": "Allow",
       "Action": [
         "s3:ListAllMyBuckets",
         "s3:GetBucketLocation",
         "s3:ListBucket"
       ],
       "Resource": "*"
     }
   ]
}

Configuração do ElastiCache

Use o ElastiCache para facilitar a comunicação entre servidores Vinyl. Basta um nó pequeno, sem réplicas ou fragmentos.

As informações de configuração serão usadas ao configurar os servidores de aplicativos no Beanstalk e Não Pé de Feijão configurações.

anexo

Configuração do Banco de Dados

A configuração do banco de dados está fora do escopo deste documento. A Jitterbit pode fornecer instruções de configuração do RDS, se desejado.

Configuração do Elastic Beanstalk

A Amazon modifica sua interface com frequência. Essas capturas de tela e fluxo são precisos em novembro de 2016.

Crie o ambiente:

anexo

Selecione "Criar servidor web"

anexo

Selecione IIS.

A configuração terá como padrão um valor que não queremos. Selecione "Alterar versão da plataforma" e selecione "8.5 no Windows Server 2012 R2 de 64 bits".

b99af9bd51cfb07763abfab284721db0

Selecione a versão apropriada do aplicativo.

anexo

Insira o nome do ambiente. Isso se tornará parte de um URL que poderá ser usado para acessar esse ambiente. Tenha em mente que o namespace está presente em todas as instâncias do beanstalk elástico de todos os clientes da AWS.

anexo

Marque "Criar este ambiente dentro de uma VPC".

f851116a775fa616900ca9e4036d81f9

Jitterbit usa instâncias T2.small e T2.medium para fins de desenvolvimento e controle de qualidade, e instâncias maiores para ambientes de produção.

Se você deseja ser notificado sobre questões ambiente, digite seu endereço email abaixo.

anexo

Defina as configurações de VPC conforme apropriado. A visibilidade do ELB deve ser Externa

29c91dae1ee0892d3a888e5af6b42537

Revise o resumo:

anexo

Permissões

anexo

ad3cada27cee8a2422dcd4cdcf4f52c1

Depois Que o Meio Ambiente Estiver em Alta

O ambiente levará aproximadamente 15 minutos para subir.

Depois que aparecer verde no painel, configuraremos alguns parâmetros adicionais:

  1. Configuração... Configuração de software... Definir

    1. ConnectionInfo para uma string que corresponda às informações de conexão do seu banco de dados

    2. DataEncryption:S3BucketEndpoint para o bucket que você configurou na Etapa 1

    3. DataEncryption:S3KeyPrefix para o nome do ambiente do Elastic Beanstalk.

    4. Criptografia de dados:S3KeyPrefix

    5. SharedState:RedisConnectionString para a string de conexão apropriada para redis (ex: 10.0.2.139:16016)

    6. EstadoCompartilhado:Provedor

Após essas etapas você irá para o site do Vinyl. Isso acionará uma instalação ou atualização do banco de dados, se necessário.

Configurando HTTPS

Por padrão, os novos ambientes do Elastic Beanstalk não são configurados para HTTPS. HTTPS é altamente recomendado para todos os novos ambientes do Elastic Beanstalk.

Os ambientes do Elastic Beanstalk encerram a conexão HTTPS no Elastic Load Balancer. O suporte do Vinyl para proxies reversos permite detectar e lidar com esse cenário. O Vinyl reconhece três propriedades de ambiente definidas quando a instância do Elastic Beanstalk é implantada. Essas variáveis de ambiente são com script: você não precisará configurá-los sozinho.

Configurar o Elastic Beanstalk para aceitar solicitações HTTPS

  1. Faça login no console da Amazon Web Services.

  2. Em Serviços, escolha Elastic Beanstalk.

  3. Selecione o ambiente que você está atualizando.

  4. Selecione Configuração no menu esquerdo.

  5. Selecione a engrenagem ao lado de Balanceamento de carga.

  6. Defina Porta do ouvinte seguro como 443.

  7. Selecione o ID do certificado SSL aplicável (o Vinyl usa wildcard.zudy.com – outros sites usarão algo diferente)

    Nota

    Isso pressupõe que seu novo ambiente do Elastic Beanstalk estará acessível via *.zudy.com.

  8. Clique no botão Salvar.

anexo

Configuração do Servidor de Aplicativos Não Beanstalk

Se não estiver usando o AWS Elastic Beanstalk, você estará configurando os servidores de aplicativos manualmente.

Você precisará fazer as seguintes alterações na configuração padrão do Vinyl – essas configurações devem ser aplicadas a todas as instâncias do Vinyl:

O seguinte deve ser configurado em c:\inetpub\wwwroot\Vinyl\Config\AppSettings.config

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
  <add key="SharedStateProvider" value="Redis"/>
  <add key="RedisConnectionString" value="YOUR_SERVER_HERE:6379"/>
  <add key="DataEncryptionKeyStorage" value="S3"/>
  <add key="DataEncryptionKeyS3BucketEndpoint" value="https://s3.amazonaws.com/YOUR_BUCKET_HERE"/>
  <add key="DataEncryptionKeyS3KeyPrefix" value="YOUR_ENVIRONMENT_NAME"/>
</appSettings>

Cada instância do Vinyl deve ter o mesmo arquivo connection.xml.

Após fazer as alterações e reiniciar o Vinyl, verifique os logs para verificar se as configurações estão sendo selecionadas corretamente.