このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
クラスターアプリケーションをデプロイする前に、以下の準備作業を完了する必要があります。
NocoBaseアプリケーションをクラスターモードで実行するには、以下のプラグインのサポートが必要です。
| 機能 | プラグイン |
|---|---|
| キャッシュアダプター | ビルトイン |
| 同期シグナルアダプター | @nocobase/plugin-pubsub-adapter-redis |
| メッセージキューアダプター | @nocobase/plugin-queue-adapter-redis または @nocobase/plugin-queue-adapter-rabbitmq |
| 分散ロックアダプター | @nocobase/plugin-lock-adapter-redis |
| Worker ID アロケーター | @nocobase/plugin-workerid-allocator-redis |
まず、上記のプラグインのライセンスを取得していることを確認してください(対応するプラグインライセンスは、商用プラグインサービスプラットフォームから購入できます)。
アプリケーションインスタンス自体を除く他のシステムコンポーネントは、各チームの運用要件に応じて、運用担当者が自由に選択できます。
現在のクラスターモードはアプリケーションインスタンスのみを対象としているため、データベースは一時的にシングルノードのみをサポートしています。もしマスター・スレーブなどのデータベースアーキテクチャをお持ちの場合は、ミドルウェアを介してご自身で実装し、NocoBaseアプリケーションに対して透過的であることを保証する必要があります。
NocoBaseのクラスターモードは、クラスター間の通信と連携を実現するために、いくつかのミドルウェアに依存しています。これには以下が含まれます。
すべてのミドルウェアでRedisを使用する場合、クラスターの内部ネットワーク(またはKubernetes)内で単一のRedisサービスを起動できます。また、機能ごと(キャッシュ、同期シグナル、メッセージキュー、分散ロック)に個別のRedisサービスを有効にすることも可能です。
推奨バージョン
NocoBaseは、システム関連ファイルをstorageディレクトリに保存する必要があります。マルチノードモードでは、複数のノード間で共有アクセスをサポートするために、クラウドディスク(またはNFS)をマウントする必要があります。そうしないと、ローカルストレージは自動的に同期されず、正常に機能しません。
Kubernetesでデプロイする場合は、Kubernetesデプロイ:共有ストレージの章を参照してください。
クラスターモードでは、リクエストの分散、アプリケーションインスタンスのヘルスチェック、およびフェイルオーバーを実現するために、ロードバランサーが必要です。この部分は、チームの運用要件に応じてご自身で選択・設定してください。
セルフホスト型Nginxを例にとると、設定ファイルに以下の内容を追加します。
これは、リクエストをリバースプロキシし、異なるサーバーノードに分散して処理することを意味します。
他のクラウドサービスプロバイダーが提供するロードバランシングミドルウェアについては、各プロバイダーが提供する設定ドキュメントを参照してください。
クラスター内のすべてのノードは、同じ環境変数設定を使用する必要があります。NocoBaseの基本的な環境変数に加えて、以下のミドルウェア関連の環境変数も設定する必要があります。
アプリケーションがマルチコアノードで実行される場合、ノードのマルチコアモードを有効にできます。
KubernetesでアプリケーションPodをデプロイする場合は、この設定を無視し、Podのレプリカ数によってアプリケーションインスタンスの数を制御できます。
NocoBaseの一部のシステムコレクションでは、主キーとしてグローバルユニークIDを使用しています。このため、クラスター全体で主キーの競合を防ぐために、Worker IDアロケーターを介して各アプリケーションインスタンスに一意のWorker IDが割り当てられるようにする必要があります。現在のWorker IDの範囲は0〜31であり、これは同じアプリケーションが最大32ノードで同時に実行できることを意味します。グローバルユニークIDの設計については、@nocobase/snowflake-idを参照してください。
通常、関連するアダプターはすべて同じRedisインスタンスを使用できますが、キーの競合の可能性を避けるため、異なるデータベースを使い分けることをお勧めします。例えば、以下のようになります。
現時点では、各プラグインはそれぞれ独自のRedis関連環境変数を使用しています。将来的には、REDIS_URLをフォールバック設定として統一的に使用することを検討する可能性があります。
Kubernetesを使用してクラスターを管理する場合、上記の環境変数をConfigMapまたはSecretに設定できます。詳細については、Kubernetesデプロイを参照してください。
上記のすべての準備作業が完了したら、運用プロセスに進み、アプリケーションインスタンスの管理を続行できます。