Saltar al contenido

Despliegue de alta disponibilidad en AWS para Jitterbit App Builder

Introducción

App Builder puede aprovechar muchos servicios de AWS para ayudar en la despliegue de un ambiente de alta disponibilidad (HA).

attachment

Elementos de AWS

  • S3 Bucket: configurado para permitir el acceso de lectura y escritura de App Builder con el fin de crear y compartir claves de seguridad.

  • Base de datos de App Builder : se puede ejecutar mediante RDS o instalar en instancias EC2.

  • ElastiCache: se utiliza como un bus de mensajes para compartir información entre instancias de App Builder

  • Elastic Beanstalk: administra instancias de App Builder y proporciona un equilibrador 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 obligatorio. App Builder puede instalarse en instancias EC2 independientes y configurarse como corresponde. Aun así, requerirá sincronización de la 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 puede utilizarse para el almacenamiento a largo plazo. Por lo tanto, las claves de cifrado de datos (DEK) deben almacenarse en buckets de 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 vinilo https://s3.amazonaws.com/vinyl-data-encryption-keys aws-elasticbeanstalk-ec2- rol Cubo S3 predeterminado utilizado por ambientes de Elastic Beanstalk.

Dentro del depósito, los DEK tienen como prefijo el nombre del ambiente de Elastic Beanstalk.

Configuración del almacenamiento de claves de cifrado de datos (DEK) del ambiente de Elastic Beanstalk

App Builder incluye 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 T3 T3
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 predeterminadas del ambiente de Elastic Beanstalk. Debe cambiar los valores DataEncryptionKeyS3BucketEndpoint y DataEncryptionKeyS3KeyPrefix.

Otorgar a los ambientes de Elastic Beanstalk acceso a los buckets de S3

Las instancias de EC2 en un ambiente de Elastic Beanstalk se asignan a un rol. La siguiente política de ejemplo otorga acceso a un bucket de 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 los servidores de App Builder. Basta con 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.

adjunto

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 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.

Crear el ambiente:

adjunto

Seleccione "Crear servidor web"

attachment

Seleccione IIS.

La configuración se establecerá por defecto en un valor que no deseamos. Seleccione "Cambiar versión de la plataforma" y luego "8.5 en Windows Server 2012 R2 de 64 bits".

b99af9bd51cfb07763abfab284721db0

Seleccione la versión de la aplicación adecuada.

attachment

Ingrese el nombre del ambiente. Este se convertirá en parte de una URL que podría usarse para acceder a este ambiente. Tenga en cuenta que el espacio de nombres abarca todas las instancias de Elastic Beanstalk de todos los clientes de AWS.

adjunto

Marque "Crear este ambiente dentro de una VPC".

f851116a775fa616900ca9e4036d81f9

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.

adjunto

Configure los ajustes de VPC según corresponda. La visibilidad de ELB debe ser Externa.

29c91dae1ee0892d3a888e5af6b42537

Revise el resumen:

adjunto

Permisos

adjunto

ad3cada27cee8a2422dcd4cdcf4f52c1

Una vez 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:

  1. Configuración... Configuración del software... Establecer

    1. ConnectionInfo a una cadena que coincida con la información de conexión de su base de datos

    2. DataEncryption:S3BucketEndpoint al depósito que configuró en el Paso 1

    3. DataEncryption:S3KeyPrefix al nombre del ambiente de Elastic Beanstalk.

    4. Cifrado de datos: prefijo de clave S3

    5. SharedState:RedisConnectionString a la cadena de conexión apropiada para redis (ej: 10.0.2.139:16016)

    6. Estado compartido: Proveedor

Después de estos pasos, accederá al sitio de App Builder. Esto activará la instalación o actualización de la base de datos, si es necesario.

Configuración de HTTPS

De forma predeterminada, los nuevos ambientes de Elastic Beanstalk no están configurados para HTTPS. Se recomienda encarecidamente usar HTTPS para todos los nuevos ambientes de Elastic Beanstalk.

Los ambientes de Elastic Beanstalk finalizan la conexión HTTPS en el Elastic Load Balancer. La compatibilidad de App Builder con proxies inversos le permite detectar y gestionar esta situación. App Builder reconoce tres propiedades de ambiente definidas al desplegar la instancia de Elastic Beanstalk. Estas variables de ambiente se ejecutan mediante scripts: no es necesario configurarlas.

Configuración de Elastic Beanstalk para aceptar solicitudes HTTPS

  1. Inicie sesión en la consola de Amazon Web Services.

  2. En Servicios, seleccione Elastic Beanstalk.

  3. Seleccione el ambiente que está actualizando.

  4. Seleccione Configuración en el menú de la izquierda.

  5. Seleccione el engranaje junto a Equilibrio de carga.

  6. Establezca el Puerto de escucha seguro en 443.

  7. 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.

  8. Haga clic en el botón Guardar.

adjunto

Configuración del servidor de aplicaciones que no es Beanstalk

Si no utiliza AWS Elastic Beanstalk, estará configurando los servidores de aplicaciones manualmente.

Necesitará realizar los siguientes cambios en la configuración predeterminada de App Builder : estas configuraciones se deben aplicar 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 cambios y reiniciar App Builder, verifique los registros para verificar que las configuraciones se estén recopilando correctamente.