こんにちは。UiPath Friendsコミュニティ運営メンバの @masatomix です。
イントロ
前回の記事 [UiPath] よくわかるUnattendedロボット(イントロ編) のつづきです。
前回は1台構成のUnattended ロボット環境を構築したのでした。
今回はPC2台(以上) でUnattendedロボットを構築する際に、どこにどのように設定すればよいかを説明します。
対象のかた
- すこしはUiPath Orchestratorを知ってる・触ったことがあるよ、という方を想定しています。
- ぼんやりとUnattendedロボットは使ってるけど、もうすこし細かく知りたいなぁ、という方。
- 前回の記事のつづきが知りたい方
コレをやったらできること
-
オンプレのUiPath Orchestratorで、2台以上のUnattendedロボットを構築し、サンプルワークフローを動かすことができるようになります。
-
PC複数台に対してマシンキーをどのように発行すればよいか、またキーごとのランタイム数をどのように設定すればよいか、などが分かるようになります。
TL;DR
-
ライセンスを複数もっているばあい、複数のPCにライセンスを割り振ることで、最大そのライセンス数分のワークフローを同時に実行できる。ライセンスは原則、OCへのPC接続ごとに、1つ消費される。
-
マシンテンプレートをフォルダに紐付けることで、テンプレート単位でワークフローの実行可・不可を制御 できる。
-
したがって、PCそれぞれに個別のマシンキーを設定すると、マシンごとにワークフローの実行可・不可を制御できる。
-
複数のPCでマシンキーを共有すると、実行時にキーを共有しているPCたちで、空いているPCがワークフローを実行するなど、いわゆるラウンドロビン的なスケールアウトができる。
-
マシンキーを共有する・しないにかかわらず、基本的にランタイム数は1にしておけばよい。
- ランタイム数1のマシンキーを1コ作成し、3台のPCで共有してOC接続した場合、1x3=3ライセンス必要。
- ランタイム数1のマシンキーを3コ作成し、3台のPCそれぞれに設定してOC接続した場合も、3ライセンス必要。
-
ランタイム数を増やすときはPC1台で同時にワークフローを動かすとき。
- たとえばPC1台で同時に2コのワークフローを動かしたい場合、ランタイム数を2とする。その場合1PCでライセンスを2消費する。そのマシンキーを3台のPCで利用すると、2x3=6ライセンス消費する。
- ただし複数ユーザが同時ログイン可能なWindowsサーバ機などが必要(たぶん)。
今回は複数PCで運用してみる
さあやってみます。
- テスト1: PCごとにマシンキーを用意するケース
- テスト2: PC2台でマシンキーを共有するケース
こんなテストをやってみます。
前提の環境
サーバ環境の項目 | 値 |
---|---|
Orchestrator | オンプレのOrchestrator 2020.10.7 |
Robot | UiPath Robot (v20.10.9) /サービスモード |
URのライセンス数 | 2つ以上 |
テスト1: PCごとにマシンキーを用意
- PC情報
PC名 | マシンテンプレート名 |
---|---|
s001 | s001_template (URランタイムを1つ割り当て) |
s002 | s002_template (URランタイムを1つ割り当て) |
- ユーザ/ロボット情報
ユーザ名 | AR自動 | UR自動 |
---|---|---|
ad\user001 | × | ○ |
ad\user002 | × | ○ |
- フォルダ情報
フォルダ名 | プロセス名 | ユーザ | マシン |
---|---|---|---|
f001 | ModernTest ver.1.0.1 | ad\user001 | s001_template |
f002 | ModernTest ver.1.0.2 | ad\user002 | s002_template |
まとめると、PCごとにマシンテンプレートを用意し、
- PC: s001 では ModernTest ver.1.0.1 をuser001が実行
- PC: s002 では ModernTest ver.1.0.2 をuser002が実行
できるようになっています。図示するとこんな感じ。
そして、別のPCからOCのWeb画面経由でワークフローをそれぞれ実行してみました。想定結果は先に書いたとおり、
- PC: s001にad\user001で自動でログインされて、ワークフロー(ModernTest) のver.1.0.1が実行される。
- PC: s002にad\user002で自動でログインされて、ワークフロー(ModernTest) のver.1.0.2が実行される。
ですね。
動画はこちら
わかること
- ライセンスを複数もっていると、複数のPC上で同時にワークフローが実行できる(あたりまえか)
- マシンキーを分けることで特定のフォルダに特定のPCを紐付けることが可能なので、結果マシンごとに実行可能なワークフローを制御できる
ことが分かりました。
ライセンスが単数のときは複数PCを同時に有効化できませんでしたが、ライセンスが複数あると、PCをそのライセンス数ぶん同時に有効化できるので、並列にワークフローが実行できるわけですね。
まあいろいろ書きましたが、ここまでは感覚的に当たり前の結果です。
テスト2: PC2台で、マシンキーを共有
さてさてマシンテンプレートは複数台で共有できるので、つぎはマシンキーを共有する設定にしてみます。
設定方法はさきの例からマシンキーを共通にしただけです。具体的には**「shared_template」というマシンテンプレートを作って、URランタイムを一つ割り当て**ておきます。
- PC情報
PC名 | マシンテンプレート名 |
---|---|
s001 | shared_template (URランタイムを1つ割り当て) |
s002 | 同上 |
- フォルダ情報
フォルダ名 | プロセス名 | ユーザ名 | マシンテンプレート名 |
---|---|---|---|
f001 | ModernTest ver.1.1.1 | ad\user001 | shared_template |
f002 | ModernTest ver.1.1.2 | ad\user002 | shared_template |
PC2台は、共通のテンプレート(shared_template)でどちらもフォルダ f001,f002 に紐付いているということですね。なのでどちらのPCでも、ver.1.1.1, ver.1.1.2 のワークフローが動くはずです。
ちなみにユーザは、単純化のためフォルダごとに別のユーザを紐付けました。
やってみましょう。
動画はこちら
わかること
-
ライセンスを複数台もっていると、複数のPC上で同時にワークフローが実行できる(テスト1とおなじ)
-
マシンキーを共有すると、ジョブの実行時にキーを共有しているPCたちで、空いているPCがワークフローを実行するなど、いわゆるラウンドロビン的なスケールアウトができる。
-
マシンキーを共有した場合でも、ジョブの作成時に明示的にPCを指定することも可能
-
マシンキーを共有する場合でもランタイム数は1でよい。
などがわかりました。
マシンキーの共有については「PCたちをひとかたまりと見なしていい場合は同じマシンキーにする」とか「あるPCは個別のフォルダに紐付けたいなどの場合は個別のキーを配布する」とか、そういったことを考慮すれば良さそうです1
公式にランタイムの説明 があるのですが、最初は意味が分かりませんでした。ここまで理解してあらためて読んでみると、、、
たとえば、あるマシン テンプレートに 2 つの Unattended ランタイムを割り当てたとします。そのマシン テンプレートを使用して Orchestrator に接続された 3 台のワークステーションは、6 つの Unattended ライセンス (2 つの Unattended ライセンス × 3 台のワークステーション) をテナントのライセンス プールから確保します。これにより、2 つの Unattendedを各ワークステーションで同時に実行できます。
(公式の表記を少しシンプルにしています)
なるほど。ようやく意味が分かりました。今回のケースのように 2台のPCで共有されるマシンテンプレートは、ランタイム2とかにするのではなく 、ランタイムは1でOKで、そのかわりテンプレートを2台が使ってるから、ライセンスは「2台PC」x「テンプレのランタイム1」 = 2消費するよという考え方なんですね。なるほど。
まとめ
- 複数台のUnattended ロボットを動かしてみました。
- マシンキーを個別に設定した場合、共有した場合でどのような違いがあるかが分かりました。
- マシンテンプレートのランタイム数をどう設定すれば良いかがわかりました。
- あとは冒頭のTL;DRに書いてあるようなことが、理解できました。
以上おつかれさまでしたー。
関連リンク
- UiPath Orchestrator のバージョンその他による挙動の違いにぐったりきたので整理(用語集) 用語集です
- Unattended 設定 ランタイムの設定の考え方
- [UiPath] よくわかるUnattendedロボット(イントロ編) 前回の記事
- 2種類のロボット接続【UiPath Orchestratorをもっとよく知る動画シリーズ】#11 公式。おなじような内容だけどもっと丁寧に解説されてますね! (クラウド版でOC2021ベースだけどね)
-
「あるPCだけランタイム数を複数にしたい場合とかは別キー」にした方が効率的なのですが、細かい説明は省略( PC台数xランタイム数になるからね) ↩