Self-Hosted Runner
    • PDF

    Self-Hosted Runner

    • PDF

    記事の要約

    概要

    Self-Hosted Runnerは、TROCCOの転送ジョブをユーザーが用意した任意の環境上で実行できるようにする機能です。
    これまで通り、転送設定の作成・編集やジョブの起動はTROCCOのUI上から行えますが、起動された転送ジョブはユーザー自身が管理する環境上のコンテナ(Runner)で実行されます。

    プラン上の制約

    本機能の利用は、Professionalプランの契約が前提となります。
    詳しくは、営業担当者またはカスタマーサクセスまでお問い合わせください。

    主な特徴

    任意の環境で実行可能

    オンプレ環境やクラウドのプライベートなネットワーク上など、お客様自身が管理する環境にコンテナ(Runner)を立ち上げ、その上で転送ジョブを実行できます。

    リクエストの片方向性

    TROCCOからコンテナ(Runner)へのリクエストは発生しません。
    Runner側が一定間隔でTROCCOにリクエストを行い(Heartbeatリクエスト)、必要なジョブ情報をレスポンスとして取得します。

    利用上の注意・制約

    推奨リソース

    • メモリ:2GB以上
      • Runnerとなる環境のメモリの推奨リソースです。
      • なお、一部の転送元ファイル・ストレージ系コネクタでは 4GB 以上のメモリが必要となるケースがあります。
        • 例:転送元 - Amazon S3
    CPUの推奨値

    CPUに関しては、とくに推奨値はありません。
    ただし、CPUのコア数を増やすとEmbulkの並列実行による処理速度向上が期待できるため、パフォーマンスが上がる可能性があります。

    基本概念

    Cluster

    Clusterとは、Runnerを論理的にまとめる概念です。Clusterは複数のRunnerを管理・保持します。
    ジョブが起動されると、Cluster内のいずれかのRunnerがジョブを受け取り、ジョブを実行します。
    作成方法について、詳しくはClusterの作成を参照ください。

    Runner

    Runnerとは、ジョブの実行コンテナです。
    TROCCOが提供するRunner用のコンテナイメージを使用し、環境変数に適切なトークンを設定することで、Runnerを起動できます。
    詳しくは、Runnerの起動を参照ください。

    Runner間の不干渉性

    任意のClusterに複数のRunnerが属している場合において、Runnerはそれぞれ独立して起動します。
    たとえば、同一Cluster内の複数のRunnerが同時に立ち上がった場合、それらが互いに干渉することはありません。

    Heartbeat

    Runnerは、TROCCOに対して一定間隔でリクエストを送信します。
    この挙動のことを、Heartbeatリクエストといいます。
    TROCCOは、Runnerから送信されるHeartbeatリクエストを受け取ることで、Runnerが稼働中かどうかを認識します。

    RegistrationToken

    Runnerを起動する際に必要となるトークンです。
    各Clusterに対し、最大で2つまでRegistrationTokenを作成できます。

    設定方法

    1. Clusterの作成

    左サイドバーのSelf-Hosted Runnerから、Self-Hosted Runner Cluster一覧画面を表示できます。
    Cluster一覧画面では、これまで作成したClusterを確認できます。また、Clusterを新たに作成できます。

    Clusterの新規作成ボタンをクリックすると、名前・説明・リソースグループ(チーム機能が有効な場合)を設定できます。
    これらの設定値を入力して保存すると、Clusterは保存され、詳細画面へ遷移します。
    このとき、RegistrationTokenが画面上に表示されるので、メモしてください。

    2. Runnerの起動

    お客様環境にて、Docker Container Imageの取得、およびDocker Containerを起動します。
    以下は、コマンドサンプルです。

    docker pull public.ecr.aws/i4m4b0i8/trocco-self-hosted-runner:latest
    docker run \
      -e TROCCO_REGISTRATION_TOKEN="<YOUR REGISTRATION KEY>" \
      -e TROCCO_PREVIEW_SEND="<PREVIEW_DATA_IS_SAVED>" \
      --rm \
      public.ecr.aws/i4m4b0i8/trocco-self-hosted-runner:latest
    
    パラメータ必須説明
    <YOUR REGISTRATION KEY>Cluster詳細画面上に表示されたRegistrationTokenに置き換えてください。
    <PREVIEW_DATA_IS_SAVED>-プレビューデータ(実データ)をTROCCO側に送信するかどうかを指定します。
    本パラメーターを指定しなかった場合は、暗黙的にfalseが渡されます。
  • trueを指定すると、プレビューデータ(実データ)がTROCCO側に送信されます。この場合、転送設定STEP2および詳細画面にてプレビュー結果を永続的に確認できます。
  • falseを指定すると、プレビューデータ(実データ)はTROCCO側に送信されません。セキュリティ的な観点でTROCCO側にプレビューデータを保持させたくない場合は、falseを指定(または本パラメーターを未指定に)してください。
  • 3. 転送設定の編集

    Runner上でジョブを実行したい転送設定を編集します。
    転送設定STEP1の基本設定で、Clusterを選択できます。
    なお、転送設定側でClusterを選択するには、以下の条件を満たす必要があります。

    • Self-Hosted Runnerを契約している
    • Self-Hosted Runnerに対応している転送元・転送先コネクターの組み合わせである

    機能詳細

    Self-Hosted Runner Cluster詳細画面

    Clusterの削除

    画面右上の三点リーダーから削除できます。
    ただし、該当のClusterを選択している転送設定が1つでもある場合、削除はできません。

    RegistrationTokenの発行

    Clusterの作成時に、自動でトークンが1つ発行されます。
    トークンは最大2つまで作成できます。

    RegistrationTokenの削除

    ゴミ箱アイコンから削除できます。
    トークンを削除すると、以降に作成されたRunnerの起動には使用できなくなります。

    RunnerがACTIVE状態のときにトークンを削除した場合

    トークンを削除する時点で、Runnerにジョブが割り当てられていた場合、そのRunnerはジョブが終了するまでは動作します。

    Runnerのステータス

    以下の3種類です。

    • IDLE:Runnerは立ち上がっているが、ジョブが割り当てられていない状態
    • ACTIVE:Runnerは立ち上がっており、なおかつジョブが割り当てられている状態
    • OFFLINE:RunnerからのHeartbeatが30秒以上途絶えている状態
    ACTIVEかつOFFLINEになるケース

    ジョブの実行中に、TROCCOがHeartbeatリクエストが受信できなくなった場合などに、ACTIVEかつOFFLINEなステータスになることがあります。
    この状態になり、なおかつジョブが意図通り完了しない場合は、お客様環境のコンテナが正しく動いているかをご確認ください。

    Runnerの停止

    Runnerを手動で停止(Dockerプロセスを終了)できます。
    お客様環境側でコンテナを停止できない場合などにお使いください。

    RunnerがACTIVE状態のときにRunnerを停止した場合

    ジョブが割り当てられているRunnerを停止した場合、そのRunnerはジョブが終了するまでは動作します。(Graceful Shutdown)

    Runnerの削除

    OFFLINEのRunnerのみ、手動で削除できます。
    ただし、本項における「削除」とは、あくまで「TROCCOのデータベースから削除され、TROCCOの画面上には表示されなくなる」ことを意味します。
    お客様環境側にあるコンテナ自体は削除されません。

    Runnerの自動削除

    OFFLINEの状態が72時間継続したRunnerは、自動的に「削除」されます。

    削除されたコンテナがリクエストを再送した場合

    TROCCO側で「削除」されたコンテナがHeartbeatリクエストを再送した場合、そのRunnerは新しいRunnerとしてTROCCOに再登録されます。

    チーム機能有効時の操作権限

    操作\ロールリソースグループ管理者リソースグループ編集者リソースグループ運用者リソースグループ閲覧者
    Clusterの閲覧
    Clusterの利用(転送設定側での選択権限)-
    Clusterの編集--
    Clusterの削除--
    RegistrationTokenの発行--
    RegistrationTokenの削除--
    Runnerの停止--
    Runnerの削除--

    転送設定

    転送設定STEP1

    基本設定にて、Clusterを選択できます。

    転送設定STEP2

    スキーマ情報の取得やプレビュー用データの取得処理はRunner上で行われます。
    なお、プレビュー用データをTROCCOに送信するかどうかは、Runnerの起動時に選択できます。
    詳しくは、Runnerの起動を参照ください。

    転送ジョブ詳細

    通常のジョブと同様に、ジョブの実行結果やジョブステータスを確認できます。
    Runner上で実行されたジョブかどうかも、画面上から確認できます。
    また、Runner上で実行されたジョブに限り、queueステータスでもジョブのキャンセルが可能です。

    補足事項

    Self-Hosted Runner利用時の処理時間

    Self-Hosted Runnerを利用して実行された転送ジョブに関する処理時間のカウントは行われません。

    Self-Hosted Runnerに対応するコネクター

    Self-Hosted Runnerは、特定の転送元コネクターかつ転送先コネクターの組み合わせでのみ、利用できます。
    以下に記載のないコネクターを選択した場合は、転送設定でClusterの選択項目が表示されません。

    転送元コネクター

    • 転送元 - Amazon Redshift
    • 転送元 - Amazon S3
    • 転送元 - Azure Blob Storage
    • 転送元 - Databricks
    • 転送元 - FTP・FTPS
    • 転送元 - Google Cloud Storage
    • 転送元 - HTTP・HTTPS
    • 転送元 - MongoDB
    • 転送元 - MySQL
    • 転送元 - PostgreSQL
    • 転送元 - SFTP
    • 転送元 - Snowflake
    • 転送元 - SQL Server

    転送先コネクター

    • 転送先 - Amazon Redshift
    • 転送先 - Amazon S3
    • 転送先 - Amazon S3 Parquet
    • 転送先 - Azure Blob Storage
    • 転送先 - Databricks
    • 転送先 - FTP・FTPS
    • 転送先 - Google BigQuery
    • 転送先 - Google Cloud Storage
    • 転送先 - Microsoft SQL Server
    • 転送先 - MySQL
    • 転送先 - PostgreSQL
    • 転送先 - SFTP
    • 転送先 - Snowflake

    Self-Hosted Runnerが対応していない機能

    転送設定で利用できない機能

    • リソース増強オプション
      • リソース増強オプションは、TROCCOのジョブ実行環境を増強する機能であるため、Self-Hosted Runnerには適用されません。
    • 転送設定STEP1 > 接続確認機能・テーブルなどの一覧取得機能
      • これらの機能は、RunnerではなくTROCCO側から実行されます。
      • そのため、たとえば社内ネットワークからのみアクセスを許可しているデータソースの場合、実行できません。
    • 転送設定STEP2 > スキーマ変更検知・カラム定義再読み込みプログラミングETL
      • これらの機能は、RunnerではなくTROCCO側から実行されます。
      • そのため、これらの機能は利用できません。画面にも表示されない仕様となっています。
    • 転送設定STEP2 > リトライ機能
      • 最大リトライ回数を1以上に設定しても、リトライは実施されません。
    • アカウント設定 > タイムアウト設定
      • アカウント設定によるタイムアウト設定を有効にしている場合にも、ジョブは自動停止されません。
    • 通知設定 > 実行時間経過時による通知

    接続情報で利用できない機能

    • AWS Systems Manager Session Managerを用いた接続
      • 有効にした場合、接続に失敗します。
      • なお、Systems Manager Session Managerを利用しない通常のSSH経由での接続には対応しています。
    • TROCCO側のPrivateLink機能を用いた接続
      • TROCCO側のPrivateLink機能が有効の場合、接続に失敗します。
    • Amazon S3接続情報における、IAMロール認証
      • IAMユーザー認証による接続は対応しています。

    その他詳細仕様

    転送設定のYAML設定ファイル

    転送設定詳細画面で確認できるYAML設定ファイルには、以下のkeyが追加されます。

    self_hosted_runner_cluster:
        - id:
        - name:
    

    転送設定のリビジョン復元時の挙動

    Self-Hosted Runnerが無効になったアカウントで、かつ過去のリビジョンがSelf-Hosted RunnerのClusterを紐づけている場合、そのClusterは空の状態として復元されます。
    転送設定のYAML設定ファイルにも、keyが削除された状態で復元されます。

    監査ログの記録対象

    Runnerそのものに関する操作(例:Runnerの起動やHeartbeatリクエストなど)は記録されません。


    この記事は役に立ちましたか?