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

