Hosting e distribuzione (v2)

aggiornato

Scelta della lingua di integrazione

Il team di tecnici Reincubate utilizza principalmente Python. Di conseguenza, le implementazioni client di esempio più sofisticate sono costruite in Python, sebbene non ci sia alcun motivo per usare la lingua. L'API viene utilizzata dai client che eseguono .NET / C #, PHP, Python, Java e JavaScript / Node.js.

Connettività e selezione del datacentre

L' infrastruttura dell'API di ricloud è ospitata da numerosi fornitori negli Stati Uniti, in Europa e in Canada, tra cui Google Cloud Platform, Amazon Web Services e Microsoft Azure.

Quando si consumano dati da aschannel in produzione, il processo di ascolto sarà responsabile dell'ascolto di un firehose di dati e, di conseguenza, richiede una connessione Internet affidabile ad alta larghezza di banda di almeno 100 Mb / s. Le connessioni più lente potrebbero funzionare ma potrebbero rilasciare dati, come descritto in aschannel .

I clienti che probabilmente consumano grandi quantità di dati dovrebbero utilizzare i partner di hosting per questa parte della loro infrastruttura, con il peering di primo livello per garantire un accesso affidabile e con larghezza di banda elevata a questi host. Allo stesso modo, questo è consigliabile per i client che utilizzano 1.x ricloud legacy .

Poiché le richieste a asapi e asmaster sono in genere a larghezza di banda ridotta e volume ridotto, non vi sono requisiti particolari per i client di hosting di questi componenti.

Strategie ad alta disponibilità per aschannel

Poiché solo un singolo processo listener può collegarsi ad aschannel alla volta, i client che necessitano di disponibilità elevata nella propria implementazione potrebbero considerare il progetto keepalived Open Source per l'alta disponibilità.

Utilizzo del client di esempio in produzione

Per alcuni casi d'uso, il client di esempio ricloud-py può essere messo direttamente in produzione, risparmiando ai clienti la costruzione di integrazioni.

Quando viene distribuito in produzione in modalità listener, la libreria richiederà una macchina con storage per memorizzare il contenuto ricevuto finché l'applicazione del client non lo recupera e lo elimina.

Piattaforme supportate

È richiesta solo l'installazione di base di base di Ubuntu Server 16.04 LTS con MySQL 5.7. Una volta installati, i pacchetti richiesti possono essere aggiunti con il seguente comando:

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

Piattaforme non supportate che sono note funzionanti

  • La maggior parte delle distribuzioni Linux server e cloud
  • macOS 10.12 con la distribuzione MySQL di Brew ( download )

Preparazione del server per la produzione

Ubuntu 16.04 ha un numero di valori predefiniti che possono limitare la funzionalità del listener in un ambiente di produzione.

Numero massimo di file aperti

Per impostazione predefinita, il limite dei descrittori di file aperti è impostato su 171.614 e il descrittore di file massimo per sessione è impostato su 1.024:

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

Al fine di ottimizzare la ricezione simultanea di molti file, il listener mantiene aperto un flusso di file per ogni file che viene frammentato. Di conseguenza, se molti file vengono trasmessi in streaming e suddivisi in blocchi contemporaneamente, è probabile che il limite di 1.024 verrà superato.

Il limite di sessione può essere revocato creando un file denominato /etc/security/limits.d/ricloud-listener.conf con i seguenti contenuti:

* hard nofile 10240
* soft nofile 10240

Una volta che una nuova sessione è stata avviata, questi nuovi limiti avranno effetto. Senza dover riavviare la sessione, il limite può essere modificato con il seguente comando:

$ ulimit -n 10240

Dimensione massima del pacchetto MySQL

Di default il pacchetto più grande che MySQL gestirà su Ubuntu 16.04 è di circa 3,5 MB:

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

Grandi corpi di alimentazione possono traboccare di queste dimensioni quando vengono inseriti. Un gran numero di voci di dati HealthKit granulari possono facilmente eseguire diverse centinaia di megabyte di JSON. Questo sarà indicato dalla riga seguente nel log MySQL:

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

Il seguente errore sarà presente in 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')

Questo può essere risolto reimpostando max_allowed_packet , che ha una dimensione massima di 1 GB. Questo può essere modificato in fase di esecuzione con questo:

SET GLOBAL max_allowed_packet=1073741824;

Può essere modificato in modo permanente configurando il file my.cnf del server:

max_allowed_packet=1073741824

Dimensione massima del file di registro InnoDB MySQL

Il motore di archiviazione MySQL InnoDB ha una restrizione in base alla quale la dimensione degli elementi inseriti nella tabella non può essere maggiore del 10% delle dimensioni del registro di ripristino. L'errore che questa restrizione può attivare è simile a:

(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.')

Come suggerisce l'errore, la correzione consiste nell'aumentare la dimensione dell'impostazione innodb_log_file_size su un valore appropriato. Le restrizioni sul valore di questa impostazione possono essere trovate qui .

Configurazione come servizio

La configurazione del listener da eseguire come servizio su Ubuntu 16.04 è semplice.

Aggiungi quanto segue ad un nuovo file in /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

Assicurarsi che la cartella /var/www-hosts/logs esista e che sia scrivibile dall'utente www-data . Ovviamente, qualsiasi cartella o utente può essere configurato per questo. Quindi, riavviare il servizio system.d e avviare il nuovo servizio 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

Firewalling del client di esempio

In entrata

  • Nessun accesso Internet in entrata è richiesto per il normale funzionamento.
  • Quando viene utilizzato in modalità listener, l'installazione di un client può richiedere il traffico LAN in entrata su TCP/3306 per l'istanza MySQL locale e altre porte per qualsiasi condivisione di file system.

In uscita

  • La libreria ricloud effettua richieste in uscita su TCP/443 ai tre nomi host nel recupero dei dati: asmaster.reincubate.com , asapi.reincubate.com e aschannel.reincubate.com .
  • Il traffico verso asmaster e asapi può essere inoltrato in sicurezza se necessario, ma è importante notare i requisiti relativi alla connettività . L'aschannel di proxy è sconsigliato.

Utilizzo dei componenti desktop in produzione

Piattaforme supportate

Il componente astoray con etichetta bianca funziona su Windows 7 e successivi (7, 8, 8.1, 10, ecc.) E macOS 10.11 e successivi.

La firma del codice

Per creare una build white-label affidabile del componente desktop, sono richiesti i certificati di firma codice. Microsoft pubblica informazioni su questi e Apple fornisce i certificati come parte del loro programma di sviluppo .

Stabilire la fiducia del browser

I browser utilizzano tecniche diverse per applicare un livello base di protezione attorno ai download. I browser moderni non si fidano di file sconosciuti per impostazione predefinita. Chrome mostra un messaggio sui download che afferma "Questo tipo di file può danneggiare il tuo computer. Vuoi comunque mantenere binary.exe?". Il browser Edge di Microsoft genera un riquadro "Windows Smartscreen". I browser utilizzano una serie di criteri diversi per capire se avvisare: guarderanno il dominio, la natura del file e soprattutto se lo hanno già visto abbastanza volte prima di capire se è sicuro.

Se si dovesse scaricare l' applicazione consumer di Reincubate, non verrà visualizzato alcun avviso poiché è ben noto ai browser.

Nel caso del client in questione, non è distribuito pubblicamente così com'è: diventa etichettato in bianco e firmato con la chiave di firma del codice di un cliente. I browser si fidano della chiave e del dominio per la firma del codice di Reincubate , ma tendono a non riconoscerlo in quanto non viene pubblicizzato.

Quando asrelay è personalizzato con il nome del cliente e la firma del codice, sarà trattata come una nuova applicazione (non avrà certificato del reincubare) e partirà con nessuna reputazione, così sarà contrassegnato dal browser su download. Per diventare affidabile, il nuovo programma ha bisogno di conoscere molti computer il prima possibile. Generalmente, quando si effettua un cambiamento significativo in un fattore di fiducia si può superare abbastanza rapidamente quegli schermi con un paio di giorni di download e installazioni.

Come possiamo aiutare?

Il nostro team di supporto è qui per aiutarti!

I nostri orari di ufficio sono dal lunedì al venerdì, dalle 9:00 alle 17:00 GMT. L'ora è attualmente 2:32 PM GMT.

Miriamo a rispondere a tutti i messaggi entro un giorno lavorativo.

Vai alla sezione di supporto › Contatta il team aziendale ›
Il nostro fantastico team di supporto

© 2008 - 2019 Reincubate Ltd. Tutti i diritti riservati. Registrato in Inghilterra e Galles #5189175, VAT GB151788978. Reincubate® è un marchio registrato. Termini e Condizioni. Raccomandiamo 2FA. Costruito con a Londra.