Hospedagem e implantação (v2)

Atualizada

Escolha de idioma de integração

A equipe de engenharia da Reincubate usa principalmente Python. Conseqüentemente, as implementações de amostra mais sofisticadas do cliente são criadas em Python, embora não haja nenhuma razão para usar a linguagem. A API é usada por clientes que executam o .NET / C #, PHP, Python, Java e JavaScript / Node.js.

Conectividade e seleção do centro de dados

A infraestrutura da API do ricloud é hospedada por vários provedores nos EUA, na UE e no Canadá, incluindo o Google Cloud Platform, o Amazon Web Services e o Microsoft Azure.

Ao consumir dados a partir de um canal em produção, o processo do ouvinte será responsável por ouvir uma mangueira de dados e, consequentemente, requer uma conexão de Internet confiável de alta largura de banda de pelo menos 100Mb / s. Conexões mais lentas podem funcionar, mas podem descartar dados, conforme descrito em aschannel .

Os clientes que provavelmente consomem grandes quantidades de dados devem usar parceiros de hospedagem para essa parte de sua infraestrutura, com o peering de camada 1 para garantir acesso confiável e de alta largura de banda a esses hosts. Da mesma forma, isso é aconselhável para clientes que usam o ricloud 1.x legado .

Dado que as solicitações para asapi e asmaster são tipicamente de baixa largura de banda e baixo volume, não há requisitos específicos para hospedar clientes desses componentes.

Estratégias de alta disponibilidade para aschannel

Como apenas um único processo de ouvinte pode anexar a cada canal , os clientes que precisam de alta disponibilidade em sua própria implementação podem considerar o projeto keepalived de Open Source para alta disponibilidade.

Usando o cliente de amostra na produção

Para alguns casos de uso, o cliente de exemplo ricloud-py pode ser colocado diretamente em produção, economizando clientes de integrações de construção.

Quando implantada em produção no modo ouvinte, a biblioteca exigirá uma máquina com armazenamento para armazenar em buffer o conteúdo recebido até que o aplicativo do cliente recupere e elimine o conteúdo.

Plataformas Suportadas

Apenas a instalação básica padrão do Ubuntu Server 16.04 LTS com o MySQL 5.7 é necessária. Uma vez instalados, os pacotes necessários podem ser adicionados com o seguinte comando:

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

Plataformas não suportadas que são conhecidas

  • A maioria das distribuições de servidores e nuvem do Linux
  • macOS 10.12 com a distro MySQL de Brew ( download )

Preparando o servidor para produção

O Ubuntu 16.04 possui vários padrões que podem limitar a funcionalidade do ouvinte em um ambiente de produção.

Número máximo de arquivos abertos

Por padrão, o limite de descritores de arquivos abertos é definido como 171,614 e o máximo de descritores de arquivos por sessão é definido como 1,024:

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

Para otimizar o recebimento de muitos arquivos simultaneamente, o listener mantém um fluxo de arquivos aberto para cada arquivo sendo fragmentado. Conseqüentemente, se muitos arquivos estiverem sendo transmitidos e fragmentados ao mesmo tempo, é provável que o limite de 1.024 seja excedido.

O limite de sessão pode ser elevado criando um arquivo chamado /etc/security/limits.d/ricloud-listener.conf com o seguinte conteúdo:

* hard nofile 10240
* soft nofile 10240

Uma vez iniciada uma nova sessão, esses novos limites entrarão em vigor. Sem ter que reiniciar a sessão, o limite pode ser alterado com o seguinte comando:

$ ulimit -n 10240

Tamanho máximo do pacote MySQL

Por padrão, o maior pacote que o MySQL tratará no Ubuntu 16.04 é de cerca de 3,5 MB:

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

Grandes corpos de alimentação podem transbordar esse tamanho à medida que são inseridos. Muitas entradas granulares de dados do HealthKit podem executar várias centenas de megabytes de JSON facilmente. Isso será indicado pela seguinte linha no log do MySQL:

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

O seguinte erro estará presente no 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')

Isso pode ser resolvido redefinindo max_allowed_packet , que tem um tamanho máximo de 1 GB. Isso pode ser alterado em tempo de execução com isso:

SET GLOBAL max_allowed_packet=1073741824;

Ele pode ser alterado permanentemente, configurando o arquivo my.cnf do servidor:

max_allowed_packet=1073741824

Tamanho máximo do arquivo de log do MySQL InnoDB

O mecanismo de armazenamento do MySQL InnoDB tem uma restrição em que o tamanho dos itens inseridos na tabela não pode ser maior que 10% do tamanho do log de redo. O erro que esta restrição pode desencadear se parece com:

(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 o erro sugere, a correção é aumentar o tamanho da configuração innodb_log_file_size para um valor apropriado. As restrições sobre o valor dessa configuração podem ser encontradas aqui .

Configuração como um serviço

Configurando o ouvinte para executar como um serviço no Ubuntu 16.04 é simples.

Adicione o seguinte a um novo arquivo em /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

Assegure-se de que a pasta /var/www-hosts/logs exista, e que seja gravável pelo usuário www-data . Claro, qualquer pasta ou usuário pode ser configurado para isso. Em seguida, reinicie o serviço system.d e inicie o novo serviço 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

Firewall do cliente de amostra

Entrada

  • Nenhum acesso de tráfego de entrada à Internet é necessário para a operação normal.
  • Ao ser usado no modo ouvinte, a configuração de um cliente pode exigir tráfego LAN de entrada no TCP/3306 para a instância local do MySQL e outras portas para qualquer compartilhamento do sistema de arquivos.

Saída

  • A biblioteca ricloud faz solicitações de saída no TCP/443 para os três nomes de host na recuperação de dados: asmaster.reincubate.com , asapi.reincubate.com e aschannel.reincubate.com .
  • O tráfego para asmaster e asapi pode ser protegido com proxy se necessário, mas é importante observar os requisitos relacionados à conectividade . O aschannel de proxies não é recomendado.

Usando componentes da área de trabalho em produção

Plataformas Suportadas

O componente asrelay com marcação branca é executado no Windows 7 e mais recente (7, 8, 8.1, 10, etc.) e no MacOS 10.11 e superior.

Assinatura de código

Para criar uma versão de marca de confiança do componente de área de trabalho, os certificados de assinatura de código são necessários. A Microsoft publica informações sobre eles e a Apple fornece certificados como parte de seu programa de desenvolvedor .

Estabelecendo confiança do navegador

Os navegadores usam diferentes técnicas para aplicar um nível básico de proteção em downloads. Navegadores modernos não confiam em arquivos desconhecidos por padrão. O Chrome mostra uma mensagem em downloads dizendo "Este tipo de arquivo pode danificar seu computador. Deseja manter o binário.exe de qualquer maneira?". O navegador Microsoft Edge lança um painel "Windows Smartscreen". Os navegadores usam vários critérios diferentes ao entender se devem avisar: eles examinarão o domínio, a natureza do arquivo e, acima de tudo, se já o viram antes para entender se é seguro.

Se alguém baixar o aplicativo do consumidor do Reincubate, nenhum aviso será mostrado, pois é bem conhecido pelos navegadores.

No caso do cliente asrelay, ele não é publicamente distribuído no estado em que se encontra: ele é rotulado em branco e assinado com a chave de assinatura de código de um cliente. Os navegadores confiam na chave e no domínio de assinatura de código de Reincubate, mas eles tendem a não reconhecer asrelay, pois não são enviados ao público.

Quando o asrelay é personalizado com o nome do cliente e a assinatura de código, ele será tratado como um novo aplicativo (não terá o certificado do Reincubate) e será iniciado sem reputação, portanto, ele será sinalizado pelos navegadores no download. Para se tornar confiável, o novo programa precisa conhecer muitos dos computadores o mais rápido possível. Geralmente, ao fazer uma mudança significativa em um fator de confiança, é possível passar rapidamente por essas telas com poucos dias de downloads e instalações.

Como podemos ajudar?

Nossa equipe de suporte está aqui para ajudar!

Nosso horário de atendimento é de segunda a sexta, das 9h às 17h GMT. A hora é atualmente 12:54 AM GMT.

Nosso objetivo é responder a todas as mensagens dentro de um dia útil.

Vá para a seção de apoio › Entre em contato com a equipe da empresa ›
Nossa equipe de suporte incrível

© 2008 - 2019 Reincubate Ltd. Todos os direitos reservados. Registrado na Inglaterra e no País de Gales #5189175, VAT GB151788978. Reincubate® é uma marca registrada. Privacidade e Termos. Recomendamos 2FA. Construído com em Londres.