Unity Accelerator (アクセラレーター) は、チームのインポートされたアセットのコピーを保存し、チームワークを高速化するキャッシュプロキシエージェントです。その目的は、チームがイテレーション時間を短縮できるようにすることです。Accelerator は、チームが同じローカルネットワーク上で作業している場合にアセットの共有を調整し、プロジェクトの一部を再インポートする必要がないようにします。これは、アセットインポートパイプライン v2 Unity エディター の機能によって行われます。オプションで、Accelerator は Unity Teams Advanced と一緒に使用することで、Collaborate のソースアセットを共有することができ、Collaborate サービスからのダウンロード時間を大幅に短縮することができます。
ローカルネットワークに Accelerator をインストールすると、Unity エディター (バージョン 2019.3 以降 (後述の Unity エディター 要件 を参照) が Accelerator と通信し、他のチームメンバーが必要としたり、変更や作成を行ったアセットの保存や取得を行います。Accelerator はこれらのアセットの一時的なコピーを保存し、アセットを取得したり再インポートしたりするための時間と帯域幅の無駄を防ぎます。
チームが定期的に作業する各ネットワークに Accelerator をインストールします。ローカルネットワーク上に、Accelerator をホストすることができるマシンが必要です。ホストを選択する際には、以下の要件を考慮してください。
Unity プロジェクトは、Unity エディターのバージョン 2019.3 以降を使用している必要があります。
Unity Teams Advanced を使用していない場合は、Unity Accelerator を直接ダウンロードしてインストールし、インストール時に登録トークンのチェックを外してください。
ノート: Accelerator を Linux システムにインストールする場合は、Accelerator バージョンの確認 を参照してください。
また、Docker Hub から Accelerator をインストールすることもできます。
各プラットフォームで、コマンドラインからインストーラーを実行できます。インストーラーの引数に --help
を指定して実行すると、利用可能なさまざまなオプションが表示されます。プロンプトを表示せずに完全なインストールを実行するには、以下の値を指定する必要があります。
--storagedir
ファイルや設定を保存する Accelerator のディレクトリを設定します。--registration-token
Accelerator の作成後に 開発者ダッシュボード で提供されるトークンを指定します。これは、Accelerator を Collaborate と一緒に使用する際に必要です。--mode
何もクエリしない無人の自動インストールを行います。これには、デフォルト値、または提供された他のオプションフラグの値が使用されます。Contents/MacOS/installbuilder.sh
)。Accelerator をインストールすると、設定ウィザードの最後のステップで、エディターで参照する IP アドレスと Port が以下の形式で表示されます。
[IP]:[Port]
Asset pipeline version 2 Cache Server として Accelerator を使用するようにエディターを設定するには、以下の手順を行います。
他のプロジェクトと分離したい場合は、オプションでデフォルトとは異なる名前空間プレフィックスを選択することができます。また、必要に応じてアップロードやダウンロードを個別に利用不可にすることもできます。例えば、ビルドシステムではアップロードのみを可能にし、開発者用のエディターではダウンロードのみを可能にすることができます。なお、TLS/SSL オプションは、2020.1 以降のエディターバージョンにのみ搭載されており、Accelerator にも TLS の設定が必要です。
エディターのメインビューでは、右下のステータスバーを見ることで、Accelerator の接続状態を確認することができます (2020.1 以降のエディターバージョンのみ)。
必要に応じて、グローバル設定を通して使用するように Accelerator を設定できます。グローバル設定は、 Project Settings によってオーバーライドされない限り、すべてのプロジェクトでデフォルトで使用されます。グローバル設定を行うには、Edit > Preferences… メニュー項目を選択します。
コンテナは Docker Hub(https://hub.docker.com/repository/docker/unitytechnologies/accelerator) で提供されています。
Unityでは、Accelerator の設定やキャッシュを保持するために、永続的なストレージを使用することを推奨しています。初めてこの設定を行うには、コンテナを最初に実行する際に、以下の変数を 1 つ以上使用する必要があります (以下に例を示します)。これらの変数は、スタートアップが設定 (configuration) ファイルを見つけられなかった場合にのみ使用されるので、連続して実行する際にに設定したまま実行しても問題ありません。
変数 | 使用方法 |
---|---|
COLLAB_REGISTRATION_TOKEN | Unity Collaborate を加速します。 |
DISABLE_USAGE_STATS | 使用状況の統計情報を無効にするには、true を設定します。使用状況の統計情報を有効にしておくと、Unity に貴重なフィードバックを与え、Accelerator の機能やパフォーマンスを向上させることができます。 |
USER | ローカルのビルトインダッシュボードのユーザー名。 |
PASSWORD | ローカルのビルトインダッシュボードのパスワード。 |
CERT_HOSTNAME | TLS サポートに使用するホスト名。これはリダイレクトなどに使用され、後述の CERT_PEM と KEY_PEM に対応します。 |
CERT_PEM | TLS サポートに使用する cert.pem へのパス。CERT_HOSTNAME を設定し、CERT_PEM を設定しない場合は、<persist_dir>/cert.pem が想定されます。 |
KEY_PEM | TLS サポートに使用する key.pem へのパス。CERT_HOSTNAME を設定し、KEY_PEM を設定しない場合は、 <persist_dir>/key.pem が想定されます。 |
例えば、Collaborate サービスを起動して登録するには、以下に類似のコマンドを実行します。
$ docker run --rm -ti -v "${PWD}/agent:/agent" -e 'COLLAB_REGISTRATION_TOKEN=ft0bJvbRD' unitytechnologies/accelerator:latest
TLS の設定をオーバーライドするには、上記の例に引き続き、/agent のパスに cert.pem と key.pem が指定されていることを確認した上で、以下のように CERT_HOSTNAME を加えます。
$ docker run --rm -ti -v "${PWD}/agent:/agent" -e 'CERT_HOSTNAME=myhostname.com' -e 'COLLAB_REGISTRATION_TOKEN=ft0bJvbRD' unitytechnologies/accelerator:latest
また、Accelerator が通常認識する環境変数を設定することもできます。unity-accelerator --all-help
を参照し、Default: $SOME_VARIABLE
を示すオプションを探してください。自身で設定しなくてもコンテナが設定するものが 2 つあります。
変数 | 使い方 |
---|---|
UNITY_ACCELERATOR_PERSIST | コンテナのデフォルトは /agent です。このディレクトリには、unity-accelerator.cfg やその他の永続的なデータ (cachedir が異なる場合があります) が格納されます。 |
UNITY_ACCELERATOR_LOG_STDOUT | コンテナのデフォルトは true です。これが true の場合、stdout (標準出力) のみにログを出力します。実際のログファイルを persist ディレクトリ内に書きたい場合は、false を指定します。 |
docker イメージに署名しているので、Docker Content Trust を有効にすること を強く推奨します。
$ export DOCKER_CONTENT_TRUST=1
通常は、以下のようにして Accelerator を実行できます。
$ docker run -p 80:80 -p 443:443 -p 10080:10080 -v "${PWD}/agent:/agent" unitytechnologies/accelerator:latest
ただし、Accelerator が環境設定やキャッシュされたアーティファクトを保存する場所を別の場所にしたい場合は、以下のように環境変数設定値を追加することができます。
$ docker run -p 80:80 -p 443:443 -p 10080:10080 -v "${PWD}/agent:/mnt/another_spot" -e "UNITY_ACCELERATOR_PERSIST=/mnt/another_spot" -e "UNITY_ACCELERATOR_DEBUG=true" unitytechnologies/accelerator:latest
ローカルダッシュボードのユーザー名とパスワードを設定するには、環境変数 USER と PASSWORD を使用します。
$ docker run -p 80:80 --env PASSWORD=[PASSWORD] --env USER=[USERNAME] unitytechnologies/accelerator:latest
Unity Accelerator が使用するポートのデフォルト値は、80、443、10080、1043 です。
Accelerator は、Unity Teams Advanced と一緒に使うと、さらに効果を発揮します。
Unity Teams Advanced を使用する場合、組織の所有者または管理者のいずれかが、開発者ダッシュボード から以下の手順で Accelerator を作成できます。
ノート: Accelerator を Linux システムにインストールする場合は、Accelerator バージョンの確認 を参照してください。
Unity Teams Advanced と併用すると、各 Accelerator には、組織へのアクセス許可を証明する独自のセキュリティ証明書が発行されます。Accelerator がコンテンツをアップロードまたはダウンロードする前に、リクエストを出した Unity エディターは SSL/TLS を使って Accelerator に安全に接続し、その信憑性を検証します。Unity エディターが Accelerator を発見して接続する際、通常の Unity ユーザートークンを渡す代わりに、Unity エディターから特別なトークンを受け取ります。Unity Identity サービスから特別なトークンを受け取ります。これらのトークンは、ユーザーの ID と組織内の単一プロジェクトへのアクセスを検証します。それにより、Accelerator 使用中の他の組織やプロジェクトへのアクセスを保護します。
また、Unity エディターの起動時に、コマンドライン引数 を使って、Accelerator Cache Server の設定情報を提供することもできます。
Accelerator Cache Server の使用を指定するには、-EnableCacheServer
引数を使用します。アドレスとポート番号を指定するには、-cacheServerEndpoint Address:Port
を使用し、アドレスとポートをキャッシュサーバーの詳細に置き換えます。
ノート: Accelerator Cache Server では、プロジェクトが Asset Database V2 (ADB2) を使用する必要があります。コマンドラインから Unity を起動する際に、-adb2
を使って ADB2へのアップグレードを強制することができます。
詳細は、コマンドライン引数 を参照してください。
Accelerator には、、迅速な確認や設定変更を行うためのビルトインのダッシュボードがあります。
ダッシュボードの URL を確認する方法については、コマンドラインツール のセクションを参照してください。ただし、Accelerator の IP とポートがわかる場合は、http://ip:port/dashboard を使用するだけで、Accelerator が必要なリダイレクトをすべて処理します。指標を完全に確認するには、、Accelerator 指標に直接アクセス を参照してください。また、Accelerator の完全な設定は、unity-accelerator.cfg ファイルで行うことができます。
Unity Teams Advanced のユーザーの場合、開発者ダッシュボード から Accelerator の指標を確認することができます。これらの指標は、ソースアセットにのみ適用され、生成された (インポートされた) アセットには適用されません。
プロジェクトの Accelerator の概要を表示するには、そのプロジェクトを選択し、左のナビゲーションバーから Collaborate > Accelerators を選択します。このメニューでは、以下の情報を見ることができます。
プロパティ | 説明 |
---|---|
Name | Accelerator を作成したときに指定した名前。 |
Avg. Efficiency | 過去 24 時間の Accelerator の平均 効率。 |
Editors | Accelerator に接続されている Unity エディターの数。 |
Latest Activity | 直近の Accelerator の使用状況。 |
状況 |
Accelerator は以下のいずれかの状態です。- Available は、Accelerator がインストールされていないか、Collaborate サービスに登録されていないことを示します。 - Ready は、Accelerator が Collaborate サービスに登録されているが、Unity エディターがそれに接続されていないことを示します。 - In use は、Unity エディターが Accelerator に接続されているか、最近接続されたことを示します。 - Idle は、Unity エディターが以前に Accelerator を使用したことがあるが、最近のアクティビティがないことを示しています。 - Not Listening は、Accelerator が設定されたポートに接続できなかったことを示します (他のサービスがすでに使用していることが原因の可能性が高い)。 - Disconnected は、Accelerator が、使用状況の報告や設定変更の受信のためにサービスに接続されなくなったことを示します。 |
Enabled | Unity エディターが Accelerator を検出して使用しようとするかどうかを示します。Unity エディターは、Accelerator が起動しているかどうかに関わらず、無効な Accelerator を使用しません。 |
Details をクリックすると、Accelerator の使用状況に関する以下の詳細情報が表示されます。このデータは 10 分ごとに更新されます。
これは、過去 24 時間の Accelerator の平均パフォーマンスを示しています。値の範囲は 0 - 100で、Collaborate サービスからの遠隔操作ではなく、Accelerator からローカルに提供されたコンテンツダウンロードの割合を測定します。値が 0 の場合、Accelerator がコンテンツのダウンロードを積極的に支援していないことを示します。100 の値は、Accelerator がすべてのコンテンツダウンロードを提供していることを示します。
定期的に、Accelerator は新しいアセットを保存するためのスペースを消去します。その際、ダッシュボードには、Accelerator がローカルストレージから削除した古いアセットに割り当てられていたバイト数が表示されます。
ノート: これは、Accelerator の健全性を保つための正常な動作です。ただし、この値がAccelerator の効率に悪影響を与えているようであれば、チームの使用量に合わせてストレージの容量を増やす必要があるかもしれません。Accelerator のファイルシステムには、アクティブなプロジェクトの最新バージョンのファイルをすべて格納できるだけの空き容量があるソリッドステートハードドライブを使用するのが理想的ですが、これは必須条件ではありません。十分な空き容量がない場合は、Accelerator の全体的な効率が低下します。
分散したチームには、Accelerator を使用するローカルのコントリビューターと、Collaborate サービスを使用するリモートのコントリビューターがいる場合があります。このような場合、Accelerator はリモートの公開のイベントをリッスンし、ローカルネットワーク上のユーザーのために、影響を受けるコンテンツを積極的にダウンロードします。
Accelerator を使用する場合、Accelerator は、ローカルネットワークから配信されたバイト数ではなく、リモートの Collaborate サービスに要求してダウンロードした全体のバイト数を報告します。ローカルに配信されたバイト数が多いほど、ネットワークゲートウェイへの負荷が少なくなるため、チームにとっては好ましいと言えます。
Accelerator は、Collaborate サービスからアセットをダウンロードする代わりに、ローカルに保存されたアセットを配信する際の帯域幅を追跡し、Unity エディターがリモートでアセットをダウンロードするのに要した時間の差を、節約された時間として報告します。
ノート: 前述の指標は、ソースアセットにのみ適用されます。生成された (インポートされた) アセットには適用されません。
Unity Teams Advanced を使用しない場合、各 Accelerator は Prometheus metric reports を /metrics
としてホストしており、ローカルネットワークからそれを照会することができます。以下は、アクセス可能な指標の全リストです。
指標 | 説明 |
---|---|
process_resident_memory_bytes |
Accelerator が使用するメモリの量です。 |
uta_agent_sys_cpu_percent |
システムが使用する CPU の量です。 |
uta_agent_sys_mem_bytes_used |
システムによって使用されるメモリ量です。 |
uta_agent_protobuf_connects |
Unity エディターがアセットインポートパイプラインのサービスに接続した回数。 |
uta_agent_protobuf_bytes_in |
アセットインポートパイプラインから受信したバイト数。 |
uta_agent_protobuf_bytes_out |
アセットインポートパイプラインに送信されたバイト数。 |
uta_agent_protobuf_requests{code="0",method="get"} |
アセットインポートパイプラインに送られたアイテムの数。 |
uta_agent_protobuf_requests{code="1",method="get"} |
アセットインポートパイプラインに送られたアイテムから発生したエラーの数。 |
uta_agent_protobuf_requests{code="2",method="get"} |
アセットインポートパイプラインに送られたアイテムから発生した名前空間エラーの数。 |
uta_agent_protobuf_requests{code="3",method="get"} |
キャッシュされていないアイテムに対してアセットインポートパイプラインから行われたリクエストの数。 |
uta_agent_protobuf_requests{code="0",method="put"} |
アセットインポートパイプラインから受け取ったアイテムの数。 |
uta_agent_protobuf_requests{code="1",method="put"} |
アセットインポートパイプラインから受け取ったアイテムから発生したエラー数。 |
uta_agent_protobuf_requests{code="2",method="put"} |
アセットインポートパイプラインから受信したアイテムに発生した名前空間エラー数。 |
uta_agent_protobuf_requests{code="0",method="delete"} |
アセットインポートパイプラインからのアイテム削除のリクエスト数。 |
uta_agent_protobuf_requests{code="1",method="delete"} |
アセットインポートパイプラインがアイテムを削除する際に発生したエラー数。 |
uta_agent_protobuf_requests{code="2",method="delete"} |
アセットインポートパイプラインによるアイテム削除リクエストから発生した名前空間エラーの数。 |
uta_agent_protobuf_requests{code="3",method="delete"} |
キャッシュされていないアイテムのアセットインポートパイプラインから送信されたアイテムを削除するリクエスト数。 |
uta_agent_cache_bytes_evicted_unscheduled |
“予定外” のパスでキャッシュからエビクション (立ち退き) されたバイト数。予定外のエビクションは、リクエストの処理中にディスクスペースが足りなくなった場合に発生します。通常、スケジュールされたバックグラウンドでのエビクションは、需要に間に合います。そのため、このマトリクスの値が増加すると、サーバーに負荷がかかっていることになります。設定の CacheMinFreeBytes や CacheMinFreePercent を増やすことで、より多くの空きスペースバッファを確保できる可能性があります。または、基礎となるハードウェアをアップグレードしたり、追加のAccelerator をインストールしたりする必要があるかもしれません。 |
uta_agent_cache_files_evicted_unscheduled |
上記の uta_agent_cache_bytes_evicted_unscheduled 指標に似ていますが、バイト数ではなく、エビクションしたファイルを数えます。これはアラートを出すのに簡単な指標になります。例えば、ファイルの指標が 1 秒あたり 1 を超えて増加した場合にアラートを出します。 |
uta_agent_protobuf_cache_hits |
キャッシュから提供されたアセットインポートパイプラインリクエストの数。 |
uta_agent_protobuf_cache_misses |
キャッシュから提供できなかったアセットインポートパイプラインリクエストの数。 |
uta_agent_protobuf_cache_bytes_out |
キャッシュからアセットインポートパイプラインに提供されたバイト数。 |
uta_agent_protobuf_cache_bytes_in |
アセットインポートパイプラインから受け取ったキャッシュに格納されたバイト数。 |
Unity エディターのログ は、デバッグ情報を見るのに便利です。Collaborate イベントのログを表示するには、環境変数を enableCollabEventLogs=true
に設定して、Unity エディター (またはUnity Hub) を動作させます。[collab-accelerator]
とマークされたログは、Accelerator のパフォーマンスを把握するのに役立ちます。
以下のブロックは、Asset Import Pipeline v2 を使用した Accelerator のログ出力例を示しています。これは Collaborate 用ではないため、enableCollabEventLogs=true
を必要としません。
2019-10-07T11:34:51-0700 Using Asset Import Pipeline V2.
...
2019-08-08T09:04:03-0700 Start importing Assets/Scenes/tame-the-unicorn.png guid(07a0d449dcaef4d2ba104e9d9b350de6)
2019-08-08T09:04:05-0700 Done importing asset: 'Assets/Scenes/tame-the-unicorn.png' (target hash: 'd5fddd470dd9beedcd7261b6455e436a') in 1.082988 seconds
2019-08-08T09:04:05-0700 RemoteAssetCache::AddArtifactToCacheServer - artifactKey='Guid(07a0d449dcaef4d2ba104e9d9b350de6) Importer(-1,)' Target hash='d5fddd470dd9beedcd7261b6455e436a'
Querying for cacheable assets in Cache Server:
86ac778e1a44c9143864797ddacf8cc9:Assets/New Material.mat
RemoteAssetCache - Download - Metadata - success:true, namespace:81e94844d19a16919208533e08183531, key:8d71d5006046bb9d5e4a7172eec3f3b2
RemoteAssetCache - Download - Artifact - success:true, namespace:78b2fdc254b0a4f8a4693a81bb96598a, key:de1eef03efd25a722d1500658bf19038 for asset:'Assets/New Material.mat', time elapsed: 0.005171 seconds
RemoteAssetCache - Download - Artifact - success:true, namespace:78b2fdc254b0a4f8a4693a81bb96598a, key:b19c9d64967a9691abecdb66364ae392 for extension:'Assets/New Material.mat.info', time elapsed: 0.004721 seconds
Accelerator は、各プラットフォームのバックグラウンド処理として動作します。
Services Panel を開くには、“設定” メニューで “Services” を検索するか、Run ダイアログ (WIN + R) で “services.msc” を実行します。次に、結果のリストの中から “Unity Accelerator” サービスを探します。左側のパネルに Stop the service または Restart the service というオプションが表示されます。
ターミナルから launchctl
コマンドを実行して、LaunchControl ユーティリティから “com.unity.accelerator” サービスを制御することができます。詳細については、https://www.launchd.info/ を参照してください。
“unity-accelerator” サービスの制御には、 service
コンソールユーティリティを使用します。詳細は、http://manpages.ubuntu.com/manpages/bionic/man8/service.8.html 参照してください。
Accelerator サービスは、メンテナンス期間中に自動的に更新されます。メンテナンス期間は、Accelerator が動作しているマシンの現地時間午前 1 時 - 2 時に設定されています。これは、Accelerator により新しいバージョンが可能な場合にのみ行われます。
Accelerator のインストールとアンインストールのログは、OS の標準の temp ディレクトリに unity-accelerator-*install.log
として保存されます。Accelerator のログは unity-accelerator.log
としてストレージディレクトリに保存されます。
Accelerator には、トラブルシュート、設定、および 1 つまたは複数の Accelerator を一般的に使用するために使用できる、多数のコマンドラインツールがあります。使いやすくするために、unity-accelerator の実行ファイルの場所を PATH に追加することを推奨します。実行ファイルは、インストーラーの実行時に選択したパス (例えば C:\Program Files\Unity\accelerator など) にインストールされます。
CLI ツールには充実したヘルプシステムが用意されています。すぐに使い始めるには、unity-accelerator を引数なしで実行します。
$ unity-accelerator
Unity Accelerator v1.0.524+g96c5e18
Run on a local network to speed up transactions with Unity Services.
.....
また、unity-accelerator --all-help
を実行すると、すべてのコマンドのヘルプテキストを一度に出力することができます。出力を less を通して pipe するか、出力をテキストファイルにリダイレクトして出力するのが良いでしょう。
特定の Accelerator を再設定するなどの特定の作業をする場合は、作業ディレクトリを unity-accelerator.cfg
ファイルがある場所と同じディレクトリに変更するのが最善です。 UNITY_ACCELERATOR_PERSIST
環境変数をそのディレクトリに設定したり、 --persist<dir>
オプションを常に使用することを忘れないようにすることもできます。しかし、大抵、作業ディレクトリの変更が最も簡単な方法です。
よく使われているのが、ダッシュボードツールです。
$ unity-accelerator dashboard password newaccount
Password: ****
Again: ****
$ unity-accelerator dashboard list
admin
newaccount
$ unity-accelerator dashboard url
http://172.18.37.249:8080/dashboard/
最後の dashboard url
は、ビルトインダッシュボードにアクセスするためにブラウザーに入力する URL を調べるのに便利です。
必要に応じて、同じキャッシュデータをミラーリングするように複数の Accelerator を設定することができます。高可用性のために、同じネットワーク上でミラーリングされた 2 つの Accelerator を動作させることもできます。一方の Accelerator がクラッシュしたり、ハードウェア障害が発生したり、何らかの理由でメンテナンスが必要になった場合に、もう一方の Accelerator がそれを補うことができます。例えば、メインオフィスのデータをブランチオフィスにミラーリングし、ブランチオフィスでもキャッシュデータのコピーを使用できるようにするなどです。
今のところ、ミラーリング機能は、“プッシュ” や “フォワード” とも呼ばれる、データを発信する機能のみを提供しています。複数の Accelerator にプッシュ/フォワードすることができ、さらにそれらを連鎖させることもできます。例えば、A から B へ送信、B から C へ送信、そして C から A に送り返すこともできます。チェーンがサークル状になることを心配する必要はありません。アイテムにはタイムスタンプが押されているので、受信側の Accelerator は、すでに持っているアイテムよりも古いアイテムが入ってきても無視します。
ここでは、アクセラレーター A が ip:portが1.1.1.1:1111 で、アクセラレーター B が 2.2.2.2:2222 の場合を例に説明します。どちらも最初はデータがないとします。そこで、A にアイテムを入れます。B にはアイテムがありません。
$ echo test1 | unity-accelerator cache put 1.1.1.1:1111 namespace1 key1
$ unity-accelerator cache get 1.1.1.1:1111 namespace1 key1
test1
$ unity-accelerator cache get 2.2.2.2:2222 namespace1 key1
key not found
では、A が B に転送するように設定しましょう。A の設定を変更します。アクセラレーター A が動作しているマシンにログインし、アクセラレーターをシャットダウンします。
# Shutdown Accelerator A
$ cd <directory where unity-accelerator.cfg is>
$ unity-accelerator config set ProtobufForwardPuts protobuf:2.2.2.2:2222
# Start Accelerator A back up
これで、A のキャッシュに別のアイテムを入力でき、B に転送されたのを確認できます。
$ echo test2 | unity-accelerator cache put 1.1.1.1:1111 namespace2 key2
$ unity-accelerator cache get 1.1.1.1:1111 namespace2 key2
test2
$ unity-accelerator cache get 2.2.2.2:2222 namespace2 key2
key not found
# It will take up to a minute before the forwarding occurs, due to how the algorithm works with batching, etc. But within a minute or two you should see...
$ unity-accelerator cache get 2.2.2.2:2222 namespace2 key2
test2
ただし、これは新しいデータのみを対象としており (アクセラレーター A に入れられた新しいアイテムは、アクセラレーター B に転送されます)、既存のデータは対象としていません。この例では、最初のアイテムはまだアクセラレーター B にありません。
$ unity-accelerator cache get 2.2.2.2:2222 namespace1 key1
key not found
このような場合や、すべてのデータを 1 度だけ転送したい場合 (Accelerator を新しい Accelerator に切り替えるときなどに便利) には、“push” コマンドラインツールを使用できます。
$ unity-accelerator cache push 1.1.1.1:1111 2.2.2.2:2222
{"msg":"push completed", "destination":"2.2.2.2:2222", "namespaces":2, "keys":2, "bytes":12, "supercededs":1, "errors":0, "elapsed":"44.054078ms"}
$ unity-accelerator cache get 2.2.2.2:2222 namespace1 key1
test1
プッシュツールは、第 1 の Accelerator にリクエストを送信し、すべてのデータを第 2 の Accelerator に送信するように依頼します。それが完了すると、第 1 Accelerator は、何が行われたかの詳細を含む “プッシュ完了” の応答を送り返します。
unity-accelerator config help | less
を実行し、Forward を検索するさらに高度な設定オプションがあります。転送の同時実行、キューのサイズ、エラー処理などを指定できます。
また、ミラーリングされた各 Accelerator の MaintenanceStart および MaintenanceDuration の設定値を変更して、すべての Accelerator がメンテナンスのために同時にシャットダウンしないようにすることもできます。
Accelerator をインストールしたにもかかわらず、一部の Unity エディターがそれを使用していない場合、いくつかの要因が考えられます。以下のトラブルシュートを参考にしてください。
Accelerator を使用するには、各プロジェクトコントリビューターがエディターバージョン 2019.3 以上を使用している必要があります。
Accelerator が、問題が発生しているプロジェクトのコントリビューターと同じローカルエリアネットワーク上で動作していることを確認してください。Accelerator は、リモートで作業しているコントリビューターには影響しません。
問題が発生しているマシンが Accelerator にアクセスできるかどうかを確認します。Unity Teams Advanced を使用している場合は、以下の手順でブラウザーから Accelerator のヘルスページにアクセスします。
Unity Teams Advanced を使用していない場合は、以下の URL パスに Accelerator のホスト IP アドレスを入力すると、ヘルスページが表示されます。
[AcceleratorIP]:[AcceleratorPort]/api/agent-health
テストに失敗した場合は、すべてのホストとネットワークのファイアウォールが Accelerator のリッスン IP アドレスとポート (TCP) へのアクセスを許可していることを確認してください。このポートへのアクセスを許可するために、ネットワーク管理者に連絡する必要があるかもしれません。
Unity Teams Advanced を使用している場合は、該当するプロジェクトに Accelerator が設定されていることを確認します。開発者ダッシュボード でプロジェクトに移動し、左のナビゲーションバーから Collaborate > Accelerator を選択します。そのプロジェクトの Accelerator が列挙されます。
Linux システムに Accelerator をインストールする場合、すべての Linux 実行ファイルには署名ファイルがあり、ダウンロードした Accelerator バージョンが悪意のある団体によって改ざんされていないことを確認することができます。署名ファイルは、GnuPG の信頼できるバージョンで検証することができます。以下のキーは、現在のリリースを署名しています。このキーを含む公開鍵ブロックは、https://collab-accelerator.cloud.unity3d.com/ で入手できます。
pub rsa4096 2019-12-02
Key fingerprint = 9BC4 B04D F2E8 74E5 64AA 47E7 6D44 3B8B 002C F61F
uid Unity Technologies ApS (Accelerator signing key) <sst-ops@unity3d.com>
GPG ストアにキーをダウンロードするには、以下のいずれかのコマンドを使用します。
$ gpg --keyserver https://collab-accelerator.cloud.unity3d.com/ --search-key "sst-ops@unity3d.com"
$ gpg --keyserver https://collab-accelerator.cloud.unity3d.com/ --recv-key 9BC4B04DF2E874E564AA47E76D443B8B002CF62F
インストールした Accelerator のバージョンがオリジナルで、変更されていないことを確認するには、ファイルの署名を確認します。
Accelerator のインストールファイルには、https://storage.googleapis.com/unity-accelerator-prd/unity-accelerator-installer.sig で入手できる署名ファイルが付属しています。この署名ファイルを使って、Accelerator のインストーラーを確認してください。
$ gpg --verify unity-accelerator-installer.sig unity-accelerator-linux-x64-installer.run
キーを信頼する前に、フィンガープリントを “偽造されたキーまたは信頼されていないキー” に表示されているものと比較します。 キーを信頼すると、次のように表示されます。
gpg: Signature made Thu Jan 16 12:29:14 2020 PST
gpg: using RSA key 9BC4B04DF2E874E564AA47E76D443B8B002CF61F
gpg: Good signature from "Unity Technologies ApS (Accelerator signing key) <sst-ops@unity3d.com>" [ultimate]
これは、署名が有効であり、このキーを信頼したことを意味します。
正しい配布キーを持っていない場合、上記コマンドの出力は以下のようになります。
gpg: Signature made Thu Jan 16 12:29:14 2020 PST
gpg: using RSA key 9BC4B04DF2E874E564AA47E76D443B8B002CF61F
gpg: Can't check signature: No public key
この場合、前述の手順でキーを取得する必要があります。
有効な署名付きのキーのコピーを持っていても、そのキーが信頼済みとマークされていなかったり、キーが偽造されていたりすると、出力は以下のようになります。
gpg: Signature made Thu Jan 16 12:29:14 2020 PST
gpg: using RSA key 9BC4B04DF2E874E564AA47E76D443B8B002CF61F
gpg: Good signature from "Unity Technologies ApS (Accelerator signing key) <sst-ops@unity3d.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 9BC4 B04D F2E8 74E5 64AA 47E7 6D44 3B8B 002C F61F
キーが偽造されている場合は、署名ファイルを使ってフィンガープリントを確認する必要があります。 キーが信頼済みとしてマークされていない場合は、キーを編集して信頼済みとしてマークします。詳細については、https://www.gnupg.org/gph/en/manual/x334.html を参照してください。
Unity Teams での Accelerator の使用に関するヘルプは、電子メールサポート または、開発者ダッシュボード からヘルプチケットを提出してください。Unity Teams Advanced プロジェクトのチケットを提出するには、プロジェクトを選択し、左のナビゲーションバーから Collaborate > Support を選択します。
アセットインポートパイプラインを使用した Accelerator に関するお問い合わせは、Accelerator forums を参照してください。