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.
CoreOSってなんですか
2014/06/17
Tech-Circle
泉谷圭祐
自己紹介
• 名前 泉谷圭祐
• 所属
• TIS株式会社 IT基盤サービス企画室
• eXcale(https://www.excale.net/)の中の人
• SNS等
• Twitter @syguer
• Facebook https:...
http://blog.excale.net/
CoreOSとは
CoreOSとは
・Chrome OSベースの軽量なLinux Distribution
・コンテナ仮想化( Docker)に特化したOS
・オープンソース
・githubの最初のバージョンv0001.0.0は2013/7/3にタグが切
られて...
CoreOSの特徴
・A Minimal Operating System
!
・Painless Updating
!
・Docker Containers
!
・Clustered By Default
!
・Distributed Sys...
A Minimal Operating System
・小さく作られている
!
・平均的なLinuxのメモリ使用量の半分
!
・公式サイトによると161MBしか使わないとのこと
Painless Updating
・active / passive構成でrootパーティションが2つある
!
・OSのアップデート時にはpassiveの方を先に上げてから切
り替える
!
・無停止でのアップデート、ロールバックが可能
!
Docker Containers
・CoreOS上のアプリケーションはDoker Container上で動作
!
・Dockerのメリット(flexible、portable)を享受
!
Clustered By Default


Distributed Systems Tools
・クラスタとして動かすことが想定されている(fleet)
!
・設定を共有(etcd)
!
fleet
・fleetが適切にクラスタにアプリケーションを分散、管理
・アプリケーションが落ちたら他のホストに移動してくれる
etcd
・configを共有する
・REST APIになっており、curlで読み書き可能
  write : curl -L http://127.0.0.1:4001/v2/keys/message -XPUT -d value="Hello...
fleet = 艦隊
_人人人人人_
> 無敵艦隊 <
 ̄^Y^Y^Y^Y ̄
CoreOSを使ってみよう!!
CoreOSを使ってみよう!!
・EC2のAMI、GCEのimage等が用意されているのですぐ使える
!
・Vagrantなら以下のような感じですぐ動かせる
$ git clone https://github.com/coreos/coreo...
クラスタリングしてみる
$num_instances=3 # 1 => 3
!
$expose_docker_tcp=2375 #コメントアウト
・config.rbの下記箇所を編集
・user-dataのcoreos -> etcd -> di...
クラスタリングしてみる
# fleet
$ git clone https://github.com/coreos/fleet.git
$ cd fleet
$ ./build
!
# 環境変数設定
$ export FLEETCTL_ENDPOIN...
クラスタリングしてみる
!
$ bin/fleetctl submit examples/hello.service #サンプルを実行
!
$ bin/fleetctl start hello.service
Job hello.service l...
補足:Unitとは
[Unit]
Description=Hello World
!
[Service]
ExecStart=/bin/bash -c "while true; do echo "Hello, world"; sleep 1; ...
補足:Dockerを使う
[Unit]
Description=My Apache Frontend
After=docker.service
Requires=docker.service
!
[Service]
ExecStart=/usr...
ご清聴ありがとうございました
CoreOSってなんですか
Upcoming SlideShare
Loading in …5
×

CoreOSってなんですか

1,930 views

Published on

社内勉強会でLTした内容です。
自分の勉強用に調べたCoreOSについて簡単に紹介しました。

Published in: Technology
  • Be the first to comment

CoreOSってなんですか

  1. 1. CoreOSってなんですか 2014/06/17 Tech-Circle 泉谷圭祐
  2. 2. 自己紹介 • 名前 泉谷圭祐 • 所属 • TIS株式会社 IT基盤サービス企画室 • eXcale(https://www.excale.net/)の中の人 • SNS等 • Twitter @syguer • Facebook https://www.facebook.com/keisuke.izumiya • ブログ http://syguer.hatenablog.com/
  3. 3. http://blog.excale.net/
  4. 4. CoreOSとは
  5. 5. CoreOSとは ・Chrome OSベースの軽量なLinux Distribution ・コンテナ仮想化( Docker)に特化したOS ・オープンソース ・githubの最初のバージョンv0001.0.0は2013/7/3にタグが切 られている ・ベータリリースは2014/5/9
  6. 6. CoreOSの特徴 ・A Minimal Operating System ! ・Painless Updating ! ・Docker Containers ! ・Clustered By Default ! ・Distributed Systems Tools ! !
  7. 7. A Minimal Operating System ・小さく作られている ! ・平均的なLinuxのメモリ使用量の半分 ! ・公式サイトによると161MBしか使わないとのこと
  8. 8. Painless Updating ・active / passive構成でrootパーティションが2つある ! ・OSのアップデート時にはpassiveの方を先に上げてから切 り替える ! ・無停止でのアップデート、ロールバックが可能 !
  9. 9. Docker Containers ・CoreOS上のアプリケーションはDoker Container上で動作 ! ・Dockerのメリット(flexible、portable)を享受 !
  10. 10. Clustered By Default 
 Distributed Systems Tools ・クラスタとして動かすことが想定されている(fleet) ! ・設定を共有(etcd) !
  11. 11. fleet ・fleetが適切にクラスタにアプリケーションを分散、管理 ・アプリケーションが落ちたら他のホストに移動してくれる
  12. 12. etcd ・configを共有する ・REST APIになっており、curlで読み書き可能   write : curl -L http://127.0.0.1:4001/v2/keys/message -XPUT -d value="Hello world”   read : curl -L http://127.0.0.1:4001/v2/keys/message !
  13. 13. fleet = 艦隊
  14. 14. _人人人人人_ > 無敵艦隊 <  ̄^Y^Y^Y^Y ̄
  15. 15. CoreOSを使ってみよう!!
  16. 16. CoreOSを使ってみよう!! ・EC2のAMI、GCEのimage等が用意されているのですぐ使える ! ・Vagrantなら以下のような感じですぐ動かせる $ git clone https://github.com/coreos/coreos-vagrant.git ! $ cd coreos-vagrant ! $ mv config.rb.sample config.rb ! $ mv user-data.sample user-data ! $ vagrant up ※僕の環境では「* The following settings shouldn't exist: functional_vboxsf」とかでたので、 Vagrantfileの該当行をコメントアウトして動かしました
  17. 17. クラスタリングしてみる $num_instances=3 # 1 => 3 ! $expose_docker_tcp=2375 #コメントアウト ・config.rbの下記箇所を編集 ・user-dataのcoreos -> etcd -> discoveryを編集 #cloud-config ! coreos: etcd: #generate a new token for each unique cluster from https://discovery.etcd.io/new discovery: https://discovery.etcd.io/<key> #↑のリンクでkeyを取得して貼り付け 設定を変えたら仮想マシン上げ直し
  18. 18. クラスタリングしてみる # fleet $ git clone https://github.com/coreos/fleet.git $ cd fleet $ ./build ! # 環境変数設定 $ export FLEETCTL_ENDPOINT=http://<クラスタのどれか>:4001 ! # クラスタが見えるかチェック $ bin/fleetctl list-machines -l MACHINE IP METADATA 5bc026ef05e74d968bd93033dc9b820c 172.17.8.103 - d510bda5b2144065ab5115e612d0d7c6 172.17.8.102 - ec71fb2ae57243ed831d1e96276ed815 172.17.8.101 - ・ローカル(ホストOS)にfleetを入れる
  19. 19. クラスタリングしてみる ! $ bin/fleetctl submit examples/hello.service #サンプルを実行 ! $ bin/fleetctl start hello.service Job hello.service launched on ec71fb2a…/172.17.8.101 ! $ bin/fleetctl list-units UNIT STATE LOAD ACTIVE SUB DESC MACHINE hello.service launched loaded active running Hello World ec71fb2a.../ 172.17.8.101 ・fleetでアプリケーションを起動
  20. 20. 補足:Unitとは [Unit] Description=Hello World ! [Service] ExecStart=/bin/bash -c "while true; do echo "Hello, world"; sleep 1; done" ・hello.serviceの中身 Unitとはsystemdの起動の単位
  21. 21. 補足:Dockerを使う [Unit] Description=My Apache Frontend After=docker.service Requires=docker.service ! [Service] ExecStart=/usr/bin/docker run --name apache -p 80:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND ExecStop=/usr/bin/docker stop apache ! [X-Fleet] X-Conflicts=apache.*.service 例:Apacheのコンテナを起動する ExecStartで「docker run」すればよい
  22. 22. ご清聴ありがとうございました

×