Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

@Ladicle Software Engineer - Z Lab Corp.

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Envoy → Observability ISUCON → Measure + Tuning もしかして…

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

ISUCON7予選問題 idobata風のチャットサービス ● サーバ3台構成 (default: APPx2, DBx1) ● 1core CPU /1GB Memory ● DBはMySQL ● APPは複数の実装があるがGoを選択

Slide 8

Slide 8 text

構成を検討する Envoyをどこまで使うか? ● 基本的にHTTPproxy/Tracing/Metricsだけ使う ● Serverは3台固定で、動的制御が必要なものもない のでcontrole-planeは使わず, data-planeのEnvoy にstaticな設定ファイルのみ渡す ● tcp_proxyを使ってMySQLの前段にEnvoyを置いて もよいが、取得できるMetricsの恩恵に比べて構築 の手間が大きいため使わない

Slide 9

Slide 9 text

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の設定ファイル

Slide 10

Slide 10 text

NGINXをEnvoyに置き換え 時間制限内に終わら せるためにDockerで サックとデプロイ

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

JaegerでTraceLogを見る Longest Spanでソートすると分かりやすい Errorが表示されているのは Service Nameが設定されて いないから envoy/issues/3792 Native Jaeger Tracingしよ うとしたらセグフォした envoy/issues/4140 横軸: 時刻 縦軸: Spanの期間

Slide 14

Slide 14 text

まとめ ISUCONでEnvoyを使えるか? ↪

Slide 15

Slide 15 text

WE ARE HIRING!

Slide 16

Slide 16 text

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