ISUCONでEnvoyを使えるか?

 ISUCONでEnvoyを使えるか?

71d7f6cdf5b1934a1b69f0624f5a7523?s=128

Aya (Igarashi) Ozawa

September 11, 2018
Tweet

Transcript

  1. ISUCONで Envoyを使えるか? Cloud Native Meetup #4 LT Aya Igarashi @Ladicle

  2. @Ladicle Software Engineer - Z Lab Corp.

  3. お題となるWebサービスを決められたレギュレーションの中で限界ま で高速化を図るチューニングバトル!!! 今週末は…

  4. 2016 はてなダイアリー風 似非マイクロサービス 2017 idobata風(chat app) サーバ3台構成 2018... ????? よりCloud

    Nativeな構成に?
  5. Envoy → Observability ISUCON → Measure + Tuning もしかして…

  6. さっそくISUCON7の予選問題で試してみる(制限時間5h) https://github.com/Ladicle/isucon7-qualifier-envoy

  7. ISUCON7予選問題 idobata風のチャットサービス • サーバ3台構成 (default: APPx2, DBx1) • 1core CPU

    /1GB Memory • DBはMySQL • APPは複数の実装があるがGoを選択
  8. 構成を検討する Envoyをどこまで使うか? • 基本的にHTTPproxy/Tracing/Metricsだけ使う • Serverは3台固定で、動的制御が必要なものもない のでcontrole-planeは使わず, data-planeのEnvoy にstaticな設定ファイルのみ渡す •

    tcp_proxyを使ってMySQLの前段にEnvoyを置いて もよいが、取得できるMetricsの恩恵に比べて構築 の手間が大きいため使わない
  9. static_resources: listeners: - address: socket_address: address: 0.0.0.0 port_value: 80 filter_chains:

    - filters: - name: envoy.http_connection_manager config: tracing: operation_name: ingress codec_type: auto stat_prefix: isubata_http route_config: name: isubata_route virtual_hosts: - name: isubata_all domains: - "*" routes: - match: prefix: "/" route: cluster: isubata1 decorator: operation: isubata1 http_filters: - name: envoy.router clusters: - name: isubata1 connect_timeout: 60s type: static lb_policy: round_robin hosts: - socket_address: address: 127.0.0.1 port_value: 5000 - name: jaeger connect_timeout: 1s type: static lb_policy: round_robin hosts: - socket_address: address: 10.0.1.100 port_value: 9411 tracing: http: name: envoy.zipkin config: collector_cluster: jaeger collector_endpoint: "/api/v1/spans" admin: access_log_path: "/tmp/admin-access.log" address: socket_address: address: 0.0.0.0 port_value: 9901 Envoyの設定ファイル
  10. NGINXをEnvoyに置き換え 時間制限内に終わら せるためにDockerで サックとデプロイ

  11. 3681 初回ベンチマーク結果 まだEnvoyによる影響はなかった 3684

  12. Targetの表示 起動忘れてベンチ回 すミスが防げる Grafana Dashboard 複数台構成でも楽に状 況把握. ISUCON用途だ とNodeExporterで十 分だった

  13. JaegerでTraceLogを見る Longest Spanでソートすると分かりやすい Errorが表示されているのは Service Nameが設定されて いないから envoy/issues/3792 Native Jaeger

    Tracingしよ うとしたらセグフォした envoy/issues/4140 横軸: 時刻 縦軸: Spanの期間
  14. まとめ ISUCONでEnvoyを使えるか? ↪

  15. WE ARE HIRING!

  16. For your time & we’ll see you soon ladicle Thank

    you!