Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mesosを使ったImmutable Infra 管理システムを作ってみた

tatsuru
March 25, 2014

Mesosを使ったImmutable Infra 管理システムを作ってみた

Immutable Infrastracture Conference #1 で発表した資料です
http://atnd.org/events/47786

tatsuru

March 25, 2014
Tweet

More Decks by tatsuru

Other Decks in Technology

Transcript

  1. 中身 • Docker • Mesos • Jenkins • Fluentd •

    Graphite • Sensu • Dashboard VM VM Cluster Cluster Test Test Log Log Visualize Visualize Monitoring Monitoring Orchestration Orchestration
  2. 中身 • Docker • Mesos • Jenkins • Fluentd •

    Graphite • Sensu • Dashboard VM VM Cluster Cluster Test Test Log Log Visualize Visualize Monitoring Monitoring Orchestration Orchestration
  3. 詳細略 • 仮想化 – Docker – AWS – KVM •

    Test & Deploy – Jenkins – 差分ビルド – serverspec
  4. Cluster Management • 自前 – 1 Active VM/Host – Serf

    • 全部入り – OpenStack – Coud Foundry • リソース管理システム – Apache Mesos – Omega (Google)
  5. Cluster Management • Apache Mesos – Master/Slave – Framework –

    Executor • リソースの提供だけ Hindman, Benjamin, et al. "Mesos: A platform for fine-grained resource sharing in the data center." Proceedings of the 8th USENIX conference on Networked systems design and implementation. 2011. http://mesos.apache.org/documentation/latest/mesos-architecture/
  6. Cluster Management • Apache Mesos – Master/Slave – Framework: Marathon

    – Executor: Mesos-Docker Marathon POST /v1/apps/start { “executor”: “/opt/mesos-docker”, “instances”: 2, “cpus”: 1, “mem”: 128,... } Server1: 4CPU 4GB Server2: 2CPU 8GB Server3: 8CPU 7GB Task1: Server1 1CPU 128MB Server2 1CPU 128MB 1 2 3
  7. Cluster Management • 最近の Mesos/Marathon – API v2: Docker 対応

    – Deimos: Docker の仕組みを組み込む • 実際どうなの – 仕組みは悪くはない。中身見える
  8. Log Aggregation • Log Aggregation – Fluentd – rsyslog, Flume,

    Kafka, • コンテナ内で Fluentd – Supervisor 経由 docker-+-lxc-start---supervisord-+-fluentd | |-ruby (sensu_server) |-run---/opt/App/start_server `-sshd Server Container Application Fluentd sshd Sensu
  9. Log Aggregation • Collection Inside Container • Collection Outside Container

    • Collection In Separate Container Server Container Fluentd Container Fluentd Server Container Container Log Volume Fluentd App App App App Server Container Container App App Container Log Volume Fluentd Inside Outside In Separate
  10. Metrics • サーバメトリクス – ホストから: cgroup, netstat – 他はヘルプにあります http://docs.docker.io/en/latest/articles/runmetrics/

    • いい感じに集めたい – Sensu/Fluentd で送る – Graphite: glob + 名前空間 $ cat /sys/fs/cgroup/lxc/718e*/cpuacct.stat user 28707710 system 6369370 docker.$host.$app-$rev.$seq.memory -> docker.*.$app-*.memory -> docker.*.$app-$rev.*.memory
  11. Metrics • ログベース解析 – Latency, Error Ratio • 従来通り –

    フローで解析: Fluentd (fluent-plugin-datacounter etc.) – バッチ解析: MongoDBに貯める – Kibana, 外部サービスに流す, etc.
  12. Monitoring • 監視 • エージェント型 – Sensu – Zabbix –

    NewRelic • 外部監視:いけそう – Nagios: Docker API から公開されているポートを取得して監視 https://github.com/tatsuru/nagios-plugin/blob/master/check_docker_container_exported_port.pl
  13. Visualization/Monitoring • エージェント型 • ログと同じパターンで運用できそう Server Container Sensu Container Sensu

    Server Container Container App App App App Server Container Container App App Container Sensu Sensu
  14. Helper Containers? • Ambassador Container よりもう少し高機能 – http://docs.docker.io/en/latest/use/ambassador_pattern_linking/ • 監視、ログ収集

    etc. Server Container Application Container Application Container Application Container Sensu Container Fluentd
  15. まとめ • Immutable 環境作ってみた • 課題いろいろ – Cluster Management –

    Log Aggregation – Metrics/monitoring • どんどん作っていきましょう – 教えてください