SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
KubernetesでPHPを動かした話
Report
gree_tech
Follow
gree_tech
Jun. 27, 2019
•
0 likes
•
2,079 views
1
of
25
KubernetesでPHPを動かした話
Jun. 27, 2019
•
0 likes
•
2,079 views
Download Now
Download to read offline
Report
Engineering
「第139回 PHP勉強会@東京」で発表された資料です。 https://phpstudy.doorkeeper.jp/events/93038
gree_tech
Follow
gree_tech
Recommended
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
gree_tech
728 views
•
18 slides
大規模ライブ配信の苦労ポイント
gree_tech
1.5K views
•
9 slides
Keynote
gree_tech
1.1K views
•
26 slides
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
Google Cloud Platform - Japan
13.6K views
•
28 slides
OSS強化学習向けゲーム環境の動向
gree_tech
2.7K views
•
54 slides
ネットワークエンジニアがWeb開発をやってみて思ったこと
gree_tech
1.4K views
•
29 slides
More Related Content
What's hot
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
gree_tech
4.1K views
•
29 slides
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
gree_tech
4.7K views
•
72 slides
[GREE Tech Talk #07] Unityカジュアルゲーム・ケーススタディ
gree_tech
13.4K views
•
52 slides
これからのインフラエンジニアについて考えていること
gree_tech
9.7K views
•
24 slides
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
Yosuke Hiraishi
75.5K views
•
28 slides
RPKIやってみませんか?
gree_tech
1.4K views
•
28 slides
What's hot
(20)
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
gree_tech
•
4.1K views
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
gree_tech
•
4.7K views
[GREE Tech Talk #07] Unityカジュアルゲーム・ケーススタディ
gree_tech
•
13.4K views
これからのインフラエンジニアについて考えていること
gree_tech
•
9.7K views
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
Yosuke Hiraishi
•
75.5K views
RPKIやってみませんか?
gree_tech
•
1.4K views
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
gree_tech
•
39.5K views
Jupyterカーネルを魔改造した話
Amazon Web Services Japan
•
1.2K views
改めてPaaSについて考えてみる
Kazuto Kusama
•
5.1K views
GCP vs 他社クラウド
Hasegawa Yusuke
•
4.9K views
CloudFoundryをつかってみよう
Kazuto Kusama
•
5K views
実践 自動復旧
gree_tech
•
946 views
ターン制コマンドバトルにおける強化学習効率化
gree_tech
•
5.3K views
社内サービスのUI改善
gree_tech
•
1.8K views
PHP Version Up と AWS への移行
gree_tech
•
7.6K views
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
normalian
•
838 views
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
gree_tech
•
2.7K views
OSS強化学習フレームワークの比較
gree_tech
•
5.7K views
知って欲しいPaaSの話
Kazuto Kusama
•
4.1K views
【Unite Tokyo 2019】AWS for Unity Developers
UnityTechnologiesJapan002
•
9.4K views
Similar to KubernetesでPHPを動かした話
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
Keiichi Hagiwara
306 views
•
40 slides
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
12.5K views
•
85 slides
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
4.7K views
•
52 slides
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
UnityTechnologiesJapan002
46.8K views
•
52 slides
Rails on GKEで運用するWebアプリケーションの紹介
Makoto Haruyama
4.2K views
•
44 slides
ゲームインフラコンテナ実践導入
Hiroki Tamiya
2.1K views
•
38 slides
Similar to KubernetesでPHPを動かした話
(20)
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
Keiichi Hagiwara
•
306 views
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
•
12.5K views
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
•
4.7K views
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
UnityTechnologiesJapan002
•
46.8K views
Rails on GKEで運用するWebアプリケーションの紹介
Makoto Haruyama
•
4.2K views
ゲームインフラコンテナ実践導入
Hiroki Tamiya
•
2.1K views
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
•
1.9K views
Phpでrest apiを作った話
Yamaguchi Kenya
•
555 views
自宅で出来る!ゲームサーバの作り方
光晶 上原
•
27.5K views
ZappaでDBもパッケージしたサーバーレスAPIを構築してみた
Yasunori Kirimoto
•
1.3K views
Lineにおけるspring frameworkの活用
Tokuhiro Matsuno
•
33.6K views
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
Masaya Aoyama
•
866 views
キャバァーン! サツバツエアアイオー弐〇壱弐
Kei Nakazawa
•
1.4K views
PostgreSQL on Amazon EC2の可能性
Serverworks Co.,Ltd.
•
2.4K views
Rancher2.0で実現する Managed Kubernetes Service
LINE Corporation
•
2.7K views
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
•
6.1K views
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
Hirotaka Kawata
•
3.2K views
Fluentd1.2 & Fluent Bit
Seiya Mizuno
•
3.2K views
AKS (k8s) Hands on Lab Contents
Yoshio Terada
•
829 views
サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術
Masaya Aoyama
•
1.8K views
More from gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
698 views
•
36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
222 views
•
13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
1K views
•
18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
1.7K views
•
84 slides
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
341 views
•
116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
548 views
•
31 slides
More from gree_tech
(20)
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
•
698 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
•
222 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
•
1K views
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
•
1.7K views
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
•
341 views
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
•
548 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech
•
585 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech
•
612 views
海外展開と負荷試験
gree_tech
•
586 views
翻訳QAでのテスト自動化の取り組み
gree_tech
•
294 views
組み込み開発のテストとゲーム開発のテストの違い
gree_tech
•
543 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech
•
206 views
データエンジニアとアナリストチーム兼務になった件について
gree_tech
•
297 views
シェアドサービスとしてのデータテクノロジー
gree_tech
•
424 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech
•
953 views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech
•
1K views
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
•
664 views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech
•
385 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech
•
742 views
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
gree_tech
•
418 views
KubernetesでPHPを動かした話
1.
で を動かした話 藤田貴大
2.
自己紹介 藤田貴大(@takfjt) グリー株式会社Wright Flyer事業本部Game Publishing部Serverチーム ゲームアプリのサーバエンジニアです
3.
はじめてGKEでゲームサーバを構築 負荷試験とその対策などで携わる 今回は、負荷試験の際に見えてきた Kubernetes上でPHPのサービスを動かしたときの躓き を紹介したいと思います はじめに
4.
Kubernetesそのものの話はしません PHP、コンテナ、Kubernetesに関する話は ふんわりまざっています 厳密じゃないです と、いうことで
5.
「ホストのクラスターを横断してアプリケーションコンテ ナを自動デプロイ、スケーリング、操作するためのプ ラットフォーム」 「Kubernetes」(参照 2019-03-19) 『ウィキペディア日本語版』 Kubernetesとは
6.
Apacheパラメータ未調整問題
7.
なんか遅いなーと思って調べたらApacheの パラメータに調整すべきところがいくつかあった
8.
いままで、php.iniくらいまではインフラチームの担当範 囲だった コンテナを導入すると、Dockerfileくらいまではゲーム チームの担当範囲になる → chefなどからノウハウを回収
9.
DNS Lookup溢れる問題
10.
高負荷をかけるとDNS Lookupのエラーが頻発 kube-dnsのCPUが100%にはりついていた
11.
Kubernetes DNS service1 kube-system DNS kubernetes
cluster Cloud SQL Cloud Spanner Cloud Memorystore The Internet
12.
かなり仕事が多い service1 kube-system DNS kubernetes cluster Cloud SQL Cloud Spanner Cloud Memorystore The
Internet クラスタ内の名前解決 Google Cloud内の 名前解決 インターネット側の 名前解決
13.
PHPであることによる原因 Kubernetesであることによる原因 クラウドであることによる原因 実装による原因 複合的な原因
14.
コネクションプールができない 実際には、PDOでも各種拡張モジュールでも 持続的接続の方法はけっこうあるが、 やったことがなかった → リクエスト毎にDNS Lookup PHPであることによる原因
15.
IPv6をdisableにするなど、OSのコアの設定に 手がだしにくい 使っていないAAAAレコードの問い合わせが多発 PHP(を含めて多くの言語)はOSがIPv6をenableにしてると 問い合わせに行く dns_get_record関数ならAレコードだけ、みたいな制御は効くが、 ext/mysqliにホスト名を渡した時などは制御できない Kubernetesであることによる原因
16.
マネージドサービスを使うと、 基本、名前でエンドポイントが与えられる RDB memcached redis etc... クラウドであることによる原因
17.
テーブル毎に別コネクションになっている ソーシャルゲームの事情で、DBをテーブルで 分割することがよくあり、このような実装 実装による原因
18.
sidecarとしてdnsmasqを動かしておく 原因を1つずつつぶして行くのは厳しかった 解決案
19.
Sidecar方式で解決 service1 kube-system DNS kubernetes cluster Cloud SQL Cloud Spanner Cloud Memorystore The
Internet DNS DNS DNS DNS ご存じの方は、この図だとDaemonSet?って 思うかもしれませんが、実際にはsidecar方式で 解決しました うまい図が浮かばなくてこうなっています。すいません
20.
「みんなのDocker/Kubernetes」にDaemonSetでやってると書いてあっ たのですけど、どうやったらできるか知っている人がいたら教えてくだ さい
21.
だが...
22.
dnsmasq先に死ぬ問題
23.
デプロイ時など、コンテナのシャットダウンが 一斉に開始 httpのコネクションが無くなるまで待機 実際はまだdnsmasqが立ち上がっていない問題もあっ た apacheの起動を53番が開くまで待つ対応も入れた
24.
ついでに宣伝
25.
https://github.com/gree/php-custom-environment-v ariables 連想配列の特定の値を、環境変数をつかって変更で きる コンテナは環境変数で設定したいことが多い getenvだとyamlとかjsonでつらい