ScalarDL Ledger と Auditor を介して ScalarDL アプリケーションを実行する
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このガイドでは、ScalarDL Ledger と Auditor を介して ScalarDL アプリケーションを実行する方法について説明します。このドキュメントでは、すでに ScalarDL Ledger をはじめようチュートリアルを試し、Java で ScalarDL アプリケーションを書くガイドを参考にして Client SDK を使用して ScalarDL を統合したアプリケーションを作成したことを前提としています。
ScalarDL Auditor とは何ですか?
ScalarDL Auditor は、Ledger の同一の状態を管理し、クライアントがビザンチン故障を検出するのを支援するコンポーネントです。Auditor を使用すると、セキュリティの観点から有益ですが、追加の処理コストが必要になります。したがって、ユースケースに必要かどうかを慎重に検討してください。
ビザンチン故障検出を適切に機能させるには、Ledger と Auditor を異なる管理ドメインに展開および管理する必要があります。ただし、このガイドでは簡単にするため、scalardl-samples 環境でのシンプルな設定を使用します。ここでは、Ledger と Auditor の両方が同じネットワーク上に配置され、同じ管理ドメイン内で管理されます。
設定する
Ledger と Auditor を介して ScalarDL アプリケーションを実行する前に、まず Ledger、Auditor、および ScalarDL と相互作用するクライアントを設定する必要があります。
以下に説明するように、設定する必要がある重要なオプションと決定事項がいくつかあります。
Auditor を有効にする
Ledger と Auditor を介してアプリケーションを実行するため、Auditor を有効にす る必要があります。Auditor の有効化は、以下のようにクライアントと Ledger の設定で行う必要があります。
- クライアントの設定で、
scalar.dl.client.auditor.enabledをtrueに設定します。 - Ledger の設定で、
scalar.dl.ledger.auditor.enabledをtrueに設定します。
次に、ScalarDL は Asset Proof を使用して Ledger と Auditor 間の整合性をチェックするため、scalar.dl.ledger.proof.enabled を true に設定して Ledger 設定で Asset Proof を有効にする必要があります。また、認証方式を決定するセクションで選択した認証方式に応じて、Asset Proof に署名するために Ledger と Auditor の設定で適切な秘密鍵またはシークレットキーを設定する必要があります。
scalardl-samples 環境を使用している場合は、対応するストレージの ledger.properties および auditor.properties ファイルを参照してください。
設定の詳細については、以下を参照してください:
認証方法を決定する
クライアントの認証方式として、電子署名または HMAC のいずれかを選択する必要があります。電子署名方式は認証に加えて否認防止も提供しますが遅く、HMAC 方式は認証のみですが高速です。
認証方法は以下のように設定できます。クライアント、Ledger、および Auditor の全体で同じ方法 (digital-signature または hmac) を設定する必要があります。
- クライアントの設定で
scalar.dl.client.authentication.methodをdigital-signatureまたはhmacに設定します。 - Ledger の設定で
scalar.dl.ledger.authentication.methodをdigital-signatureまたはhmacに設定します。 - Auditor の設定で
scalar.dl.auditor.authentication.methodをdigital-signatureまたはhmacに設定します。
また、秘密情報の準備も必要です。電子署名方式の場合は証明書と秘密鍵、HMAC 方式の場合はシークレットキーを用意してください。ScalarDL の認証について詳しくは ScalarDL 認証ガイドを参照してください。
設定の詳細については、以下を参照してください:
データベース設定を決定する
Ledger と Auditor の両方が ScalarDB を使用してデータベースと相互作用するため、様々なデータベース上で ScalarDL を実行できます。そのため、アプリケーションの要件に基づいて ScalarDB がサポートするデータベースを決定し、いくつかの ScalarDB パラメータを設定する必要があります。
ScalarDB パラメータの詳細については、ScalarDB の設定も参照してください。
下位のデータベース
使用するデータベースの設定方法:
- Ledger と Auditor の設定で、
scalar.db.storage、scalar.db.contact_points、scalar.db.username、およびscalar.db.passwordを利用するデータベースに合わせて設定します。
ScalarDB を介して ScalarDL でサポートされるデータベースとそのバージョンについては、要件を参照してください。
アプリケーションが Function 機能を介してテーブルを読み書きし、そのテーブルが ScalarDB アプリケーションからも直接アクセスされる場合は、ここで選択したデータベースを適切に設定する必要があります。具体的には、一貫性を保証するために、ScalarDL アプリケーションと ScalarDB アプリケーションの両方が同じ Coordinator テーブルを参照する必要があります。
分離レベル
Ledger は ScalarDB の Consensus Commit トランザクションマネージャを利用してトランザクションを管理します。トランザクションマネージャは、トランザクションの分離性を保証し、整合性・正確性を担保します。
Ledger の分離レベルは以下のように設定できます。どの分離レベルを使うべきかわからない場合は、SERIALIZABLE を使用してください。
- Ledger の設定で
scalar.db.consensus_commit.isolation_levelに希望する分離レベルを設定します。デフォルト値はSNAPSHOTです。
Auditor は Consensus Commit トランザクションマネージャを利用しないため、Auditor 用にトランザクションマネージャや分離レベルを設定する必要はありません。
制限事項
ScalarDL は ScalarDB を活用していますが、以下の ScalarDB 機能は ScalarDL の一貫性保証メカニズムと互換性がありません。
- コーディネーターテーブルのグループコミット (
scalar.db.consensus_commit.coordinator.group_commit.enabledはfalseである必要があります。) - パフォーマンス関連設定のコーディネーター書き込み省略最適化 (
scalar.db.consensus_commit.coordinator.write_omission_on_read_only.enabledはfalseである必要があります。)
その他の設定を決定する
クライアント、Ledger、および Auditor には TLS や gRPC などの設定を追加で設定可能です。詳細は以下を参照してください。
Ledger と Auditor を起動する
Ledger、Auditor、およびクライアントを設定した後、Ledger と Auditor を起動する必要があります。
このガイドでは、Ledger と Auditor をローカルで起動するために scalardl-samples のコンテナベース環境を使用します。リポジトリのクローンが完了していない場合は、前提条件とScalarDL サンプルリポジトリのクローンを作成するを参照してください。
ローカルまたはクラウドベースの Kubernetes 環境で Ledger と Auditor をローカルで起動する方法の詳細については、ローカル Kubernetes 環境に ScalarDL をデプロイするまたはクラウドベースの Kubernetes 環境に ScalarDL をデプロイするをそれぞれ参照してください。