3.5. Event-Driven Ansible API のスケーリングに関する考慮事項
Event-Driven Ansible のスケーリングには、各サービスタイプに関する考慮事項が含まれます。
- API および WebSocket サービス
- EventStream サービス
/api/eda および /api/eda-event-stream にルーティングされる API リクエストは、2 つの個別の Gunicorn デプロイメントによって処理されます。OpenShift Container Platform では、これらのサービスは個別にスケーリングする必要があります。仮想マシンベースのインストールとコンテナーベースのインストールでは、ハイブリッドノードの数を増やすことで、これらのサービスを一緒に拡張できます。
3.5.1. Event-Driven Ansible API と WebSocket サービス リンクのコピーリンクがクリップボードにコピーされました!
Event-Driven Ansible API サービスは、Event-Driven Ansible でのユーザーロール、プロジェクトの作成、アクティベーションの作成、結果の確認に関する情報を含む、アプリケーションへの HTTP 要求を処理します。API サービスの主要なパフォーマンス指標は次のとおりです。
-
/api/edaのリクエストの API レイテンシーが高い - API Pod/ノードでの CPU 使用率が高い
-
サービスがビジー状態でヘルスチェックに応答できないため、プラットフォームゲートウェイが
503エラーを返す
ルールブックのアクティベーションの出力を管理するために、API サービスと一緒に WebSocket サービスがデプロイされます。アクティベーションを行うたびに、このサービスへの永続的な WebSocket 接続が維持され、ステータスの通信を行い、指示を受け取ります。アクティベーションの数やアクティベーションからの出力が多すぎると、WebSocket サーバーに負荷がかかりすぎてしまい、障害が発生する可能性があります。
Event-Driven Ansible API および WebSocket サービスを拡張するには、次のストラテジーを検討してください。
-
OpenShift Container Platform: WebSocket サーバー (Daphne) は
eda-apiPod 内で実行されます。このサービスを拡張するには、eda-apiデプロイメントを水平に拡張します。
実行されるアクティベーションの数に応じて、eda-api デプロイメントをスケーリングするようにしてください。
- 仮想マシンベースのインストールまたはコンテナーベースのインストール: ハイブリッドノードを追加することで、API サービスと並行して WebSocket サービスを水平に拡張します。これにより、すべての Event-Driven Ansible コンポーネントの容量が同時に増加します。
デプロイメントで WebSocket サービスにボトルネックが発生したかどうかを確認するには、アクティベーションログで次のエラーを確認します。
ansible_rulebook.websocket - WARNING - websocket aborted by <class 'websockets.exceptions.InvalidMessage'>: did not receive a valid HTTP response ansible_rulebook.cli - ERROR - Terminating: did not receive a valid HTTP response
ansible_rulebook.websocket - WARNING - websocket aborted by <class 'websockets.exceptions.InvalidMessage'>: did not receive a valid HTTP response
ansible_rulebook.cli - ERROR - Terminating: did not receive a valid HTTP response
3.5.2. Event-Driven Ansible EventStream サービス リンクのコピーリンクがクリップボードにコピーされました!
/api/eda-event-stream への POST リクエストを処理する Event Stream API は、外部ソースからイベントをインポートするために設計された別の Gunicorn サービスです。このサービスのパフォーマンスが低下し、待ち時間が長くなったり、スループットが低下したり、可用性に問題が発生したりした場合は、スケーリングする必要があります。Pod がビジー状態のため時間内にヘルスチェックに応答できない場合、プラットフォームゲートウェイはこのサービスに対して 503 エラーを返します。
Event-Driven Ansible EventStream サービスを拡張するには、次のストラテジーを検討してください。
-
OpenShift Container Platform: メインの
eda-api デプロイメントとは別に管理されるため、専用のeda-event-streamワーカーデプロイメントを水平にスケールアップします。 - 仮想マシンベースのインストールまたはコンテナーベースのインストール: ハイブリッドノードを追加することでこのサービスを水平にスケールアップし、すべての Event-Driven Ansible コンポーネントの容量を同時に増加させます。