Alojamiento e implementación (v2)

Actualizado

Elección de idioma de integración

El equipo de ingeniería de Reincubate utiliza principalmente Python. En consecuencia, las implementaciones de cliente de muestra más sofisticadas se construyen en Python, aunque no hay una razón difícil para usar el lenguaje. La API es utilizada por clientes que ejecutan .NET / C #, PHP, Python, Java y JavaScript / Node.js.

Conectividad y selección de centros de datos.

La infraestructura de la API de ricloud está alojada por varios proveedores en los EE. UU., La UE y Canadá, incluidos Google Cloud Platform, Amazon Web Services y Microsoft Azure.

Al consumir datos de un canal en producción, el proceso de escucha será responsable de escuchar una red de datos y, por lo tanto, requiere una conexión a Internet confiable y de alto ancho de banda de al menos 100Mb / s. Las conexiones más lentas pueden funcionar pero podrían eliminar datos, como se describe en un canal .

Los clientes que probablemente consuman grandes cantidades de datos deben usar socios de hosting para esta parte de su infraestructura, con nivel 1 peering para garantizar un acceso confiable y de gran ancho de banda a estos hosts. De manera similar, esto es recomendable para los clientes que utilizan el ricloud 1.x heredado .

Las solicitudes dadas a asapi y asmaster son típicamente de ancho de banda bajo y volumen bajo, no hay requisitos particulares para los clientes de alojamiento de estos componentes.

Estrategias de alta disponibilidad para aschannel.

Ya que sólo un único proceso de escucha podrá adjuntar a aschannel a la vez, los clientes que necesitan alta disponibilidad en su propia implementación podrían considerar la Open Source keepalived proyecto para alta disponibilidad.

Utilizando el cliente de muestra en producción.

Para algunos casos de uso, el cliente de muestra de ricloud-py se puede poner directamente en producción, evitando que los clientes desarrollen integraciones.

Cuando se implementa en producción en modo de escucha, la biblioteca requerirá una máquina con almacenamiento para almacenar en búfer el contenido recibido hasta que la aplicación del cliente lo recupere y lo purgue.

Plataformas soportadas

Solo se requiere la instalación básica predeterminada de Ubuntu Server 16.04 LTS con MySQL 5.7. Una vez instalados, los paquetes necesarios se pueden agregar con el siguiente comando:

$ apt-get install python-pip libmysqlclient-dev mysql-server

Plataformas no soportadas que se conocen trabajando.

  • La mayoría de las distribuciones de servidor y nube de Linux
  • macOS 10.12 con la distribución de MySQL de Brew ( descarga )

Preparando el servidor para la producción.

Ubuntu 16.04 tiene una serie de valores predeterminados que pueden limitar la funcionalidad del oyente en un entorno de producción.

Número máximo de archivos abiertos

De forma predeterminada, el límite de descriptores de archivos abiertos se establece en 171,614, y los descriptores de archivos máximos por sesión se establecen en 1,024:

$ cat /proc/sys/fs/file-max
171614
$ ulimit -n
1024

Para optimizar la recepción de muchos archivos al mismo tiempo, el oyente mantiene abierta una secuencia de archivos para cada archivo que se está fragmentando. En consecuencia, si se transmiten y fragmentan muchos archivos al mismo tiempo, es probable que se supere el límite de 1.024.

El límite de sesión se puede levantar creando un archivo llamado /etc/security/limits.d/ricloud-listener.conf con el siguiente contenido:

* hard nofile 10240
* soft nofile 10240

Una vez que se haya iniciado una nueva sesión, estos nuevos límites entrarán en vigencia. Sin tener que reiniciar la sesión, el límite se puede cambiar con el siguiente comando:

$ ulimit -n 10240

Tamaño máximo del paquete MySQL

Por defecto, el paquete más grande que MySQL manejará en Ubuntu 16.04 es de alrededor de 3.5MB:

mysql> show global variables like 'max_allowed%';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 33554432 |
+--------------------+----------+
1 row in set (0.11 sec)

Los cuerpos de alimentación grandes pueden desbordar este tamaño a medida que se insertan. Una gran cantidad de entradas de datos HealthKit granulares pueden ejecutar fácilmente varios cientos de megabytes de JSON. Esto se indicará mediante la siguiente línea en el registro de MySQL:

[Note] Aborted connection 277783 to db: 'ricloud' user: 'ricloud' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)

El siguiente error estará presente en el ricloud.log :

2017-05-01 16:23:52,828 root CRITICAL <class '_mysql_exceptions.OperationalError'>: (2006, 'MySQL server has gone away')
OperationalError: (2006, 'MySQL server has gone away')

Esto se puede resolver restableciendo max_allowed_packet , que tiene un tamaño máximo de 1 GB. Esto se puede cambiar en tiempo de ejecución con esto:

SET GLOBAL max_allowed_packet=1073741824;

Se puede cambiar de forma permanente configurando el archivo my.cnf del servidor:

max_allowed_packet=1073741824

Tamaño máximo del archivo de registro de MySQL InnoDB

El motor de almacenamiento MySQL InnoDB tiene una restricción por la cual el tamaño de los elementos insertados en la tabla no puede ser superior al 10% del tamaño del registro de rehacer. El error que esta restricción puede desencadenar se ve así:

(1118, 'The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size. Increase the redo log size using innodb_log_file_size.')

Como sugiere el error, la solución es aumentar el tamaño de la configuración innodb_log_file_size a un valor apropiado. Las restricciones en el valor de esta configuración se pueden encontrar aquí .

Configuración como servicio

Configurar el servicio de escucha para que se ejecute como un servicio en Ubuntu 16.04 es sencillo.

Agregue lo siguiente a un nuevo archivo en /etc/systemd/system/ricloud-listener.service :

[Unit]
Description=ricloud listener
After=network-online.target

[Service]
WorkingDirectory=/var/www-hosts
ExecStart=/usr/bin/python -m ricloud --listen
Restart=always
KillSignal=SIGQUIT
Type=simple
StandardError=syslog
NotifyAccess=all
User=www-data
Group=www-data

[Install]
WantedBy=multi-user.target

Asegúrese de que exista la carpeta /var/www-hosts/logs y que el usuario de www-data pueda escribir en ella. Por supuesto, cualquier carpeta o usuario dado podría configurarse para esto. Luego, reinicie el servicio system.d e inicie el nuevo servicio ricloud-listener .

$ sudo mkdir -p /var/www-hosts/logs
$ sudo chown -R www-data:www-data /var/www-hosts
$ sudo systemctl daemon-reload
$ sudo systemctl start ricloud-listener

Cortafuegos del cliente de muestra

Entrante

  • No se requiere acceso al tráfico de Internet entrante para el funcionamiento normal.
  • Cuando se usa en modo de escucha, la configuración de un cliente puede requerir tráfico de LAN entrante en TCP/3306 para la instancia de MySQL local, y otros puertos para compartir cualquier sistema de archivos.

De salida

  • La biblioteca de ricloud realiza solicitudes de salida en TCP/443 a los tres nombres de host para recuperar datos: asmaster.reincubate.com , asapi.reincubate.com y aschannel.reincubate.com .
  • El tráfico a asmaster y asapi se puede enviar de forma segura si es necesario, pero es importante tener en cuenta los requisitos de conectividad . Proxying aschannel no se recomienda.

Uso de componentes de escritorio en producción.

Plataformas soportadas

El componente asrelay etiquetado en blanco se ejecuta en Windows 7 y más reciente (7, 8, 8.1, 10, etc.) y macOS 10.11 y superior.

Firma de codigo

Para crear una compilación de marca blanca de confianza del componente de escritorio, se requieren certificados de firma de código. Microsoft publica información sobre estos, y Apple proporciona certificados como parte de su programa de desarrollo .

Estableciendo la confianza del navegador

Los navegadores utilizan diferentes técnicas para aplicar un nivel básico de protección alrededor de las descargas. Los navegadores modernos no confían en los archivos desconocidos de forma predeterminada. Chrome muestra un mensaje en las descargas que indica "Este tipo de archivo puede dañar su computadora. ¿Desea mantener binary.exe de todos modos?". El navegador Edge de Microsoft muestra un panel "Pantalla de Windows Smarts". Los navegadores utilizan una serie de criterios diferentes para comprender si deben avisar: verán el dominio, la naturaleza del archivo y, sobre todo, si lo han visto lo suficiente antes para comprender si es seguro.

Si uno descargaba la aplicación para el consumidor de Reincubate, no se mostrará ninguna advertencia, ya que es bien conocida por los navegadores.

En el caso del cliente de retransmisión, no se distribuye públicamente tal como está: se marca en blanco y se firma con la clave de firma de código de un cliente. Los navegadores confían en la clave de firma de código y el dominio de Reincubate, pero tienden a no reconocerla porque no se envía al público.

Cuando asrelay se personaliza con el nombre y la firma del código de un cliente, se tratará como una nueva aplicación (no tendrá el certificado de Reincubate) y comenzará sin reputación, por lo que los navegadores lo marcarán durante la descarga. Para ser confiable, el nuevo programa necesita conocer muchas de las computadoras lo antes posible. En general, cuando se realiza un cambio significativo en un factor de confianza, se pueden superar esas pantallas con bastante rapidez con la cantidad de días de descargas e instalaciones.

¿Cómo podemos ayudar?

¡Nuestro equipo de soporte está aquí para ayudar!

Nuestro horario de atención es de lunes a viernes de 9 a.m. a 5 p.m. GMT. El tiempo es actualmente 1:56 AM GMT.

Intentamos responder todos los mensajes en un plazo de un día laboral.

Ir a la sección de soporte › Póngase en contacto con el equipo de la empresa. ›
Nuestro increíble equipo de soporte.

© 2008 - 2019 Reincubate Ltd. Todos los derechos reservados. Registrado en Inglaterra y Gales #5189175, VAT GB151788978. Reincubate® es una marca registrada. Términos y privacidad. Recomendamos la autenticación de múltiples factores. Construido con en Londres.