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

Habitat 考察/introduction-habitat

Ryo Takaishi
July 25, 2016
1.9k

Habitat 考察/introduction-habitat

Ryo Takaishi

July 25, 2016
Tweet

More Decks by Ryo Takaishi

Transcript

  1. Infrastructure as Codeのカテゴリ カテゴリ どういうものか Dynamic Infrastrucure Platforms • コンピュータリソースをプログラマブルに提供する

    • 例:IaaS(AWS、Azure)、Openstack Infrastracture Definition Tools • Dynamic Infrastructure Platformsを制御 • 例:Teraform, Openstack Heat Server Configration Tools • いわゆるConfiguration Management Tool • Puppet, Chef, Ansible Infrastructure Services • いわゆるOrchestration(モニタリング、サービスディスカバリ、ソフトウェアデプロイなど) • ConsulやFluentd、Docker、Kubernetesなどのツールを組み合わせて実現 Gosuke Miyashita. Infrastructure as Code のこれまでとこれから. https://speakerdeck.com/mizzy/infrastructure-as-code. 2016 2016/07/25 habitat meetup #1
  2. 独自のパッケージ形式  .hart • .tar.xzに固めてデジタル署名 • ed25519(エドワーズ曲線電子署名アルゴリズム)を使用しているらしい  言語非依存 •

    javaでもrubyでも全て.hart形式  OSのパッケージングシステム非依存 • glibcやgccなども用意されている • /hab/pkg下にインストールされる 2016/07/25 habitat meetup #1
  3. 2016/07/25 habitat meetup #1 depot upload install install docker image

    export supervisor app start studio(chroot) .hart build Docker app run storage development production
  4. アプリの実行&監視、設定変更 2016/07/25 habitat meetup #1 Internet node_1 PostgreSQL node_2 Rails

    App node_3 Rails App node_4 Rails App node_5 Nginx .11 .12 .13 .14 .15 NATネットワーク 192.168.33.0/24 VirtualBox
  5. クラスタを構築し、他のsupervisorと連携 PostgreSQL Rails App Rails App $ hab start core/ruby-rails-sample

    --peer 192.168.33.11 ¥ --bind database:postgresql.default bindしたDBに接続 2016/07/25 habitat meetup #1
  6. クラスタを構築し、他のsupervisorと連携 PostgreSQL Rails App Rails App $ hab start core/ruby-rails-sample

    --peer 192.168.33.11 ¥ --bind database:postgresql.default bindしたDBに接続 2016/07/25 habitat meetup #1 database.yml production: <<: *default database: {{cfg.database_name}} username: {{cfg.database_username}} password: {{cfg.database_password}} {{~#if bind.has_database}} {{~#each bind.database.members}} host: {{ip}} port: {{port}} {{~/each}} {{~else}} host: {{cfg.database_host}} port: {{cfg.database_port}} {{~/if}}
  7. クラスタを構築し、他のsupervisorと連携 PostgreSQL Rails App Rails App $ hab config apply

    --peer 192.168.33.11 ruby-rails-sample.default 2 config.toml 2016/07/25 habitat meetup #1 新しい設定をクラスタ内のRails Appに反映
  8. クラスタを構築し、他のsupervisorと連携 PostgreSQL Rails App Rails App Nginx $ hab start

    r_takaishi/nginx --peer 192.168.33.11 ¥ --bind app:ruby-rails-sample.default bindしたRails Appにルーティング 2016/07/25 habitat meetup #1
  9. クラスタを構築し、他のsupervisorと連携 PostgreSQL Rails App Rails App Nginx $ hab start

    r_takaishi/nginx --peer 192.168.33.11 ¥ --bind app:ruby-rails-sample.default bindしたRails Appにルーティング 2016/07/25 habitat meetup #1 nginx.conf upstream app { server 192.168.33.12:3000; server 192.168.33.13:3000; }
  10. クラスタを構築し、他のsupervisorと連携 PostgreSQL Rails App Rails App Rails App Nginx 2016/07/25

    habitat meetup #1 $ hab start core/ruby-rails-sample --peer 192.168.33.11 ¥ --bind database:postgresql.default 設定更新&反映
  11. クラスタを構築し、他のsupervisorと連携 PostgreSQL Rails App Rails App Rails App Nginx 2016/07/25

    habitat meetup #1 $ hab start core/ruby-rails-sample --peer 192.168.33.10 ¥ --bind database:postgresql.default nginx.conf upstream app { server 192.168.33.12:3000; server 192.168.33.13:3000; server 192.168.33.14:3000; } 設定更新&反映
  12. クラスタを構築し、他のsupervisorと連携 PostgreSQL Rails App Rails App Rails App Nginx 2016/07/25

    habitat meetup #1 $ hab start core/ruby-rails-sample --peer 192.168.33.10 ¥ --bind database:postgresql.default upstream app { {{~#if bind.has_app}} {{~#each bind.app.members}} {{~if alive}} server {{ip}}:3000; {{~/if}} {{~/each}} {{~/if}} } 設定更新&反映
  13. 2016/07/25 habitat meetup #1 Internet node_1 PostgreSQL node_2 Rails App

    node_3 Rails App node_4 Rails App node_5 Nginx .11 .12 .13 .14 .15 NATネットワーク 192.168.33.0/24 VirtualBox