Hosting und Bereitstellung (v2)

Aktualisierte

Wahl der Integrationssprache

Das Ingenieurteam von Reincubate verwendet hauptsächlich Python. Folglich sind die anspruchsvollsten Beispiel-Client-Implementierungen in Python erstellt, obwohl es keinen harten Grund gibt, Sprache zu verwenden. Die API wird von Clients verwendet, auf denen .NET / C #, PHP, Python, Java und JavaScript / Node.js ausgeführt werden.

Konnektivität und Auswahl von Rechenzentren

Die Infrastruktur der ricloud- API wird von einer Reihe von Anbietern in den USA, der EU und Kanada bereitgestellt, darunter Google Cloud Platform, Amazon Web Services und Microsoft Azure.

Beim Abrufen von Daten aus einem Kanal in der Produktion ist der Listener-Prozess für das Abhören eines Datenfeuers verantwortlich und erfordert daher eine zuverlässige Internetverbindung mit hoher Bandbreite von mindestens 100 MBit / s. Langsamere Verbindungen funktionieren möglicherweise, können jedoch Daten löschen , wie in aschannel beschrieben .

Kunden, die wahrscheinlich große Datenmengen verbrauchen, sollten Hosting-Partner für diesen Teil ihrer Infrastruktur mit Tier-1-Peering verwenden , um einen zuverlässigen Zugriff auf diese Hosts mit hoher Bandbreite zu gewährleisten. Dies ist auch für Kunden mit älteren Versionen von ricloud 1.x empfehlenswert .

Gegeben Anfragen an ASAPI und asmaster sind in der Regel niedrige Bandbreite und geringes Volumen, gibt es keine besonderen Anforderungen für die Kunden dieser Komponenten Hosting.

Hochverfügbarkeitsstrategien für aschannel

Da immer nur ein Listener-Prozess gleichzeitig mit einem Kanal verbunden sein kann, wird für Clients, die in ihrer eigenen Implementierung Hochverfügbarkeit benötigen, möglicherweise das Open Source Keepalived- Projekt für Hochverfügbarkeit in Betracht gezogen.

Verwenden des Beispielclients in der Produktion

In einigen Anwendungsfällen kann der Beispielclient ricloud-py direkt in die Produktion übernommen werden, um Clients vor Gebäudeintegrationen zu ricloud-py .

Bei der Bereitstellung in der Produktion im Listener-Modus benötigt die Bibliothek einen Computer mit Speicher, um empfangenen Inhalt zu puffern, bis die Clientanwendung ihn abruft und löscht.

Unterstützte Plattformen

Nur die Standard-Grundinstallation von Ubuntu Server 16.04 LTS mit MySQL 5.7 ist erforderlich. Nach der Installation können die erforderlichen Pakete mit dem folgenden Befehl hinzugefügt werden:

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

Nicht unterstützte Plattformen, von denen bekannt ist, dass sie funktionieren

  • Die meisten Server- und Cloud-Linux-Distributionen
  • macOS 10.12 mit der MySQL-Distribution von Brew ( Download )

Server für die Produktion vorbereiten

Ubuntu 16.04 verfügt über eine Reihe von Standardeinstellungen, die die Funktionalität des Listeners in einer Produktionsumgebung einschränken können.

Maximale Anzahl geöffneter Dateien

Standardmäßig ist die Anzahl der offenen Dateideskriptoren auf 171.614 und die maximale Anzahl der Dateideskriptoren pro Sitzung auf 1.024 festgelegt:

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

Um den gleichzeitigen Empfang vieler Dateien zu optimieren, hält der Listener einen Dateistream für jede heruntergeladene Datei offen. Wenn viele Dateien gleichzeitig gestreamt und aufgeteilt werden, ist es daher wahrscheinlich, dass das Limit von 1.024 überschritten wird.

Das Sitzungslimit kann durch Erstellen einer Datei mit dem Namen /etc/security/limits.d/ricloud-listener.conf mit folgendem Inhalt aufgehoben werden:

* hard nofile 10240
* soft nofile 10240

Sobald eine neue Sitzung gestartet wurde, werden diese neuen Grenzwerte wirksam. Ohne die Sitzung neu starten zu müssen, kann das Limit mit dem folgenden Befehl geändert werden:

$ ulimit -n 10240

Maximale MySQL-Paketgröße

Standardmäßig ist das größte Paket, das MySQL unter Ubuntu 16.04 verarbeiten kann, ungefähr 3,5 MB groß:

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

Große Futterkörper können diese Größe beim Einsetzen überlaufen. Viele granulare HealthKit-Dateneinträge können problemlos mehrere hundert Megabyte JSON ausführen. Dies wird durch die folgende Zeile im MySQL-Protokoll angezeigt:

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

Der folgende Fehler wird in der 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')

Dies kann durch Zurücksetzen von max_allowed_packet , das eine maximale Größe von 1 GB hat. Dies kann zur Laufzeit folgendermaßen geändert werden:

SET GLOBAL max_allowed_packet=1073741824;

Sie kann dauerhaft geändert werden, indem my.cnf Datei my.cnf des Servers my.cnf :

max_allowed_packet=1073741824

Maximale Größe der MySQL InnoDB-Protokolldatei

Die MySQL InnoDB-Speicher-Engine hat eine Einschränkung, wonach die Größe der in die Tabelle eingefügten Elemente nicht größer als 10% der Redo-Log-Größe sein darf. Der Fehler, den diese Einschränkung auslösen kann, sieht folgendermaßen aus:

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

Wie der Fehler vermuten lässt, besteht die Lösung darin, die Einstellung innodb_log_file_size auf einen geeigneten Wert zu erhöhen. Die Einschränkungen für den Wert dieser Einstellung finden Sie hier .

Konfiguration als Dienst

Das Konfigurieren des Listeners für die Ausführung als Dienst unter Ubuntu 16.04 ist unkompliziert.

Fügen Sie Folgendes zu einer neuen Datei unter /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

Stellen Sie sicher, dass der Ordner /var/www-hosts/logs vorhanden und vom Benutzer www-data beschreibbar ist. Natürlich kann jeder Ordner oder Benutzer dafür konfiguriert werden. Dann starten Sie den system.d Service und starten Sie den neuen ricloud-listener - Service.

$ 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 für den Beispielclient

Eingehende

  • Für den normalen Betrieb ist kein Zugriff auf eingehenden Internetverkehr erforderlich.
  • Bei Verwendung im Listener-Modus erfordert das Setup eines Clients möglicherweise eingehenden LAN-Verkehr unter TCP/3306 für die lokale MySQL-Instanz und andere Ports für die gemeinsame Nutzung von Dateisystemen.

Ausgehend

  • Die ricloud- Bibliothek sendet ausgehende Anforderungen unter TCP/443 an die drei Hostnamen, um Daten abzurufen: asmaster.reincubate.com , asapi.reincubate.com und aschannel.reincubate.com .
  • Trafik asmaster und ASAPI sicher proxied, wenn es sein muss, aber es ist wichtig , die beachten Anforderungen rund um Konnektivität . Ein Proxy- Kanal wird nicht empfohlen.

Verwenden von Desktop-Komponenten in der Produktion

Unterstützte Plattformen

Die weiß beschriftete Relay- Komponente kann unter Windows 7 und höher (7, 8, 8.1, 10 usw.) sowie unter MacOS 10.11 und höher ausgeführt werden.

Codesignatur

Um einen vertrauenswürdigen White-Label-Build der Desktop-Komponente zu erstellen, sind Codesignaturzertifikate erforderlich. Microsoft veröffentlicht Informationen dazu , und Apple stellt Zertifikate als Teil seines Entwicklerprogramms zur Verfügung .

Browser-Vertrauenswürdigkeit herstellen

Browser wenden verschiedene Techniken an, um eine grundlegende Schutzstufe für Downloads anzuwenden. Moderne Browser vertrauen standardmäßig unbekannten Dateien nicht. Chrome zeigt beim Herunterladen eine Meldung an, die besagt, dass diese Art von Datei Ihrem Computer Schaden zufügen kann. Möchten Sie binary.exe trotzdem behalten? Der Edge-Browser von Microsoft öffnet einen Bereich "Windows Smartscreen". Browser verwenden eine Reihe verschiedener Kriterien, um zu verstehen, ob eine Warnung angezeigt werden soll: Sie überprüfen die Domäne, die Art der Datei und vor allem, ob sie diese bereits ausreichend oft gesehen haben, um zu verstehen, ob sie sicher ist.

Wenn die Verbraucheranwendung von Reincubate heruntergeladen werden soll, wird keine Warnung angezeigt, da dies den Browsern bekannt ist.

Im Fall des Asrelay-Clients wird es nicht wie besehen öffentlich verbreitet: Es wird mit einem weißen Etikett versehen und mit dem Codesignaturschlüssel eines Clients signiert. Browser vertrauen auf den Code-Signing-Schlüssel und die Domain von Reincubate , erkennen jedoch in der Regel kein Relay, da es nicht an die Öffentlichkeit weitergegeben wird.

Wenn asrelay mit dem Namen und der Codesignatur eines Kunden angepasst wird, wird es als neue Anwendung behandelt (es hat kein Reincubate-Zertifikat) und startet mit keiner Reputation. Daher wird es beim Herunterladen von Browsern markiert. Um vertrauenswürdig zu werden, muss das neue Programm so schnell wie möglich viele Computer kennenlernen. Im Allgemeinen kann man bei einer signifikanten Änderung eines Vertrauensfaktors diese Bildschirme mit ein paar Tagen an Downloads und Installationen ziemlich schnell überwinden.

Wie können wir helfen?

Unser Support-Team hilft Ihnen gerne weiter!

Unsere Bürozeiten sind Montag bis Freitag von 9 bis 17 Uhr GMT. Die Zeit ist aktuell 3:55 vorm. GMT.

Wir bemühen uns, auf alle Mitteilungen innerhalb eines Arbeitstages zu antworten.

Zum Support-Bereich gehen › Wenden Sie sich an das Unternehmensteam ›
Unser großartiges Supportteam

© 2008 - 2019 Reincubate Ltd. Alle Rechte vorbehalten. Registriert in England und Wales #5189175, VAT GB151788978. Reincubate® ist eine eingetragene Marke. Datenschutz. Wir empfehlen die Multi-Faktor-Authentifizierung. Mit Liebe in London gebaut.