Despliegue de Alta Disponibilidad en AWS
Introducción
App Builder puede aprovechar muchos servicios de AWS para ayudar en la despliegue de un ambiente de alta disponibilidad (HA).
Elementos de AWS
-
S3 Bucket: configurado para permitir App Builder acceso de lectura y escritura con el fin de crear y compartir claves de seguridad.
-
App Builder base de datos: se puede ejecutar mediante RDS o instalar en instancias EC2.
-
ElastiCache: se utiliza como bus de mensajes para compartir información entre App Builder instancia
-
Elastic Beanstalk - Administra App Builder instancias y proporciona un balanceador de carga para distribuir las solicitudes de los clientes.
Nota
Aunque una parte considerable de este documento trata sobre la despliegue de Elastic Beanstalk – esto no es necesario ni requerido. App Builder se puede instalar en instancias EC2 independientes y configurarlas en consecuencia. Aún requerirá sincronización de clave de cifrado, Redis / Elasticache y configuración del servidor de aplicaciones.
Configuración de S3: Almacenamiento de Claves de Cifrado de Datos en S3
Como se indica en Configuración de cifrado de datos, el almacenamiento local de la instancia EC2 no se puede utilizar para el almacenamiento a largo plazo. En consecuencia, las claves de cifrado de datos (DEK) se deben almacenar en depósitos S3.
Cubos S3 Utilizados para el Almacenamiento de Claves de Cifrado de Datos (dek)
Cubo | Dirección | Acceso | Notas |
---|---|---|---|
claves de cifrado de datos de Vinyl | https://s3.amazonaws.com/vinyl-data-encryption-keys | rol -ec2-de-aws-elasticbeanstalk | Cubo S3 predeterminado utilizado por los ambientes de Elastic Beanstalk. |
Dentro del depósito, las DEK tienen como prefijo el nombre del ambiente de Elastic Beanstalk.
Configuración del almacenamiento de claves de cifrado de datos (DEK) del ambiente Elastic Beanstalk
App Builder se entrega con un secuencia de comandos .ebextensions que registra las propiedades del ambiente para el almacenamiento de DEK. Estas propiedades incluyen:
Propiedad | Predeterminado | Ejemplo |
---|---|---|
Almacenamiento de claves de cifrado de datos | S3 | S3 |
Clave de cifrado de datos S3BucketEndpoint | https://{bucket}.s3{-aws-region}.amazonaws.com | https://s3.amazonaws.com/vinyl-data-encryption-keys |
DataEncryptionKeyS3KeyPrefix | {nombre del ambiente de Elastic Beanstalk} | aceptación de Zudy |
App Builder no se iniciará con las propiedades de ambiente predeterminadas de Elastic Beanstalk. Debe cambiar los valores DataEncryptionKeyS3BucketEndpoint y DataEncryptionKeyS3KeyPrefix.
Concesión de Acceso a los Depósitos S3 a los Ambientes Elastic Beanstalk
Las instancias EC2 dentro de un ambiente Elastic Beanstalk se asignan a una rol. La siguiente política de ejemplo otorga acceso a un depósito 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": "*"
}
]
}
Configuración de ElastiCache
Utilice ElastiCache para facilitar la comunicación entre App Builder servidores. Todo lo que se necesita es un nodo pequeño, sin réplicas ni fragmentos.
La información de configuración se utilizará al configurar los servidores de aplicaciones en Beanstalk y No tallo de frijoles configuraciones.
Configuración de la Base de Datos
La configuración de la base de datos queda fuera del alcance de este documento. Jitterbit puede proporcionar instrucciones de configuración de RDS si así se desea.
Configuración de Elastic Beanstalk
Amazon modifica su interfaz con frecuencia. Estas capturas de pantalla y el flujo de trabajo son correctos a noviembre de 2016.
Crea el ambiente:
Seleccione "Crear servidor web"
Seleccione IIS.
La configuración se establecerá de forma predeterminada en un valor que no deseamos. Seleccione "Cambiar la versión de la plataforma" y seleccione "8.5 en Windows Server 2012 R2 de 64 bits".
Seleccione la versión de la aplicación adecuada.
Ingrese el nombre del ambiente. Esto se convertirá en parte de una URL que podría usarse para acceder a este ambiente. Tenga en cuenta que el espacio de nombres se encuentra en todas las instancias de Elastic Beanstalk de todos los clientes de AWS.
Marque "Crear este ambiente dentro de una VPC".
Jitterbit utiliza instancias T2.small y T2.medium para fines de desarrollo y control de calidad, e instancias más grandes para ambientes de producción.
Si desea recibir notificaciones sobre problemas ambiente, ingrese su dirección de correo a continuación.
Configure los ajustes de VPC según corresponda. La visibilidad de ELB debe ser Externa
Revise el resumen:
Permisos
Después de Que el Ambiente Esté Listo
El ambiente tardará aproximadamente 15 minutos en aparecer.
Después de que aparezca en verde en el tablero, configuraremos algunos parámetros adicionales:
-
Configuración... Configuración del software... Establecer
-
ConnectionInfo a una cadena que coincida con la información de conexión de su base de datos
-
DataEncryption:S3BucketEndpoint al depósito que configuró en el Paso 1
-
DataEncryption:S3KeyPrefix al nombre del ambiente de Elastic Beanstalk.
-
Cifrado de datos: prefijo de clave S3
-
SharedState:RedisConnectionString a la cadena de conexión adecuada para redis (p. ej.: 10.0.2.139:16016)
-
SharedState:Proveedor
-
Después de estos pasos pasarás a la App Builder sitio. Esto activará la instalación o actualización de la base de datos, si es necesario.
Configurando HTTPS
De manera predeterminada, los nuevos ambientes de Elastic Beanstalk no están configurados para HTTPS. Se recomienda enfáticamente el uso de HTTPS para todos los nuevos ambientes de Elastic Beanstalk.
Los ambientes de Elastic Beanstalk finalizan la conexión HTTPS en Elastic Load Balancer. App Builder el soporte de 'para servidores proxy inversos le permite detectar y manejar este escenario. App Builder reconoce tres propiedades de ambiente definidas cuando se implementa la instancia de Elastic Beanstalk. Estas variables de ambiente están programadas: no necesitará configurarlas usted mismo.
Configuración de Elastic Beanstalk para aceptar solicitudes HTTPS
-
Inicie sesión en la consola de Amazon Web Services.
-
En Servicios, seleccione Elastic Beanstalk.
-
Seleccione el ambiente que está actualizando.
-
Seleccione Configuración en el menú de la izquierda.
-
Seleccione el engranaje junto a Equilibrio de carga.
-
Establezca el Puerto de escucha seguro en 443.
-
Seleccione el ID del certificado SSL que corresponda (App Builder usa wildcard.zudy.com – otros sitios usarán algo diferente)
Nota
Esto supone que su nuevo ambiente de Elastic Beanstalk será accesible a través de *.zudy.com.
-
Haga clic en el botón Guardar.
Configuración de un Servidor de Aplicaciones Que No Es Beanstalk
Si no utiliza AWS Elastic Beanstalk, deberá configurar los servidores de aplicaciones manualmente.
Deberá realizar los siguientes cambios en un servidor de aplicaciones predeterminado App Builder configuración: estas configuraciones deben aplicarse a cada instancia de App Builder:
Lo siguiente debe configurarse en 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 instancia de App Builder debe tener el mismo archivo connection.xml.
Después de realizar los cambios y reiniciar App Builder, verifique los registros para verificar que las configuraciones se estén recopilando correctamente.