3.3. プラットフォームゲートウェイプロキシーおよび認証サービスのスケーリングに関する考慮事項
プロキシーまたは認証へのリクエストのボリュームが既存のプラットフォームゲートウェイサービスの機能を超えると、プラットフォームゲートウェイプロキシーと認証サービスのスケーリングが適切である可能性があります。この場合、垂直スケーリングでは gRPC、Envoy、Nginx、および WSGI サービスのすべてのワーカープール値が自動的に調整されないため、水平スケーリングが推奨されます。
追加のプラットフォームゲートウェイサービス Pod またはインスタンスにより、WSGI Web サービスワーカーと gRPC 認証サービスワーカーに必要なデータベース接続が増加する可能性があります。
CPU 使用率にボトルネックが見られる場合、gRPC 認証サービスをスケーリングするとスループットが向上する可能性があります。ただし、外部認証プロバイダーが高レイテンシーの原因である場合、gRPC サービスの水平スケーリングによるメリットは最小限になります。アップストリームサービス時間と合計リクエストレイテンシーの差を確認することで、リクエストの gRPC 認証レイテンシーを判断できます。
最もパフォーマンスの高い認証方法は次のとおりです。
- トークン認証
- セッション認証
- CPU を集中的に使用するパスワードハッシュによってリクエストの遅延が著しく増加するため、高頻度の API 自動化には Basic 認証を使用しないでください。Basic 認証を LDAP 認証と組み合わせて使用すると、LDAP サービスに到達すると、特に LDAP サービスの可用性が制限されている場合に大きなレイテンシーが発生する可能性があります。このため、API に対して自動化を実行するには OAuth トークンを作成することを推奨します。
プラットフォームゲートウェイサービス Pod を水平方向にスケーリングすると、各 Envoy がこれを個別に追跡するため、各コンポーネントの API に対するヘルスチェックの数も増加します。これらは、ユーザーエージェント Envoy/HC のログで確認できます。ヘルスチェックはユーザーが開始したリクエストと同じサービスとキューを通過するため、過負荷が原因でリクエスト全体の時間が長引くと、ヘルスチェックもタイムアウトになる可能性があります。このような状況が発生すると、Envoy はこれらのサービスノードが再度ヘルスチェックに合格するまで、リクエストの転送を停止します。
3.3.1. OpenShift Container Platform 上のプラットフォームゲートウェイプロキシーおよび認証サービスのスケーリングに関する特別な考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
100 件を超えるリクエストがバックログされると、これらのリクエストは uWSGI によってドロップされるため、OpenShift Container Platform でサービスが水平に必要な分、スケーリングされることが特に重要です。その結果、クライアントではドロップされたリクエストに対してタイムアウトが発生します。次のログテキストには、このイベントに対応するエラーが示されています。
*** uWSGI listen queue of socket ":8000" (fd: 3) full !!! (101/100) ***
*** uWSGI listen queue of socket ":8000" (fd: 3) full !!! (101/100) ***
このエラーは、uWSGI のバックログの長さがカーネルパラメーター somaxconn に紐づき、制約されていることが原因で発生します。OpenShift Container Platform でこのカーネルパラメーターを上げることは可能ですが、そのためには “unsafe sysctls” を許可する必要があります。