JTF2014 で Ceph について話してきた!

こんにちは。@jedipunkz です。 今日、JTF2014 (July Tech Festa 2014) というイベントで Ceph のことを話してきま した。Ceph ユーザ会の会員として話してきたのですが Ceph ユーザ会は実は最近発足 したばかりのユーザ会で、まだまだ活動が活発ではありません。もし興味がある方いらっ しゃいましたら是非参加よろしくお願いしますー。下記の Google Groups になります。 https://groups.google.com/forum/#!forum/ceph-jp ユーザ会としての勉強会として初になるのですが、今回このイベントで自分は Ceph-Deploy について話してきました。とりあえず皆さんに使ってもらいたかったので この話をしてきました。が、予定時間がメチャ短かったので超絶早口で頑張った分、皆 さんに理解してもらえなかった気がしてちょっと反省…。なので、このブログを利用 して少し細くさせてもらいます。 今日の発表資料はこちらです! 今日のテーマは 「Ceph-Deploy を使って Ceph を構築してみる」だったのですが、下 記のテーマを持って資料を作っています。 単にミニマム構成ではなく運用を考慮した実用性のある構成 OSD, MON, MDS の各プロセスとノード・ディスクの数の関係を知ってもらう 特に「実用性のある..」は意識したつもりでした。そのために前提とした構成に下記の 特徴を持たせています。(資料 6 ページ目に構成図があります。確認してみてください。) オブジェクト格納用ディスクは複数/ノードを前提 OSD レプリケーションのためのクラスタネットワークを用いる構成 OSD の扱うジャーナル格納用ディスクは高速な SSD を用いる MDS は利用する HW リソースの特徴が異なるので別ノードへ配置 ストレージ全体を拡張したければ 図中 ceph01-03 の様なノードを増設する ceph01-03 にディスクとそれに対する OSD を増設する ですが、前者がベストでしょう。ノード増設の場合 ceph-deploy を用いて ceph-deploy mon create <新規ホスト名> で MON を稼働 ceph-dploy disk zap, osd create で OSD を稼働 で簡単に可能です。MDS の増設も負荷状況を見ながらするといいでしょう。自分はまだ Ceph を運用していないので、各プロセスがどのようなリソースの消費の仕方をするの か知りません。MDS がどのような数で運用していくべきなのか。早く運用から得たノウ ハウが共有されないかなぁと期待しています。 ...

Mesos + Marathon + Deimos + Docker を試してみた!

こんにちは。@jedipunkz です。 以前 Mesos, Docker について記事にしました。 http://jedipunkz.github.io/blog/2013/09/28/mesos-architecture-number-1/ http://jedipunkz.github.io/blog/2013/10/01/methos-architecture-number-2-docker-on-mesos/ Twitter で Docker 関連のオーケストレーションツールについて呟いていたら @everpeace さんから こんな情報をもらいました。 @jedipunkz 元々meos-dockerっていうmesos executorがあったんですけど、mesosがcontainer部分をpluggableにしたので、それに合わせてdeimosっていうmesos用のexternal containerizer が作られました。 — Shingo Omura (@everpeace) 2014, 6月 12 Deimos !!! 知らなかった。Mesos の Docker プラグインらしく下記の場所にありました。 https://github.com/mesosphere/deimos 色々調べいたら、こんな資料が見つかりました。どうやらまだ公開されて4日しか経っていないようです。 http://mesosphere.io/learn/run-docker-on-mesosphere/ Mesos + Marathon + Deimos + Docker をオールインワン構成で構築する手順が書かれています。 内容はほぼ同じですが、一応自分がやってみて理解したことをまとめたいので下記に記していきます。 構築してみる 手順をまとめてスクリプトにしました。パッケージは Ubuntu 13.10 用のようですが 14.04 のホスト で実行出来ました。14.04 のパッケージはまだ見つかっていません。 #!/bin/bash # disable ipv6 echo 'net.ipv6.conf.all.disable_ipv6 = 1' | sudo tee -a /etc/sysctl.conf echo 'net.ipv6.conf.default.disable_ipv6 = 1' | sudo tee -a /etc/sysctl.conf sudo sysctl -p # install related tools sudo apt-get update sudo apt-get -y install curl python-setuptools python-pip python-dev python-protobuf # install zookeeper sudo apt-get -y install zookeeperd echo 1 | sudo dd of=/var/lib/zookeeper/myid # install docker sudo apt-get -y install docker.io sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io sudo docker pull libmesos/ubuntu # install mesos curl -fL http://downloads.mesosphere.io/master/ubuntu/13.10/mesos_0.19.0-xcon3_amd64.deb -o /tmp/mesos.deb sudo dpkg -i /tmp/mesos.deb sudo mkdir -p /etc/mesos-master echo in_memory | sudo dd of=/etc/mesos-master/registry curl -fL http://downloads.mesosphere.io/master/ubuntu/13.10/mesos_0.19.0-xcon3_amd64.egg -o /tmp/mesos.egg sudo easy_install /tmp/mesos.egg # install marathon curl -fL http://downloads.mesosphere.io/marathon/marathon_0.5.0-xcon2_noarch.deb -o /tmp/marathon.deb sudo dpkg -i /tmp/marathon.deb # restart each services sudo service docker.io restart sudo service zookeeper restart sudo service mesos-master restart sudo service mesos-slave restart # install deimos sudo pip install deimos sudo mkdir -p /etc/mesos-slave ## Configure Deimos as a containerizer echo /usr/bin/deimos | sudo dd of=/etc/mesos-slave/containerizer_path echo external | sudo dd of=/etc/mesos-slave/isolation プロセスの確認 実行が終わると各プロセスが確認出来ます。オプションでどのプロセスが何を見ているか大体 わかりますので見ていきます。 ...

クラウドライブラリ Fog で AWS を操作!..のサンプル

こんにちは。@jedipunkz です。 最近 OpenStack でサービスを開発!.. じゃなくて AWS でプロトタイプサービス作っ ているのですが、Ruby で開発したかったので Fog を使っています。EC2 と ELB の API を叩くコードになりつつあるのですが、サンプルコードって世の中に中々無いと気 がついたので、このブログ記事にサンプルコードを載せたいと思います。 Fog とは ? Fog http://fog.io/ はクラウドライブラリソフトウェアです。AWS, Rackspace, CloudStack, OpenStack .. と数ある世の中のクラウドプラットフォームを扱うために 用意されたソフトウェアです。対応しているプラットフォームの種別は下記を見ると参 考になります。 http://fog.io/about/provider_documentation.html ドキュメントがまだまだ揃っていなく、Fog のコードを覗きながら実装するしかない状 況です。なので「こう使えば良い!」というお手本があまりネット上にも無い気がしま す。 ドキュメントは一応下記にあります。 が使い方がよくわからない・・!(´;ω;`)ブワッ http://rubydoc.info/gems/fog/frames/index EC2 インスタンスを使ってみる まずは AWS EC2 の API を叩いて t1.micro インスタンスを立ち上げてみましょう。 require 'fog' compute = Fog::Compute.new({ :provider => 'AWS', :aws_access_key_id => '....', :aws_secret_access_key => '....', :region => 'ap-northeast-1' }) server = compute.servers.create( :image_id => 'ami-cedaa2bc', :flavor_id => 't1.micro', :key_name => 'test_key', :tags => {'Name' => 'test'}, :groups => 'ssh-secgroup' ) server.wait_for { print "."; ready? } puts "created instance name :", server.dns_name 解説 compute = … とあるところで接続情報を記しています。 “ACCESS_KEY_ID” や “SECRET_ACCESS_KEY” はみなさん接続する時にお持ちですよね。それ とリージョン名やプロバイダ名 (ここでは AWS) を記して AWS の API に接続します。 ...

stackforge/openstack-chef-repo で OpenStack Icehouse デプロイ

こんにちは。@jedipunkz です。 またまた OpenStack のデプロイをどうするか?についてです。 今まで自分の中では Rackspace Private Cloud で使われている Rackspace 管理の rcbops/chef-cookbooks が今現在使うならベストの選択だと思っていました。これは内 部で Chef が使われていてしかも Cookbooks が Github 上で公開されています。 Apache ライセンスで使えるので、サービス構築にも使えちゃうというモノ。 先日、ある OpenStack コアデベロッパーの方から「jedipunkz さん、やっぱり rcbops がいいですか?運営とかどうなっているんでしょう?マージの規準とかどうなのかな?」 と質問受けました。確かにマージの基準は Rackspace Private Cloud がベースになり ますし、管理しているエンジニアの一覧を見ていると Rackspace 社のエンジニアがメ インですし、今後どうなるのか分からない…。 逃げ道は用意したほうが良さそう。 ということで、以前自分も暑かったことのある StackForge の openstack-chef-repo を久々に使ってみました。Icehouse 構成がこの時点で既に組めるようになっていて、 以前よりだい〜ぶ完成度増した感があります。今回は nova-network 構成を作ってみた のですが、Neutron 構成ももちろん出来そうなので後に調べてまた公開したいです。 StackForge とは StackForge は OpenStack のデプロイ・CI の仕組みとして公式に用いられているもの。 公式サイトは下記の場所にある。 http://ci.openstack.org/stackforge.html StackForge の openstack-chef-repo は下記の場所にある。 https://github.com/stackforge/openstack-chef-repo openstack-chef-repo はまだ ‘stable/icehouse’ ブランチが生成されていない。が直 ちに master からブランチが切られる様子。 ...

Mirantis OpenStack (Neutron GRE)を組んでみた!

こんにちは。@jedipunkz です。 皆さん、Mirantis OpenStack はご存知ですか? OpenStack ディストリビューションの 1つです。以下、公式サイトです。 http://software.mirantis.com/main/ この Mirantis OpenStack を使って OpenStack Havana (Neutron GRE) 構成を作ってみ ました。その時のメモを書いていきたいと思います。 構成は? 構成は下記の通り。 ※ CreativeCommon 特徴は Administrative Network : Fuel Node, DHCP + PXE ブート用 Management Network : 各コンポーネント間 API 用 Public/Floating IP Network : パブリック API, VM Floating IP 用 Storage Network : Cinder 配下ストレージ <-> インスタンス間用 要インターネット接続 : Public/Floating Networks Neutron(GRE) 構成 です。タグ VLAN 使って物理ネットワークの本数を減らすことも出来るはずですが、僕 の環境では何故かダメだったので上記の4つの物理ネットワークを別々に用意しました。 Fuel ノードの構築 Fuel ノードとは、OpenStack の各ノードをデプロイするための管理ノードのことです。 DHCP + PXE を管理する Cobbler やデプロイツールの Puppet が内部で稼働し、 Administrative Network 上で稼働したノードを管理・その後デプロイします。 ...

Geard のポートマッピングについて調べてみた

こんにちは。@jedipunkz です。 今週 Redhat が ‘Redhat Enterprise Linux Atomic Host’ しましたよね。Docker を特 徴としたミニマムな OS だとのこと。その内部で用いられている技術 Geard について 少し調べてみました。複数コンテナの関連付けが可能なようです。ここでは調べた結果 について簡単にまとめていきます。 参考資料 http://openshift.github.io/geard/deploy_with_geard.html 利用方法 ここではホスト OS に Fedora20 を用意します。 まず Geard をインストール % sudo yum install --enablerepo=updates-testing geard 下記の json ファイルを作成します。ここにはコンテナをデプロイするための情報と関 連付けのための情報を記します。 $ ${EDITOR} rockmongo_mongodb.json { "containers":[ { "name":"rockmongo", "count":1, "image":"derekwaynecarr/rockmongo", "publicports":[{"internal":80,"external":6060}], "links":[{"to":"mongodb"}] }, { "name":"mongodb", "count":1, "image":"ccoleman/ubuntu-mongodb", "publicports":[{"internal":27017}] } ] } 上記のファイルの解説。 コンテナ ‘rockmongo’ と ‘mongodb’ を作成 それぞれ1個ずつコンテナを作成 ‘image’ パラメータにて docker イメージの指定 ‘publicports’ パラメータにてコンテナ内部とホスト側のポートマッピングを行う ’links’ パラメータで ‘rockmongo’ を ‘mongodb’ に関連付け では、デプロイ開始します。 ...

OpenStack Havana Cinder,Glance の分散ストレージ Ceph 連携

こんにちは!@jedipunkz です。 今回は Havana 版の OpenStack Glance, Cinder と分散ストレージの Ceph を連携させ る手順を書いていきます。元ネタはこちら。下記の Ceph の公式サイトに手順です。 https://ceph.com/docs/master/rbd/rbd-openstack/ この手順から下記の変更を行って、ここでは記していきます。 Nova + Ceph 連携させない cinder-backup は今のところ動作確認出来ていないので省く 諸々の手順がそのままでは実施出来ないので補足を入れていく。 cinder-backup は Cinder で作成した仮想ディスクのバックアップを Ceph ストレージ 上に取ることが出来るのですが、そもそも Ceph 上にある仮想ディスクを Ceph にバッ クアップ取っても意味が薄いですし、まだ動いていないので今回は省きます。LVM やそ の他ストレージを使った Cinder 連携をされている方にとっては cinder-backup の Ceph 連携は意味が大きくなってくると思います。 構成 下記の通りの物理ネットワーク6つの構成です。 OpenStack, Ceph 共に最小構成を前提にします。 +--------------------------------------------------------------------- external | +--------------+--(-----------+--------------+------------------------------------------ public | | | | | +------------+ +------------+ +------------+ +------------+ +------------+ +------------+ | controller | | network | | compute | | ceph01 | | ceph02 | | ceph03 | +------------+ +------------+ +------------+ +------------+ +------------+ +------------+ | | | | | | | | | | | | | | | | +--------------+--(-----------+--(-----------+--(--(--------+--(--(--------+--(--(------- management | | | | | | | | | | | +--------------+--(-----------(--(-----------(--(-----------(--(------- guest | | | | | | | | +--------------------------------+-----------+--(-----------+--(-----------+--(------- storage | | | +--------------+--------------+------- cluster 特徴 ...

rcbops/chef-cookbooks で Keystone 2013.2.2(Havana) + Swift 1.10.0 を構築

こんにちは。@jedipunkz です。 追記 2014/03/20 : 一旦削除していた記事なのですが、無事動作が確認出来たので再度アッ プします! 第17回 OpenStack 勉強会で rcbops/chef-cookbooks の話をしてきたのですが会場から 質問がありました。「Havana の Swift 構成を作る Cookbooks はどこにありますか?」 と。私が試したのが Grizzly 時代のモノで、よく rcbops/chef-cookbooks を見てみる と Havana ブランチ又は Havana に対応したリリースタグのファイル構成に Swift が 綺麗サッパリ消えているではありませんか・・!下記の Swift の Cookbooks は幸い github 上に残っていました。 https://github.com/rcbops-cookbooks/swift が rcbops/chef-cookbooks との関連付けが切れています・・。ぐあぁ。 ということで Havana 構成の Keystone 2013.2.2 と Swift 1.10.0 の構成を Chef で 作らねば!と思い色々試していたら結構あっさりと出来ました。今回はその方法を書い ていきたいと思います! 構成 構成は…以前の記事 http://jedipunkz.github.io/blog/2013/10/27/swift-chef/ と同じです。 +-----------------+ | load balancer | +-----------------+ | +-------------------+-------------------+-------------------+-------------------+---------------------- proxy network | | | | | +-----------------+ +-----------------+ +-----------------+ +-----------------+ +-----------------+ | chef server | | chef workstation| | swift-mange | | swift-proxy01 | | swift-proxy02 | +-----------------+ +-----------------+ +-----------------+ +-----------------+ +-----------------+ ...> scaling | | | | | +-------------------+-------------------+-------------------+-------------------+-------------------+-- storage network | | | | | | +-----------------+ +-----------------+ +-----------------+ +-----------------+ +-----------------+ +-----------------+ | swift-storage01 | | swift-storage02 | | swift-storage03 | | swift-account01 | | swift-account02 | | swift-account03 | +-----------------+ +-----------------+ +-----------------+ +-----------------+ +-----------------+ +-----------------+ ..> scaling 手順 では早速手順を記していきますね。毎回なのですが Chef ワークステーション・Chef サーバの環境構築については割愛します。オムニバスインストーラを使えば Chef サー バの構築は簡単ですし、ワークステーションの構築も Ruby インストール -> gem で Chef をインストール -> .chef 配下を整える、で出来ます。 ...