Despliegue de Alta Disponibilidad en AWS¶
Introducción¶
Vinyl 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 el acceso de lectura/escritura de Vinyl con el fin de crear y compartir claves de seguridad.
-
Base de datos de Vinyl: se puede ejecutar mediante RDS o instalar en instancias EC2.
-
ElastiCache: se utiliza como bus de mensajes para compartir información entre instancias de Vinyl.
-
Elastic Beanstalk: gestiona instancias de Vinyl y proporciona un equilibrador de carga para distribuir las solicitudes de los clientes.
Nota
Aunque una parte considerable de este documento analiza la despliegue de Elastic Beanstalk – esto no es necesario ni obligatorio. Vinyl se puede instalar en instancias EC2 independientes y configurarse 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 almacenamiento a largo plazo. En consecuencia, las claves de cifrado de datos (DEK) deben almacenarse en depósitos de S3.
Depósitos 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 | aws-elasticbeanstalk-ec2- rol | Depósito 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 clave de cifrado de datos (DEK) del ambiente de Elastic Beanstalk
Vinyl se envía con un secuencia de comandos .ebextensions que registra las propiedades del ambiente para el almacenamiento DEK. Estas propiedades incluyen:
Propiedad | Predeterminado | Ejemplo |
---|---|---|
Almacenamiento de claves de cifrado de datos | T3 | T3 |
DataEncryptionKeyS3BucketEndpoint | https://{bucket}.s3{-aws-region}.amazonaws.com | https://s3.amazonaws.com/vinyl-data-encryption-keys |
DataEncryptionKeyS3KeyPrefix | {nombre-del-ambiente-elastic-beanstalk} | aceptación zudy |
Vinyl no se iniciará con las propiedades del ambiente predeterminadas de Elastic Beanstalk. Debe cambiar los valores de DataEncryptionKeyS3BucketEndpoint y DataEncryptionKeyS3KeyPrefix.
Otorgar Acceso a los Ambientes de Elastic Beanstalk a los Depósitos de S3¶
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 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 servidores Vinyl. 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 Sin Beanstalk configuraciones.
Configuración de la Base de Datos¶
La configuración de la base de datos está fuera del alcance de este documento. Jitterbit puede proporcionar instrucciones de configuración de RDS si lo desea.
Configuración de Beanstalk Elástico¶
Amazon modifica su interfaz con frecuencia. Estas capturas de pantalla y el flujo son precisos a noviembre de 2016.
Crea el ambiente:
Seleccione "Crear servidor web"
Seleccione IIS.
La configuración tendrá por defecto un valor que no queremos. Seleccione "Cambiar versión de plataforma" y seleccione "8.5 en Windows Server 2012 R2 de 64 bits".
Seleccione la versión de la aplicación adecuada.
Introduzca el nombre del ambiente. Esto pasará a formar parte de una URL que podría usarse para llegar 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 del ELB debe ser Externa
Revisa el resumen:
Permisos
Después de Que el Medio Ambiente Mejore¶
El ambiente tardará aproximadamente 15 minutos en aparecer.
Luego 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: S3KeyPrefix
-
SharedState:RedisConnectionString a la cadena de conexión adecuada para redis (por ejemplo: 10.0.2.139:16016)
-
Estadocompartido:Proveedor
-
Después de estos pasos irás al sitio de Vinyl. Esto activará una instalación o actualización de la base de datos si es necesario.
Configurando HTTPS¶
De forma predeterminada, los nuevos ambientes de Elastic Beanstalk no están configurados para HTTPS. Se recomienda encarecidamente HTTPS para todos los ambientes nuevos de Elastic Beanstalk.
Los ambientes de Elastic Beanstalk finalizan la conexión HTTPS en Elastic Load Balancer. El soporte de Vinyl para proxies inversos le permite detectar y manejar este escenario. Vinyl reconoce tres propiedades del ambiente definidas cuando se implementa la instancia de Elastic Beanstalk. Estas variables de ambiente están scripted: no necesitará configurarlos usted mismo.
Configuración de Elastic Beanstalk para aceptar solicitudes HTTPS
-
Inicie sesión en la Consola de servicios web de Amazon.
-
En Servicios, elija 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.
-
Configure el Puerto de escucha seguro en 443.
-
Seleccione el ID de certificado SSL que corresponda (Vinyl usa wildcard.zudy.com; otros sitios usarán algo diferente)
Nota
Esto supone que se podrá acceder a su nuevo ambiente de Elastic Beanstalk a través de *.zudy.com.
-
Haga clic en el botón Guardar.
Configuración del Servidor de Aplicaciones Que No Es Beanstalk¶
Si no utiliza AWS Elastic Beanstalk, está configurando los servidores de aplicaciones manualmente.
Deberá realizar los siguientes cambios en la configuración predeterminada de Vinyl; estas configuraciones deben aplicarse a cada instancia de Vinyl:
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 Vinyl debe tener el mismo archivo Connection.xml.
Después de realizar cambios y reiniciar Vinyl, verifique los registros para verificar que la configuración se esté seleccionando correctamente.