Hosting en implementatie (v2)

bijgewerkt

Taalkeuze voor integratie

Het Reincubate-engineeringsteam gebruikt voornamelijk Python. Daarom zijn de meest gesofisticeerde client-implementaties van de client gebouwd in Python, hoewel er geen reden is om taal te gebruiken. De API wordt gebruikt door clients met .NET / C #, PHP, Python, Java en JavaScript / Node.js.

Connectiviteit en datacenter selectie

De infrastructuur van de ricloud API wordt gehost door een aantal providers in de VS, EU en Canada, waaronder Google Cloud Platform, Amazon Web Services en Microsoft Azure.

Bij het gebruik van gegevens uit het aschannel in productie, is het luisterproces verantwoordelijk voor het luisteren naar een brandslang van gegevens, en vereist daarom een betrouwbare internetverbinding met een hoge bandbreedte van minimaal 100 Mb / s. Tragere verbindingen werken mogelijk, maar kunnen gegevens laten vallen, zoals beschreven in het askanaal .

Klanten die waarschijnlijk grote hoeveelheden gegevens willen gebruiken, moeten voor dit deel van hun infrastructuur gebruikmaken van hostingpartners, waarbij tier 1-peering zorgt voor betrouwbare toegang met hoge bandbreedte tot deze hosts. Evenzo is dit aan te raden voor klanten die oudere ricloud 1.x gebruiken .

Gezien de verzoeken aan asapi en asmaster doorgaans lage bandbreedte en laag volume zijn, zijn er geen specifieke vereisten voor het hosten van clients van deze componenten.

Strategieën met hoge beschikbaarheid voor aschannel

Aangezien slechts één proces van een luisteraar tegelijkertijd aan aschannel kan worden gekoppeld , kunnen clients die een hoge beschikbaarheid in hun eigen implementatie nodig hebben, overwegen om het Open Source keepalived- project voor hoge beschikbaarheid te behouden.

De voorbeeldclient gebruiken tijdens productie

Voor sommige use-cases kan de ricloud-py voorbeeldclient direct in productie worden genomen, waardoor klanten geen integraties kunnen opbouwen.

Wanneer de bibliotheek in productie wordt genomen in luisteraarmodus, heeft de bibliotheek een machine met opslagruimte nodig om ontvangen inhoud te bufferen totdat de toepassing van de client deze ophaalt en schoonmaakt.

Ondersteunde platforms

Alleen de standaardbasisinstallatie van Ubuntu Server 16.04 LTS met MySQL 5.7 is vereist. Na installatie kunnen de vereiste pakketten worden toegevoegd met de volgende opdracht:

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

Niet-ondersteunde platforms waarvan bekend is dat ze werken

  • De meeste server- en cloud-Linux-distributies
  • macOS 10.12 met Brew's MySQL distro ( download )

De server klaarmaken voor productie

Ubuntu 16.04 heeft een aantal standaardinstellingen die de functionaliteit van de luisteraar in een productieomgeving kunnen beperken.

Maximum aantal geopende bestanden

Standaard is de limiet van open bestandsbeschrijvingen ingesteld op 171.614 en de maximale bestandsdescriptors per sessie is ingesteld op 1.024:

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

Om het ontvangen van veel bestanden tegelijkertijd te optimaliseren, houdt de luisteraar een bestandsstream open voor elk bestand dat wordt afgebroken. Dit betekent dat als veel bestanden tegelijkertijd worden gestreamd en gesplitst, de limiet van 1024 waarschijnlijk wordt overschreden.

De /etc/security/limits.d/ricloud-listener.conf kan worden opgeheven door een bestand met de naam /etc/security/limits.d/ricloud-listener.conf met de volgende inhoud:

* hard nofile 10240
* soft nofile 10240

Zodra een nieuwe sessie is gestart, worden deze nieuwe limieten van kracht. Zonder de sessie opnieuw te hoeven starten, kan de limiet worden gewijzigd met de volgende opdracht:

$ ulimit -n 10240

Maximale MySQL-pakketgrootte

Standaard is het grootste pakket dat MySQL op Ubuntu 16.04 behandelt ongeveer 3.5MB:

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

Grote voederlichamen kunnen deze grootte overlopen wanneer ze worden ingebracht. Veel gedetailleerde HealthKit-gegevens kunnen gemakkelijk honderden MB JSON bevatten. Dit wordt aangegeven door de volgende regel in het MySQL-logboek:

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

De volgende fout is aanwezig in de 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')

Dit kan worden opgelost door max_allowed_packet opnieuw in te stellen, met een maximale grootte van 1 GB. Dit kan tijdens runtime hiermee worden gewijzigd:

SET GLOBAL max_allowed_packet=1073741824;

Het kan permanent worden gewijzigd door het my.cnf bestand van de server te configureren:

max_allowed_packet=1073741824

Maximale MySQL InnoDB-logbestandsgrootte

De MySQL InnoDB-opslagengine heeft een beperking waarbij de grootte van items die in de tabel zijn ingevoegd niet groter mag zijn dan 10% van de logboekomvang. De fout die deze beperking kan veroorzaken, ziet er als volgt uit:

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

Zoals de fout suggereert, is de oplossing het vergroten van de instelling innodb_log_file_size naar een geschikte waarde. De beperkingen op de waarde van deze instelling kunt u hier vinden .

Configuratie als een service

Het configureren van de listener om als een service op Ubuntu 16.04 uit te voeren, is eenvoudig.

Voeg het volgende toe aan een nieuw bestand op /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

Zorg ervoor dat de map /var/www-hosts/logs bestaat en dat deze door de gebruiker www-data kan worden beschreven. Natuurlijk kan elke willekeurige map of gebruiker hiervoor worden geconfigureerd. Start vervolgens de system.d service opnieuw en start de nieuwe 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 van de voorbeeldclient

inbound

  • Er is geen inkomende internetverkeerstoegang vereist voor normaal gebruik.
  • Als de client in de listenermodus wordt gebruikt, heeft de client mogelijk inkomend LAN-verkeer nodig op TCP/3306 voor het lokale MySQL-exemplaar en andere poorten voor het delen van bestandssystemen.

Uitgaande

  • De ricloud- bibliotheek maakt uitgaande aanvragen op TCP/443 naar de drie hostnamen bij het ophalen van gegevens: asmaster.reincubate.com , asapi.reincubate.com en aschannel.reincubate.com .
  • Verkeer naar asmaster en asapi kan veilig worden gezonden indien nodig, maar het is belangrijk om de vereisten rondom connectiviteit te noteren. Proxy- aschannel wordt niet aanbevolen.

Desktopcomponenten in productie gebruiken

Ondersteunde platforms

Het witgelabelde asrelay- onderdeel werkt op Windows 7 en nieuwer (7, 8, 8.1, 10, etc.) en macOS 10.11 en hoger.

Code-signing

Om een vertrouwde white-label-versie van de desktopcomponent te maken, zijn codes voor ondertekening van code vereist. Microsoft publiceert hier informatie over en Apple levert certificaten als onderdeel van hun ontwikkelaarsprogramma .

Browser-vertrouwen instellen

Browsers gebruiken verschillende technieken om een basisniveau van bescherming rond downloads toe te passen. Moderne browsers vertrouwen standaard niet op onbekende bestanden. Chrome geeft een bericht weer bij downloads waarin staat: "Dit type bestand kan schade toebrengen aan uw computer. Wilt u toch binary.exe behouden?". De Edge-browser van Microsoft werpt een deelvenster "Windows Smartscreen" op. Browsers gebruiken een aantal verschillende criteria om te weten of ze moeten waarschuwen: ze bekijken het domein, de aard van het bestand en vooral of ze het al genoeg eerder hebben gezien om te begrijpen of het veilig is.

Als iemand de consumentenapplicatie van Reincubate zou downloaden, zal er geen waarschuwing worden getoond, omdat deze bekend is bij de browsers.

In het geval van de asrelay-client wordt deze niet publiekelijk verspreid zoals deze is: deze krijgt een witte markering en wordt ondertekend met de code voor ondertekening van een client. Browsers vertrouwen op Reincubate's code-ondertekenende sleutel en domein, maar ze hebben de neiging om niet zo relevant te herkennen als het niet naar het publiek wordt geduwd.

Als asrelay wordt aangepast met de naam van een klant en het ondertekenen van een code, wordt het behandeld als een nieuwe applicatie (het heeft geen Reincubate-certificaat) en begint het zonder reputatie, dus het wordt gemarkeerd door browsers tijdens het downloaden. Om vertrouwd te worden, moet het nieuwe programma zo snel mogelijk veel computers leren kennen. Over het algemeen kun je bij het veranderen van een vertrouwensfactor redelijk snel voorbij die schermen komen met een paar dagen aan downloads en installaties.

Hoe kunnen we helpen?

Ons ondersteuningsteam is er om u te helpen!

Onze kantooruren zijn van maandag tot vrijdag van 09.00 tot 17.00 uur GMT. De tijd is momenteel 3:57 PM GMT.

We streven ernaar om alle berichten binnen één werkdag te beantwoorden.

Ga naar het ondersteuningsgedeelte › Neem contact op met het Enterprise-team ›
Ons geweldige ondersteuningsteam

© 2008 - 2019 Reincubate Ltd. Alle rechten voorbehouden. Geregistreerd in Engeland en Wales #5189175, VAT GB151788978. Reincubate® is een geregistreerd handelsmerk. Privacy en voorwaarden. Wij bevelen 2FA aan. Gebouwd met in Londen.