免責事項:これは英文の記事「vCenter is unresponsive, vAPI endpoint service degraded, and logins fail until a reboot when envoy-sidecar hits memory limit.」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
vCenter Server 上のワークロードが失敗するか、vCenter Server にログインできなくなる可能性があります。
サービスは稼働しており、core ダンプも生成されません。再起動により解消できますが、事象の原因は判明していません。
Symptoms
<date && time> INFO websso[71:tomcat-http--33] [CorId=487fd2f5-e5c1-4592-b292-12345677890] [com.vmware.identity.samlservice.impl.ExternalIdpProvider] Got exception (sleeping before retry) com.vmware.vapi.client.exception.TransportProtocolException: HTTP response with status code 503 (enable debug logging for details): envoy overloadedvSphere 8.X
VCF 5.X
envoy-sidecar はメモリの使用を 1GB までに制限されています。これは /etc/vmware-envoy-sidecar/config.yaml より確認できます。# cat ./etc/vmware-envoy-sidecar/config.yaml | grep -C2 1073741824 typed_config: "@type": type.googleapis.com/envoy.extensions.resource_monitors.fixed_heap.v3.FixedHeapConfig max_heap_size_bytes: 1073741824 # 1GB actions: - name: "envoy.overload_actions.disable_http_keepalive"
メモリ使用量が 98% に達すると過負荷であることを示すエラーを送信し、vCenter Server の内部ワークロードの失敗を起こす可能性があります。
この問題は下記のコマンドにて特定できます。
zgrep "503 overload" /var/log/vmware/envoy-sidecar/envoy-access-* | wc -l
実行結果が0と異なる場合は、次のコマンドを実行してください:
vCenter Server 8.0U3、VCF 5.x の場合:
zgrep envoy_server_memory_heap_size{} /var/cache/vmware-rhttpproxy/envoy-sidecar-stats/* | cut -d ' ' -f2| sort -n | uniq | tail -1 | awk '{print $1 >= 1052266987}'
vCenter Server 9.0, VCF 9.x の場合:
zgrep envoy_overload_envoy_resource_monitors_fixed_heap_pressure /var/log/vmware/vstats/metrics/ENVOY_SIDECAR* | grep -v "# TYPE" | cut -d ' ' -f2| sort -n | uniq | tail -1 | awk '{print $1 >= 98}'
上記のコマンドが 1 を返す場合、envoy-sidecarのメモリ制限に達しています。
この問題は vCenter Server 8.0 および 9.0 の将来のリリースで軽減するよう取り組んでいます。
最新の vCenter Server へアップデートしてください。それでも問題が再発する場合は、以下の回避策を適用してください:
回避策:
vCenter Server もしくは拡張リンクモード (ELM) を構成している vCenter Server グループのスナップショットを取得します。( ELM 構成でのスナップショットの取得方法は VMware vCenter in Enhanced Linked Mode pre-changes snapshot (online or offline) best practice を参照してください)
# sed -i 's/max_heap_size_bytes: 2147483648/max_heap_size_bytes: 4294967296/g' /etc/vmware-envoy-sidecar/config.yaml# service-control --restart envoy-sidecar - name: "envoy.overload_actions.stop_accepting_requests" triggers: - name: "envoy.resource_monitors.global_downstream_max_connections" threshold: value: 0.99 - name: "envoy.resource_monitors.fixed_heap" threshold: value: 0.98
- name: "envoy.overload_actions.reject_incoming_connections" triggers: - name: "envoy.resource_monitors.fixed_heap" threshold: value: 1.00消去には vim を使用します:# vim /etc/vmware-envoy-sidecar/config.yaml
2 つのアクションを削除したあとの、yaml ファイル内の overload manager のセクションは下記のようになります:
overload_manager: refresh_interval: 1s resource_monitors: - name: "envoy.resource_monitors.global_downstream_max_connections" typed_config: "@type": type.googleapis.com/envoy.extensions.resource_monitors.downstream_connections.v3.DownstreamConnectionsConfig max_active_downstream_connections: 8000 - name: "envoy.resource_monitors.fixed_heap" typed_config: "@type": type.googleapis.com/envoy.extensions.resource_monitors.fixed_heap.v3.FixedHeapConfig max_heap_size_bytes: 4294967296 # 4GB actions: - name: "envoy.overload_actions.shrink_heap" triggers: - name: "envoy.resource_monitors.fixed_heap" threshold: value: 0.75 - name: "envoy.overload_actions.disable_http_keepalive" triggers: - name: "envoy.resource_monitors.global_downstream_max_connections" threshold: value: 0.8 - name: "envoy.resource_monitors.fixed_heap" threshold: value: 0.95 - name: "envoy.overload_actions.reduce_timeouts" triggers: - name: "envoy.resource_monitors.global_downstream_max_connections" scaled: scaling_threshold: 0.25 saturation_threshold: 0.97 - name: "envoy.resource_monitors.fixed_heap" scaled: scaling_threshold: 0.85 saturation_threshold: 0.97 typed_config: "@type": type.googleapis.com/envoy.config.overload.v3.ScaleTimersOverloadActionConfig timer_scale_factors: - timer: HTTP_DOWNSTREAM_CONNECTION_IDLE min_timeout: 2s
編集した設定の保存後は envoy-sidecar サービスを再起動してください:# service-control --restart envoy-sidecar