Implantação de alta disponibilidade na AWS para Jitterbit App Builder
Introdução
O App Builder pode aproveitar muitos serviços da AWS para auxiliar na implantação de um ambiente de alta disponibilidade (HA).
Elementos AWS
-
Bucket S3 - configurado para permitir acesso de leitura/gravação do App Builder com a finalidade de criar e compartilhar chaves de segurança.
-
Banco de dados do App Builder - Pode ser executado usando RDS ou instalado em instâncias EC2.
-
ElastiCache - Usado como um barramento de mensagens para compartilhamento de informações entre instâncias do App Builder
-
Elastic Beanstalk - Gerencia instâncias do App Builder 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 obrigatório. O App Builder pode ser instalado em instâncias EC2 autônomas e configurado adequadamente. Ele ainda exigirá sincronização de chave de criptografia, Redis / elasticache e configuração do servidor de aplicativos.
Configuração do S3 - Armazenando chaves de criptografia de dados no S3
Conforme observado em Configuração de criptografia de dados, o armazenamento local da instância 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 chaves de criptografia de dados (DEK)
Balde | Endereço | Acesso | Notas |
---|---|---|---|
vinyl-data-encryption-keys | https://s3.amazonaws.com/vinyl-data-encryption-keys | aws-elasticbeanstalk- ec2- papel | Bucket S3 padrão usado por ambientes Elastic Beanstalk. |
Dentro do bucket, os DEKs são prefixados com o nome do ambiente do Elastic Beanstalk.
Configurando o armazenamento de chaves de criptografia de dados (DEK) do ambiente Elastic Beanstalk
O App Builder vem com um script .ebextensions que registra as propriedades do ambiente para o 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-elastic-beanstalk} | zudyacceptance |
O App Builder não iniciará com as propriedades de ambiente padrão do Elastic Beanstalk. Você deve alterar os valores DataEncryptionKeyS3BucketEndpoint e DataEncryptionKeyS3KeyPrefix.
Concedendo acesso de ambientes do Elastic Beanstalk aos buckets do S3
Instâncias EC2 dentro de um ambiente Elastic Beanstalk são atribuídas a uma papel. O exemplo de política a seguir concede acesso a um bucket 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 do App Builder. Um pequeno nó, sem réplicas ou shards, é tudo o que é necessário.
As informações de configuração serão usadas ao configurar os servidores de aplicativos no Beanstalk e Não-feijão configurações.
Configuração do banco de dados
A configuração do banco de dados está fora do escopo deste documento. O Jitterbit pode fornecer instruções de configuração do RDS, se desejado.
Configuração do Elastic Beanstalk
A Amazon modifica sua interface frequentemente. 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 será definida como padrão para 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 uma url que pode ser usada para alcançar esse ambiente. Tenha em mente que o namespace está em todas as instâncias do Elastic Beanstalk de todos os clientes da AWS.
Marque "Criar este ambiente dentro de uma VPC".
O 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 problemas ambiente, insira seu endereço de email abaixo.
Configure as configurações de VPC conforme apropriado. A visibilidade do ELB deve ser Externa
Revise o resumo:
Permissões
Depois que o ambiente estiver pronto
O ambiente levará aproximadamente 15 minutos para surgir.
Depois que aparecer verde no painel, configuraremos alguns parâmetros adicionais:
-
Configuração... Configuração do 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 App Builder. Isso acionará uma instalação ou atualização do banco de dados, se necessário.
Configurando HTTPS
Por padrão, 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 App Builder para proxies reversos permite que ele detecte e manipule esse cenário. O App Builder reconhece três propriedades de ambiente definidas quando a instância do Elastic Beanstalk é implantada. Essas variáveis de ambiente são programadas: você não precisará configurá-las.
Configurando o Elastic Beanstalk para aceitar solicitações HTTPS
-
Efetue login no Amazon Web Services Console.
-
Em Serviços, escolha Elastic Beanstalk.
-
Selecione o ambiente que você está atualizando.
-
Selecione Configuração no menu à esquerda.
-
Selecione a engrenagem ao lado de Balanceamento de carga.
-
Defina a Porta do ouvinte seguro como 443.
-
Selecione o ID do certificado SSL aplicável (o App Builder usa wildcard.zudy.com - outros sites usarão algo diferente)
Nota
Isso pressupõe que seu novo ambiente Elastic Beanstalk será acessível via *.zudy.com.
-
Clique no botão Salvar.
Configuração do servidor de aplicativo não Beanstalk
Se você não estiver usando o AWS Elastic Beanstalk, estará configurando servidores de aplicativos manualmente.
Você precisará fazer as seguintes alterações em uma configuração padrão do App Builder - essas configurações devem ser aplicadas a cada instância do App Builder:
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 App Builder deve ter o mesmo arquivo connection.xml.
Depois de fazer alterações e reiniciar o App Builder, verifique os logs para verificar se as configurações estão sendo selecionadas corretamente.