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).
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.
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:
Selecione "Criar servidor web"
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".
Selecione a versão apropriada do aplicativo.
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.
Marque "Criar este ambiente dentro de uma VPC".
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.
Defina as configurações de VPC conforme apropriado. A visibilidade do ELB deve ser Externa
Revise o resumo:
Permissões
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:
-
Configuração... Configuração de software... Definir
-
ConnectionInfo para uma string que corresponda às informações de conexão do seu banco de dados
-
DataEncryption:S3BucketEndpoint para o bucket que você configurou na Etapa 1
-
DataEncryption:S3KeyPrefix para o nome do ambiente do Elastic Beanstalk.
-
Criptografia de dados:S3KeyPrefix
-
SharedState:RedisConnectionString para a string de conexão apropriada para redis (ex: 10.0.2.139:16016)
-
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
-
Faça login no console da Amazon Web Services.
-
Em Serviços, escolha Elastic Beanstalk.
-
Selecione o ambiente que você está atualizando.
-
Selecione Configuração no menu esquerdo.
-
Selecione a engrenagem ao lado de Balanceamento de carga.
-
Defina Porta do ouvinte seguro como 443.
-
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.
-
Clique no botão Salvar.
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.