ホスティングと展開(v2)

更新しました

統合言語の選択

Reincubateエンジニアリングチームは主にPythonを使用しています。その結果、最も洗練されたサンプルクライアント実装はPythonで構築されていますが、言語を使用する理由はありません。このAPIは、.NET / C#、PHP、Python、Java、およびJavaScript / Node.jsを実行しているクライアントによって使用されます。

接続性とデータセンターの選択

リッチクラウド APIのインフラストラクチャは、Google Cloud Platform、Amazon Web Services、およびMicrosoft Azureを含む、米国、EU、およびカナダの多数のプロバイダによってホストされています。

本番環境aschannelからデータを消費する場合、リスナープロセスはデータのファイヤーホースをリッスンする責任があるため、少なくとも 100Mb / sの信頼性の高い、高帯域幅のインターネット接続が必要です。遅い接続でも動作するかもしれませんが、 aschannelで説明されているようにデータを落とす可能性があります。

大量のデータを消費する可能性があるクライアントは、インフラストラクチャのこの部分にホスティングパートナーを使用する必要があります。これらのホストへの信頼性の高い、帯域幅の広いアクセスを確保するには、 ティア1ピアリングが必要です。同様に、これは従来のricloud 1.xを使用しているクライアントにお勧めです。

asapiasmasterへのリクエストは一般的に低帯域幅と低ボリュームであることを考えると、これらのコンポーネントのクライアントをホストするための特別な要件はありません。

aschannelのための高可用性戦略

一度に1つのリスナープロセスしかaschannelにアタッチできないため、独自の実装で高可用性を必要とするクライアントは、高可用性のためのオープンソースキープアライブプロジェクトを検討する可能性があります。

本番環境でのサンプルクライアントの使用

ユースケースによっては、 ricloud-pyサンプルクライアントをricloud-pyに直接導入して、クライアントが統合を構築するのをricloud-pyことができます。

本番環境でリスナーモードでデプロイされた場合、ライブラリは、クライアントのアプリケーションがそれを取得して消去するまで、受信したコンテンツをバッファリングするためのストレージを備えたマシンを必要とします。

対応プラットフォーム

Ubuntu Server 16.04 LTSとMySQL 5.7のデフォルトの基本インストールのみが必要です。インストールが完了したら、次のコマンドで必要なパッケージを追加することができます。

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

動作していることがわかっているサポートされていないプラットフォーム

  • ほとんどのサーバーおよびクラウドLinuxディストリビューション
  • BrewのMySQLディストリビューション付きmacOS 10.12( ダウンロード

本番用サーバーの準備

Ubuntu 16.04には、本番環境でのリスナーの機能を制限する可能性のあるいくつかのデフォルトがあります。

開いているファイルの最大数

デフォルトでは、オープンファイル記述子の制限は171,614に設定され、セッションあたりの最大ファイル記述子は1,024に設定されます。

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

多数のファイルを同時に受信することを最適化するために、リスナーはチャンクしているファイルごとにファイルストリームを開いたままにします。その結果、多数のファイルが同時にストリーミングされ、チャンク化されている場合は、1,024個の制限を超える可能性があります。

セッションの制限は、次の内容で/etc/security/limits.d/ricloud-listener.confという名前のファイルを作成することによって解除できます。

* hard nofile 10240
* soft nofile 10240

新しいセッションが開始されると、これらの新しい制限が有効になります。セッションを再開しなくても、次のコマンドで制限を変更できます。

$ ulimit -n 10240

最大MySQLパケットサイズ

デフォルトでMySQLがUbuntu 16.04で処理する最大パケットは約3.5MBです。

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

大きなフィードボディは、挿入時にこのサイズをオーバーフローする可能性があります。多くのきめ細かいHealthKitデータ入力は、数百メガバイトのJSONを簡単に実行することができます。これはMySQLログの次の行で示されます。

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

次のエラーが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')

これはmax_allowed_packetをリセットすることで解決できます。最大サイズは1GBです。これは実行時にこれで変更できます。

SET GLOBAL max_allowed_packet=1073741824;

サーバのmy.cnfファイルを設定することで恒久的に変更できます。

max_allowed_packet=1073741824

最大MySQL InnoDBログファイルサイズ

MySQL InnoDBストレージエンジンには、テーブルに挿入される項目のサイズがREDOログサイズの10%を超えないようにするという制限があります。この制限によって引き起こされる可能性があるエラーは次のようになります。

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

エラーが示唆するように、修正はinnodb_log_file_size設定のサイズを適切な値に増やすことです。この設定の値に対する制限はここにあります

サービスとしての設定

Ubuntu 16.04でサービスとして実行するようにリスナーを設定するのは簡単です。

/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

/var/www-hosts/logsフォルダーが存在し、 www-dataユーザーによって書き込み可能であることを確認してください。もちろん、任意のフォルダまたはユーザーをこれ用に構成できます。次に、 system.dサービスを再起動して、新しい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

サンプルクライアントのファイアウォール

インバウンド

  • 通常の運用では、インバウンドインターネットトラフィックアクセスは必要ありません。
  • リスナーモードで使用されるとき、クライアントの設定はローカルMySQLインスタンスのためにTCP/3306上のインバウンドLANトラフィックを、そして任意のファイルシステム共有のために他のポートを要求するかもしれません。

アウトバウンド

  • ricloudライブラリは、データの取得時にTCP/443上の3つのホスト名( asmaster.reincubate.comasapi.reincubate.com 、およびaschannel.reincubate.com送信要求を送信します。
  • 必要に応じてasmasterasapiへのトラフィックを安全にプロキシすることができますが、 接続性に関する要件に注意することが重要です。 aschannelをプロキシすることはお勧めできません。

本番環境でデスクトップコンポーネントを使用する

対応プラットフォーム

白いラベルのasrelayコンポーネントは、Windows 7以降(7、8、8.1、10など)およびmacOS 10.11以降で動作します。

コード署名

デスクトップコンポーネントの信頼できるホワイトラベルビルドを作成するには、コード署名証明書が必要です。マイクロソフトはこれらに関する情報公開しており、アップルは開発者プログラムの一環として証明書を提供しています。

ブラウザの信頼を確立する

ブラウザは、ダウンロードに関する基本的な保護レベルを適用するためにさまざまな手法を使用します。最近のブラウザはデフォルトで未知のファイルを信頼しません。 Chromeはダウンロード時に「この種類のファイルはコンピュータに害を及ぼす可能性があります。binary.exeをそのまま使用しますか?」というメッセージを表示します。 MicrosoftのEdgeブラウザは "Windows Smartscreen"ペインを開く。ブラウザは、警告するかどうかを理解するときにさまざまな基準を使用します。ドメイン、ファイルの性質、そして何よりも前にそれが安全かどうかを理解するために見たかどうかを調べます。

Reincubateのコンシューマアプリケーションをダウンロードしようとした場合、ブラウザにはよく知られているので警告は表示されません。

asrelayクライアントの場合、そのまま公に配布されることはありません。ホワイトラベルが付けられ、クライアントのコード署名キーで署名されます。ブラウザはReincubateのコード署名キーとドメインを信頼しますが、一般に公開されていないためリレーを認識しない傾向があります。

asrelayがクライアントの名前とコード署名でカスタマイズされると、それは新しいアプリケーションとして扱われ(Reincubateの証明書を持っていないでしょう)、ダウンロード時にブラウザによってフラグが立てられます。信頼を得るためには、新しいプログラムはできるだけ早く多くのコンピュータに知られる必要があります。一般的に、信頼要素に大きな変更を加えると、数日分のダウンロードとインストールで、それらの画面をかなり早く通過することができます。

どのように我々は助けることができます?

サポートチームがお手伝いします!

営業時間は月曜日から金曜日の午前9時から午後5時(GMT)です。 時間は現在 1:09 AM GMTです。

1営業日以内に、お返事を差し上げます。メールアドレスはこちら。

サポートセクションに移動 › エンタープライズチームに連絡する ›
私たちの素晴らしいサポートチーム

© 2008 - 2019 Reincubate Ltd. 無断複写・転載を禁じます。 イングランドとウェールズに登録 #5189175, VAT GB151788978. Reincubate®は登録商標です。 プライバシーと利用規約. マルチファクタ認証をお勧めします。 ロンドンで愛と建てられた。