======================== gcp ja night 31 参加メモ ======================== :blog_date:`2016/01/21` `gcp ja night #31 `__ (connpass) に参加したので参加メモ 当日は Google 様会場ご提供ありがとうございました。 また、スタッフの皆様お疲れ様でした。 以下タイトルは connpass より取得したものだったりするので不正確です。 .. contents:: :local: 個人的まとめ ============ - K8s の RC と Service は独立した構成要素。 RC は Pod の死活監視、 Service は L4 LB 的な動きをする。 - `GKE は 5 node まで無料で使える `__ ので、安く動かせることが多い。 - BigQuery の操作には `Cloud Datalab `_ (`Jupytter Notebook `_ 派生) が便利。 python で BigQuery を動かしたり pandas などを動かすことができる。 19:15 GKE Introduction @ gcp ja night #31 by @IanMLewis ======================================================= .. raw:: html - 今日の話は 2015 Borg -> `GoogleがBorgの詳細を公開 - InfoQ `__ - コンテナー は chroot ulimit とかで実現されている - コンテナ 軽量ポータブル 効率性 - Borg は Google社内で利用しているコンテナエンジン - Borg は DCaaS (Datacenter as a Service) - Borg は DC の OS - Borg の設定ファイル は DSL だな 「some = { some = { some = some } }」 みたいな - (感想) Borg で Kubernetes (K8s) を管理するんだなこれは - scheduler から BorgMaster に設定が渡され、コンテナにいろいろ展開される - コンテナ管理の課題 とは 複数サーバーのデプロイ、ノード障害時のリカバリー、コンテナ障害時のリカバリー、コンテナのアップグレード - K8s は Borg の対外的な実装、K8s の実装者は Borg の実装者と同じ - CNCF (Cloud Native Compiuting Foundatoin) で K8s の開発を支援 - Container Engine は K8s のhosted版 - (疑問) 実際 Docker を直接動かしてるの? Docker 互換の何か? - ポッド とは 複数のコンテナを同じホストで動かしたもの - 多数のポッドを識別する には 各々のポッドに種別のラベルを設定して識別 - (感想) ラベルはタグ的な - レプリケーションコントローラー は ポッドの実行状態を管理 - 管理対象はポッド - サービス とは エンドポイントを抽象化したもの - 仮想IPが割り振られる - ポッド間 は ラウンドロビン的に Load Balancing する - yaml ファイルに ``type: LoadBalancer`` とかかくと LoadBalancing してくれて便利 - (感想) K8s は GUI でコンテナーの状態を表示する機能がありそうで、便利そう - Google Cloud Platform を使ってみよう ってイベントある - GCP NEXT 2016 (参加費 499ドル) ってイベントある 20:00 GKEで半年運用してみた by @na_ga ===================================== .. raw:: html - takusuta では AWS/GKE 利用している - takusuta - Web版は GKE で作成 - モバイルは AWS Web は GKE - GA 前だけど GKE 利用したかったため、利用した - GKE ざっくり説明 - K8s のフルマネージドサービス - すごい安い - 5Node まで無料なので、安い - Pod と RC (Replication Controller) をしっていれば何とか使える - Service は Pod に対する L4 の LB な見たいな奴 - kube-proxy が動いていて便利 - GKE 構成した場合 - Service に SSL 証明書置けない - GCE の LB をおいて, GKE を NodePort として起動して使った - Cross Region LB 構成ができて、 CPU/リクエストの閾値を指定して、変更できる - ただ、 Zone によって性能に差があるので、気をつける - GKE の構成 - Google Cloud SDK を利用すればワンストップで利用できる - gcloud コマンドで動かせる - コンテナ作成時しか指定できない設定もあるので、注意。作り直しになる - gci.io ってコンテナのアップロード先が地域毎に存在する、日本は asia.gcr.io を利用すると早い - kubectl でコンテナにアタッチできる - GKE 活用例 - 5 ノード以下は無料なので、大きなクラスターは作らない - ennis-asia-app-001 がポッドの命名規則 - ennis はプロジェクト名、 asia はリージョン、app コンテナの種別、001 はユニークキー - インスタンステンプレートを更新する API がないので、不便 - gcr へのアップロードは、遅い - アップロードは Jenkins でビルド後にアップロード、 hubot でリリース指示 - 今のところ gcr は落ちたことなさそう - gcr のイメージの名前は、ハッシュなので、消し辛い。そのうち改善するでしょう - kubectl rolling-update ってコマンドがあって、一台ずつ inc/dec してくれる - multi-container-pod の場合は同じ名前ではアップデート失敗するので、駄目 - クラスタの方は gcloud コマンドで制御 - RC の数は kubectl で replica を制御 - Cloud Logging によるログ管理もでき、 Pod ごとにクラスタごとに検索できる - 標準の状態では標準出力もみるので、ノイズが多い。ログ名とかレベル名とかでフィルターできるようにしよう - Monitoring は StackDricer ベータなので、 Monitoring できる - Kubernetes dashboard は表示が不正確で、使い辛い - Kubedash 結構使えるので、便利 - まとめ - 簡単、安い、将来へ期待 - 本番でとりあえず使えるのでは 20:50 GCPで新規サービスを開発した話 by @Morikuma_Works ====================================================== - 内容が被った - 構成や使う動機が同じ - どんなプロジェクトだったか - 現実世界の混雑度合を IoT を利用して検知を行う系 - 必要な物 - センサデバイス - 20億レコード/月 を保存する DB - デバイスの管理、解析をするバックエンド - 画面を実際に提供するフロントエンド - 1.5ヶ月で作成する - 3人で作った - フロントエンドの人がいて、すごいできた人だった - プロトタイプ的なものなので、人が少なかった - 下の二つ話す - デバイスの管理、解析をするバックエンド - 画面を実際に提供するフロントエンド - 設計 - マイクロサービスアーキテクチャー - 何が問題だったか - 資源の無駄遣い - 人が少なく、Ansible を利用していたが、無理がでた - リリースなどの Ops の作業が難しかった - どう解決したか - フロントエンド/バックエンド - GKE は GCP の他のサービスと連携できる点が良かった - GKE は CI が行いやすい - GHE -(CI)-> circleci -(upload)-> gcr -(ローリングアップデート)-> GKE - デプロイとロールバックが容易だった - Dockerfile/Docker Image ですべてコンテナ管理できて便利 - モジュールなどを細かく記述できるので、マイクロサービスと親和性があった - GKE L7LB (Load Balancer) を使った - 100万リクエスト/s をウォームアップなしでさばける - SSL - http2 - url-map - HTTP LB はまだ Beta - セットアップの記載は複雑 - Google Cloud Monitoring を利用 - 20億レコード/月 を保存する DB - Streaming Insert でほぼリアルタイプでセンサデータをインサートできる - BQ はリアルタイム性が必要ない分析には速度十分、ちょっとまっても良い処理 - 保存、分析料金が安い - GCE で静的なIP取得してほっておくとお金かかる、、、 - BigQuery へは fluentd でデータを入れている - GCPを使ってみてどうだったか - k8s はマイクロサービスアーキテクチャに最適 - k8s + GKE は時短になる - BQ ででかいデータの分析ができる - -> IoT サービスと GCP は親和性が高いのでは 21:20 広告配信システムにおけるGCEでのAutoscalerとCloudLoggingの活用 by @_zoo ============================================================================ - GCE の Autoscaler と CloudLogging - 配信の一部で HTTP(S) LB と GCE を利用 - fluct に所属、純国産 SSP(SuplySidePlatform) - 広告素材の CDN - インプレッション計測サーバー、計画値ゅ - 利用したもの - GCE - HTTP(SP) LB - Autoscaler - Cloud Monitoring - Cloud Logging - BigQuery - official に発表されたものが中心 - ハマったところや、利用したものを書いた - LB は組み合わせて利用するもの、 AWS とは異なる感じ - GCE の Autoscaler - CPU utilization - Cloud Monitoring Metrics - HTTP LB serving cap - インスタンスごとの RPS(RequestPerSec) を見る - 管理方法 - gcloud をラップしたコマンドを利用 - さらに ``Makefile`` 書いて、 ``make`` コマンドで動くようにしている - Cloud Monitoring - Agent方式 - Disk Usage, Memory Usage が見られる - Network, Load Average - Cloud Logging - 広告といえばログ、ログといえば解析、解析といえば BigQuery - Cloud Logging は google 提供の td-agent - 入れると設定サンプルとかごっそり入れる - tag 単位で export できる - BigQuery, Google Cloud Storage に export できる 21:40 Cloud DatalabとBigQueryを使ったアドホックデータ解析 by @hagino3000 ======================================================================== .. raw:: html - Zucks - 多椀バンデットアルゴリズム - バナー広告 - 機械学習やら最適化やっている - 担当 - CTRの予測 - CVRの予測 - 最適な入札価格 - インプレッションの予測 - 異常枠の検知 - アドホックな解析に `Cloud Datalab`_ を利用し始めた - S3 -(トリガー)-> ColudStorage -(1時間に一回)-> BigQuery って感じに流す - Hadoopクラスタ無い - AdHok なデータ利用する環境 - *複数の環境から BigQuery 流すと動かないことがある* - 300GB/day 取り込めれば良い - マネージドサービスなので、楽 - 73TBで2000ドル/月 - DataLoad - 既存のシステムに影響したくないので、 Streaming Insert は利用しない - Streaming Insert お金かかるので リアルタイムに見るデータでは無いので別にいい - 今なら Embulk, Cloud Dataflow を利用するかも - Job管理 - Luigi を利用している - タスク間の依存性定義 - 入出力管理の抽象化 - リトライエラー管理 - モニタリング用UIある - 処理は Python で書ける - チームへの共有 - Google App Script は Cron的に使えるので便利 - GAS で Google Spreadsheet に書き出している - re:dash ``__ - Kibana っぽい画面を使える - EC2 / GCE のイメージがある - ちゃんと使うなら、 TLS + Google Account 認証にする - `Cloud Datalab`_ - Jupyter Notebook ベース - AppEngine + ManagedVM で動作 - Jupyter Notebook 課題 - 実験ノートをもっと気軽に - アクセス制限をかけたい - 管理したくない - `Cloud Datalab`_ はコンテナなので、もろもろ解決 - `Cloud Datalab`_ は BigQuery にもアクセスでき、便利