Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Arukas meet Mesos/Marathon

2018年6月25日開催 『Mesos Meetup Tokyo #5』のスライド資料です。

  • Login to see the comments

  • Be the first to like this

Arukas meet Mesos/Marathon

  1. 1. Mesos Meetup Tokyo #5 Sakura Internet Inc. Shuji Yamada @uzyexeJun 25, 2018 Arukas meet Mesos/Marathon
  2. 2. Shuji Yamada • さくらインターネット所属 • コンテナホスティング「Arukas」担当 • 好きなOSは CoreOS • 好きなデプロイツールは Chef と Terraform • 好きなクラスタは Mesos/Marathon (山田 修司) Trust me. I am Engineer _(┐¦_ ε:) 2
  3. 3. 3 What’s Arukas?
  4. 4. 4
  5. 5. 5 Run Dockerized Applications 100,000+ Dockerized Applications コンテナアプリを
 気軽にデプロイできるコンテナ実行環境 What is Arukas? WHAT
  6. 6. 6 ワークフローの例 WORKFLOW build push pullDeploywebhook push Dockerfile CI Build Registry
  7. 7. • コンテナのスケールイン/スケールアウト • プライベートイメージの起動 • HTTP/HTTPS ロードバランシング • Dockerコンテナライク • 従量課金(秒あたり課金) ※月額基本料金50円 7 Arukasが得意とすること GOOD
  8. 8. • Docker Hub 以外のイメージレポジトリ • コンテナ間のネットワーク連携 • オートスケール • コンテナ起動ログの表示 • メトリクス表示 • セキュリティ面での堅牢性 8 Arukasが苦手とすること BAD
  9. 9. 9 Arukasのユースケース USECASES • Web/API Container • SSH Container • Proxy Container • ChatBot VMの代替として利用されている傾向が強い
  10. 10. 10 コンテナに適したユースケース USECASES • CI/CD • DevOps • HPC/Big Data • Microservice • Migrated to Cloud 本番環境でこういう事例はなかなか出てこない・・・
  11. 11. CaaSの構成要素 INFRASTRUCTURE Control Panel Client Compose On-premises Infrastructure Orchestrator or Volume Networking Logging Monitoring Integrations Registry Cloud API 11
  12. 12. 12 ContainerContainer Operating System Container Orchestrator Infrastructure APACHE Zookeeper Container Metrics/ Monitoring インフラ構成 INFRASTRUCTURE Bins/Libs App Bins/Libs App Bins/Libs App
  13. 13. 13 • Dockerコンテナがネイティブに動かせる • 1ホストあたり数百コンテナ収容できる • スケールイン/スケールアウト • 高可用性(対障害性) • エンジニア1人でも運用できる手軽さ CaaSの要件
  14. 14. 14 クラスタ構成 CLUSTER Mesos Master Marathon Zookeeper marathon-lb Datadog Mesos Slave cAdvisor Node * N
 (Host Servers) Cluster Manager * 5
  15. 15. 15 クラスタ構成 CLUSTER ボトルネックに応じてクラスタ分割 第一ゾーン 第二ゾーン 第三ゾーン Cluster Manager Nodes Cluster Manager Nodes Cluster Manager Nodes
  16. 16. • クラスタマネージャーは N+2構成 • Zookeeper 5 node • Mesos Master 5 node • N+1構成だと、案外壊れやすい • 主にオペミス要因で・・・ Node * N
 (Host Servers) Cluster Manager * 5 16 クラスタ構成 CLUSTER
  17. 17. • クラスタには必ず性能上限(ボトルネック)がある。 • サービスによってボトルネックの種類は異なる。 • ボトルネックを意識してクラスタサイズを決定。 • マルチクラスタ化でサービス全体への障害の波及を抑制。 • コンテナなら他クラスタへのマイグレーションも容易。
 (マイグレーションを実現する仕組みは別途必要。) 17 クラスタ構成 CLUSTER
  18. 18. 収容ホストサーバ
 (Nodes) ストレージ コンテナオーケストレーター
 (Cluster Manager) • I/O性能(IOPS) • inode数 • 通信コネクション数 • メモリ搭載量 • コンテナ収容数 • 通信コネクション数 • 通信帯域 • 通信帯域ネットワーク回線 ボトルネックの例 BOTTLENECK !18
  19. 19. 19 プロセス数制限 PID LIMITATION • 1コンテナあたりのプロセス数を400で制限(Fork bomb対策) • Docker の --pids-limit オプションを使用。
 (400以下にすると動かないアプリが増えてくる)
  20. 20. 20 コネクション数の制約 CONNECTION LIMITATION • コネクションが れると・・・ • クラスタの同期不良が発生する。(クラスタが壊れる) • 仮想インスタンスはコネクション数が れやすい。 • ソフトウェアスイッチ(ovs等)側の性能的な制約がある。 • 1ホストあたり数百コンテナ収容規模の場合は要注意。 • (極論)物理サーバ/物理スイッチを使えば回避可能。
  21. 21. 21 スワッピング SWAP • コンテナでSwapが働くと収容ホストの負担が大きくなりがち • 理想は Swap 0 が望ましい。 • ホスト側は vm.swappiness=0
 (RAMを使い切るまでスワップしない)
  22. 22. 22 ディスクサイズ制限 DISK QUOTE • 各コンテナのディスク領域を 5GB で制限 • Docker の --storage-opt オプションを使用。
 (XFSファイルシステムのみで有効。)
  23. 23. 23 コンテナ監視 METRICS and MONITORING • コンテナ対応の監視サービスは充実してきた • Datadog, NewRelic, Scout, Sysdig... • でも、数千コンテナ運用されることは想定されていない。 • すべてのコンテナの全メトリクスを収集すると警告される。
  24. 24. 24 スタンドアローン構成と比較して・・・ OPERATION • Good • ノード故障で叩き起こされることがなくなる。 • 数百Mbps規模のDDoSにも耐えられる。 • Bad • クラスタマネージャーの運用は細心の注意が必要。 • アップデート作業によるクラスタ障害が一番怖い。
  25. 25. 25 アップデート作業で起きたトラブル UPDATE PROBLEMS • Zookeeper • クラスタ構成情報が空の状態で同期されてクラスタ全滅。 • Mesos • 最新バージョンのMarathonへのタスク引き継ぎ失敗。 • Marathon • 廃止された定義を持つタスク(コンテナ)がすべて停止。
  26. 26. Gateway Containers Container Load Balancer Real-time LB updates SSL Termination ACL HAProxy (VRRP Master) HAProxy (VRRP Slave) marathon-lb (HAProxy) marathon-lb (HAProxy) marathon-lb (HAProxy) Container HTTP/HTTPS通信の流れ HTTP/HTTPS Connection 26
  27. 27. 27 プライベートイメージの起動 PRIVATE IMAGE • イメージレジストリへのログイン情報はS3上に保管 • S3にあるログイン情報ファイルへのパスはfetch定義で指定
 (Mesos Slaveノードにhadoopコマンドが別途必要。)
  28. 28. Scale In & Scale Out Mesos-Slave Mesos Master /metrics Marathon ContainerContainer Container オートスケール AUTO SCALE autoscale https://github.com/mesosphere/marathon-autoscale https://github.com/mesosphere/marathon-lb-autoscale
  29. 29. 29 gVisor SECURITY User Kernel Host Kernel Application Gofer (File system proxy) Sentry (Guest Kernel) ptrace seccomp 9P runsc https://github.com/google/gvisor
  30. 30. 30 ま と め
  31. 31. • Zookeeper/Mesos/Marathon の安定感は驚異的 • 学習コストや運用負荷は高くはない。 • インフラリソースのきめ細かな管理は必須 • プロセス数、コネクション数、コンテナ数、etc… • ただし、これはクラスタマネージャー全般に言える。 31 まとめ
  32. 32. https://github.com/uzyexe/mesos-marathon-demo Mesos/Marathon 一発起動 Docker Compose で、
  33. 33. THANK YOU!

×