Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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!