_・)Keep Smiling

モソモソと日々の雑感を書き溜めるというか書き殴るというか書き捨てるというか

_・)手首が痛い

ゴールデンウィークですが

相も変わらず嫁さんの実家に軟禁状態で、子守をするでもなく(従姉妹同士で勝手に遊んでる)、手持ち無沙汰状態でスマホゲームとかやっています。

合気道をはじめました

4月から養神館合気道光龍館に入会し、佐倉同好会で毎週土曜日練習しています。中学時代に剣道をやっていたお陰で摺り足だけはそれなりにできるのですが、構えそのものは剣道と合気道では随分と違うので結構とまどっています。

特に養神館合気道では、構えたときの後ろ足(合気道では右も左もそれぞれ前になる構えがある)がほぼ真横を向くという特徴があり、これがなかなか意識しないとできない。また、つま先が真横を向くと腰の向きが後ろ足側に流れがちになるんだけども、そこは腰を”きって”身体が正面に対峙するようにしなければいけない。

この構えが単純なのに結構なれないとキツい・・・。

いろんな関節がヤバい

今は正面打ちを受けたりする関係もあって右手首がかなり居たいんですが、押さえ込まれる時に基本的に関節技を喰らったみたいになるせいか、いろんな関節が普段つかわない方向に曲げられたりして痛んでいます・・・。今は今月21日にある演武大会の演目しかほぼ稽古しない関係で、右腕側ばかり使って受けをしているんですが、今週の稽古で左腕側で受けたら右よりも関節が硬かったらしく肘から肩まで痛くて死にそうでした・・・。

上級者の方にかかると手首などを持たれた瞬間から痛くて動きを封じられます。よくあんなに簡単に人がふっとぶんかいな?とか言ってる人が居ますが、あれは上手く飛ばないとキメられちゃうからいっそのこと飛んでしまって逃げるという防御の意味もあるみたいです。師範は仕手(技をかける方)としてももちろん凄いのですが、受手になったときの体裁きや受け身とかもメチャメチャ綺麗ですんごいです。

まだまだ初めて一ヶ月なので白帯オブ白帯の私ですが、早いところ色つきの帯を貰えるように頑張りたいと思います。右手いてぇ。

_・)やあ

おひさしぶりです

最後の投稿を放り投げてから丸一年以上完全放置だったんですが、最近は色々と勉強会にも参加したりしてますので、参加した活動記録的なものを徒然に書いてみようかなと思ってみたり。

本気の三日坊主なんてものをお届けするぜ。。。(ダメ

ゴールデンウィークですね

まぁ、お休みはだいたいそうなんですが、今日も例によって嫁ちゃんがお仕事です。 ただ、大型連休らしくお隣の町にある嫁さん実家に息子さん達の従姉妹が遊びにきているので、ご実家にお邪魔しちゃったりしています。

いやぁ・・・小学生が集まると勝手に遊んでくれるから楽でいいわぁ・・・。

WiMAXに再加入しました

数日前からポロポロといろんな人に漏らしていたんですが、最近モバイルルータの使用量が増えてたので、容量無制限的なサービスにまた戻ろうかなぁと考えてました。

と思い立ったが吉日(?)、以前も使っていたWiMAXに再度(新規で)加入しちゃいました。 今回はHUAWEIのW04って機種。色はものすごく緑です。

とりあえず嫁さんの実家で計測したところ、30〜50Mbpsは出ているので満足度高いです。 某格安SIMをモバイルルータに突っ込んだやつだと、0.1〜1Mbps以下とかで結構キツいときがあったので・・・。

大きいことはいいことなので、ギガ放題にしてたけど、なぜか今日だけで数GBつかってる、、、え、なんで・・・。 なんかうっかり裏でダウンロードしてたかなー、3日で10GBの制限はあるのできをつけないとなー。

OpenStackを支えるLinux技術 〜これから触る人向けの話〜

_・)これは『OpenStack Advent Caledar 2015』9日目の記事です。

東京OpenSolaris勉強会の方角から来ましたツカマンです。 でも今回はLinuxの話です。OpenStack on Solarisな話は@satokazさんにご期待ください(無茶振り)。

はじめに

さて、坊さんも駆けずり回るという師走とやらも1/3が過ぎ去ろうとしていますが皆様におかれましては諸々の進捗はいかがでしょうか。ドキッとした方は色々頑張ってください。

振り返りますと2015年は特に日本におけるOpenStack界隈が大きな盛り上がりを見せた一年だったと思うわけですが、そんな状況の中「そろそろOpenStack触っときたいんだけど何から手をつけるべきかなぁ・・・」という想いを抱いている方も少なくないんではないかと思います。

行動力のある方は仮想環境あたりにさっさとDevStackでもPackStackでも使って構築しちゃえばいいと思うのですが、世の中そんな方ばかりではないというのもまた真実かと思います。

そこで今回は、これからOpenStackを始めたいなーと思っている方向けに「この辺のことを先に知っとくと色々安心だよ?」という内容をお伝えしたいと思います。熟練者の方々には「もう知っとるがな」という話ばかりですが、そこは生暖かく見守ってやってください(そして認識が誤っているところはこっそりご指摘ください)。

さて、そもそもOpenStackとはなんでしょうか?

ってさすがにそれを知らないという方はこの記事を読んじゃいないと思うんですが、簡単に言えばクラウドコンピューティング基盤(特にIaaS)を構築できるオープンソースソフトウェアであります。

これだけ聞くとなんか難しそうに感じるのですが、結局のところはこれまでLinuxエコシステムにおいて磨き上げられてきた技術をPythonによってクラウドコンピューティング基盤としてまとめ上げたもの(かなり乱暴な表現ですが・・・)だったりします。

OpenStackのことを学んでいくのに順番があるわけではないのですが、結局のところ、いつかはLinux側の技術について学ばなければならないフェーズがやってきますので、とっかかりとして先に個々の技術を学んでおくことは決して無駄ではありません。

と、前置きが無駄に長くなりましたが、ここから一気に「先に知っておいて損はないLinuxの技術」を列挙していきたいと思います。数が多いので面食らってしまうかもしれませんが、ひとまずは「どんなものか」という概要を理解しておくだけでも十分です(全てを極めているなんて人はまずいない・・・はずです)。

Linuxの基本的な管理知識

当たり前といえば当たり前ですが、Linuxのことを全く知らないでOpenStackを触るのはかなりキツイです。 インストール、パッケージ管理、ネットワーク設定、基本的なコマンド操作などのスキルや知識はまず身につけておきましょう。

PythonDjango

前述の通り、OpenStackの中身はPythonで出来ています。深く学ぼうとソースコードに手を出す時にはPythonコードとお友達になるしかありません。幸い、Pythonは初めての人でも学びやすいプログラミング言語の1つですので、これを機に学習してみる価値はあるでしょう。

さらにPythonで実装されているWebアプリケーションフレームワークDjangoについても、ついでに概要を調べてみると良いでしょう。DjangoはHorizon(Webのダッシュボードサービス)で利用されています。

また、このHorizonは Apache HTTP Server + WSGI(Web Server Gateway Interface)上で動作します。WSGIはWebサーバ(Apache HTTP Server)とWebフレームワーク(今回はDjango)の接続インタフェースとなるPythonAPIです。この辺りの概要も良かったら調べてみてください。

データベース関連

OpenStackでは様々な情報の格納先としてMySQLMariaDB)を利用します。RDBMSSQLの基礎知識を身につけておくと良いでしょう。少し触る程度であれば特に操作スキルまでは必要としませんが、環境を長く使っていく時などには操作が必要となる場合もあります。

また、最初は使わないかもしれませんが Ceilomater(利用状況などを計測するサービス)ではバックエンドDBとしてMongoDB(NoSQLと呼ばれるものの一つ)の利用を推奨していますので余裕があれば調べてみてください。

あと、少し話が変わりますがKVS(Key Value Store)であるmemcachedも各コンポーネントで利用されていたりするので、どんなもんかなーってのを知っておくとトラブった時などに役立つでしょう。

他にはTroveと呼ばれるDB as a Serviceを提供するコンポーネントが存在しますので、もしも利用する計画がある場合は各種対応データベースについても事前に調べておくとスムーズに導入が進むかもしれません。

メッセージングキュー(AMQP)

OpenStackのコンポーネントでは、プロセス間の情報の受け渡しにメッセージングキューの1つであるAMQP(Advanced Message Queuing Protocol)が広く使われています。AMQPを利用することによってプロセスの負荷分散や冗長化が実現しやすくなります。 現在OpenStackではAMQPの配送を中継するミドルウェアとしてrabbitMQが利用されています。OpenStackの環境構築する際にも、まずは前述のMySQLMariaDB)と合わせてRabbitMQをインストールしたりします。 メッセージングキューの概要と合わせてRabbitMQについても学んでおくと良いでしょう。

ハイパーバイザー/仮想化技術関連

OpenStack上では予め用意されたイメージ(起動ディスクイメージなど)をベースに仮想インスタンスを作成します。この時、やはり事前に定義されたフレーバーを指定することによって仮想インスタンスのリソースサイズなどを指定できるのですが、このあたりの仕組みはサーバ仮想化技術を応用しています。

デフォルトのハイパーバイザーとしてはLinux KVM(Kernel-based Virtual Machine)が利用されます。KVM周りだけでも色々な技術が含まれるので学習は大変ですが、今やOpenStackを抜きにしてもサーバ仮想化の知識が求められる時代ですのでやはり学習しておいて損はないでしょう。

仮想マシンってそもそも何だろうとか、仮想ディスクの形式についてとか、QEMUってなんか昔見た気がするとか考えながら学んでみてください。また、仮想インスタンスの制御にlibvirtと呼ばれるAPIを裏側では利用していますので、この辺りについても合わせて学んでおくと効率が良いでしょう。

その他、共通イメージから個々の仮想インスタンスを作成していくにあたって、どうしても構成などもカスタマイズを行う必要が出てきますが、この部分はcloud-initという仕組みが利用されています。

cloud-initによってSSH公開鍵を仮想インスタンスに埋め込んだり、UserDataという仕組みを通じて仮想インスタンスの起動中に任意のスクリプトを実行させることなどが可能になります。ちなみに、cloud-initはAWS EC2でも利用されています。

ちなみに仮想インスタンスの管理をするコンポーネントはNova、イメージの管理をするコンポーネントはGlanceといいます。以前はNovaに仮想ネットワークの仕組みやブロックストレージの仕組みなども含まれていたんですが、現在は後述するNeutronやCinderにコンポーネントが分割されています。

ネットワーク関連

OpenStackのネットワーク周りは複雑なので学習する際もなかなか苦労する部分です。OpenStackのネットワークコンポーネントとしては現在Neutronが主流ですが、この仕組みを完全に理解するのは非常に大変です。

しかし、複雑ではあるもののNeutronは重要なコンポーネントですので、すでに世の中には良質な解説記事やスライドなどが数多くリリースされています。このような資料を探してみて読んでみてると良いでしょう(個人的には元木さん中井さんSlideShareや@ITの吉本さんの連載が良いと思います)。

今回は前提の知識の話なのでNeutronそのものの話は置いといて、中で使われている主要な技術や仕組みに注目します。 ざっと列挙するとこんな感じです。

  • Linux Namespace
    • Linuxカーネルが実装しているリソースを仮想的に分割する機能です。同一部物理ホスト上でもプロセスが認識している名前空間が異なる場合は別々の独立したネットワークとして扱われますので、テナント毎の仮想ネットワークを分割するのに利用されています。この場合、例えば各テナント内で同じIPアドレスが利用できたりします。
  • Open vSwitchとLinux Bridge
    • いわゆる仮想スイッチとして仮想ネットワーク内で各デバイスを接続します。Linux Bridgeに比べてOpen vSwitchの方が高機能ですが、セキュリティグループのためのiptablesルールを適用できるのがLinux Bridgeだけなので、この2つを併用しながら仮想ネットワークを構成します。
  • iptablesLinux IP Forwarding
    • iptablesは前述のセキュリティグループのルール適用のほか、仮想インスタンスにフローティングIPを適用させるためのNAT処理なども担当しています。地味に重要です。また、IP Forwrdingの機能と合わせて仮想ルータの機能を提供します。この仮想ルータを経由しテナント内ネットワークと外部ネットワークとで通信が可能となります。前述のLinux Namespaceにより仮想ルータ用の名前空間が用意されます。
  • dnsmasq
  • VLAN, GRE, VXLAN
    • VLAN、GRE、VXLANはマルチノード構成を取っている場合に、各テナントネットワークを分割するために利用されていたりします。これらのテクノロジーの概要を学ぶことでノード間通信の仕組みについて理解が深まるでしょう。また、VLANについては例えば管理ネットワークを分割するのに使うこともあるのでvconfigコマンドと合わせて、LinuxでのVLANインターフェースの操作を抑えておくと良いと思います。
  • HAProxy
    • NeutronにはLBaaS(Load Balancer as a Service)の仕組みが用意されていますが、そこで使われるのがHAProxyです。冗長構成された仮想インスタンスの死活管理をしたり負荷分散をするのに利用されます。LBaaSを使う計画があるのならば、まずHAProxyを学習しておくと良いでしょう。

ストレージ関連

OpenStackのコンポーネントでストレージといえば、ブロックストレージを提供するCinderとオブジェクトストレージを提供するSwiftがあります(最近はManilaと呼ばれる共有ファイルサービスのコンポーネントも登場しています)。

ブロックストレージについては仮想的なディスクと捉えればいいので理解しやすいのですが、オブジェクトストレージに馴染みがないと理解に戸惑ってしまうかもしれないので、まずはオブジェクトストレージが何かという話を抑えておくとよいでしょう。特にSwiftはNovaと並んでOpenStackの開発当初から存在するコンポーネントですので、歴史的な流れを学習しつつ概要を抑えていくと良いと思います。

CinderではデフォルトのバックエンドストレージとしてLVM(Logical Volume Manager)が利用されます。最近のLinuxでは標準的に使われるようになってきたLVMですが、仕組みや各種操作コマンドを今一度確認しておくと良いでしょう。

また、このLVM上で用意されたブロックボリュームに仮想インスタンスから接続する場合はiSCSIプロトコルが利用されます。iSCSIがどのような仕組みのものなのか、またLinuxiSCSIターゲットとするのに利用されるtgtdについても調べてみてください。

OpenStackの各コンポーネントでは、ドライバを入れ替えることによって利用する仕組みを変更することが可能ですが、Cinderもドライバを変更することでバックエンドストレージをLVM以外のものに置き換えることができます。特に本番環境などではCephと呼ばれる分散ストレージ技術を利用するケースが多いので、余裕があれば(そろそろねぇよ!って言われそう・・・)、Cephについても概要を調べてみてください。

RESTful API

ここまで主要なOpenStackコンポーネントの名前をいろいろと挙げてきましたが、これらのコンポーネント間のやりとりはそれぞれのコンポーネントに用意されたAPIを介して行われます。このAPIは、RESTful APIとして実装されており、HTTPをベースとしたアクセス(URL/URIでリソースを指定し、HTTPのメソッドで操作を行い、結果をJSONXMLHTTPステータスコードで受け取る)を可能とします。 OpenStackの管理の中ではAPIについての理解も重要ですので仕組みについて学んでおくと良いでしょう。

このRESTful APIや前述のメッセージキューなどを用いることで、OpenStackは疎結合(ゆるいつながり)という特徴を有します。必要なコンポーネントだけを選択して柔軟に組みあせて利用することができるのも、この疎結合という特徴のおかげですね。

その他の技術とまとめ

OpenStackは今や広範囲に及ぶコンポーネント(プロジェクト)を抱える超巨大オープンソースソフトウェアですので、紹介しようとおもっても正直キリが有りません。新しいコンポーネントもどんどん出てきますので、あとは必要に応じて新しい知識を身に着けていくしかない気もします。

例えば、コンテナ技術Dockerに対応したコンテナオーケストレーションコンポーネントであるMagnumなんかは注目度も高かったりすると思うんですが、やはり仕組みを理解する前提としてコンテナとは何か、Dockerとは何かということを知るべきでしょう。

この辺りは終わりがないといえば終わりがないのですが、あくまでも新しいコンポーネントなどは選択肢のひとつとして用意されているものでもありますので、無理してすべてを習得しなくとも必要なコンポーネントの理解から深めていければ十分でしょう。

と、気づけば妙に長い投稿になってしまいましたが、当記事を年末の忙しい時期の現実逃避にでもお役立て頂ければ幸いです。進捗どうですか?

_・)MakerCamp Tokyo 2014の思い出

もうかなり時間が過ぎちゃってアレだけど、4月12日(土)にお台場はテレコミセンターのコワーキング・スペース MONOさんで開催した『MakerCamp Tokyo』の思い出を少しだけ書いておきます。

(英語苦手なのに)翻訳を手伝ったりしていたせいで、気づいたらスタッフ枠となり当日も通訳モドキの役を任ぜられてしまったこのイベントですが、結果から言えば(個人的に物凄く)心配していた来場者数も申し込み100人超の実来場者数も70名強とまずまずな感じでした。

私はBarCamp形式のいわゆるアンカンファレンスは初めてだったんですが、いろんな話題が楽しめるイベントでとても楽しかったです。当日のボード(スピーカーがどの時間枠で何を話すかを貼り付ける為のスケジュール板)はこんな感じ。

私も1つくらいワークショップやりたいなーとは思っていたんですが、ちょうどスポンサーのConoHaさんから頂いたVPSクーポンの使い方を知りたいって人が数名居たので、1枠貰って仮想サーバを起動するところまでを簡単に紹介してみました。早速使ってみるよ!って言ってくれた人もいるので嬉しい限り。

また、ボード上に書かれているセッション以外でも、お掃除ロボットのRoombaをHackしてRaspberry Piのシリアル経由で動かしてみたり、自作のロボットを持ってきてお披露目していたり、レーザーカッターや3Dプリンターで黙々と何かを作る人が居たりと、とても楽しい1日を過ごすことが出来ました。

Tokyo HackerSpaceとしては初めての大きなイベントということもあり色々と改善すべき点はありましたが、次回のイベントも既に企画が始まっているので上手くつなげていけたらなーと思っています。

とりあえずは、MONOさんのスタッフの方が超親切だったので今度MONOさんで開催するワークショップに参加してみたいなぁ、、、と思ってみたりしています。ちょっと遠いのがネックだけど・・・。

当日の思い出の写真は、Flickrあたりをモソモソしてみてください。モソモソ。

MakerCamp Tokyo 2014 の写真

_・)親知らずを抜いた

唐突ですが、残っていた最後の1本の親知らず(右下)を4月30日に抜きました。

以前の職場時代(つっても転職ではなくて移転だけど)に近所の歯医者で親知らずを抜いた経験はあったんですが、既に虫歯でボロボロになっていた為かそこまで腫れなかったんです。

が、今回は結構腫れました・・・。5月5日の時点でもまだ完全には腫れが引いていない感じです。

幸い、5月1〜2日は仕事もあけられたので有給を取得したんですが、ほぼ2日間自宅でボーッと過ごしてました。痛み止めのおかげかそこまで苦しまなかったんですが、それでも抜いた当日の夜は痛みでうなされました・・・。

まだ抜糸とか消毒とか残っては居ますが、数年持ち越したお荷物を片付けたのは少し気分がいいですね。

この調子でやりのこしていることを一個ずつ片付けていきたいなぁ・・・と思い立ったので買ったままで放置しておいたルーンファクトリー4に何故か今、手を出してしまっています。

ルーンファクトリー4 (特典なし)

ルーンファクトリー4 (特典なし)

けっこう評判いいんですよね、これ。確かに面白い・・・っていうか作業ゲーが好きな人にはモッテコイだなぁ・・・畑仕事楽しいぜ・・・(アクションRPG的な要素もあります)。

_・)OmniOSとnetatalkでTimeMachine用に使えるAFP NASを作る

オープンソースカンファレンス 2014 Tokyo/Springで話したネタですけど、その時は15分しか時間が無かったので、今回Tokyo OpenSolaris 勉強会 2014.04にて1時間半ほどかけて実際に構築しながらプレゼンをやってきました。

内容は「Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!」というテーマで、仮想環境上にOmniOSをインストールしてnetatalkのセットアップ & OS Xからの利用までを一気になってしまおうというものでした。

途中で休憩を挟むつもりだったんですが、ちょっとのんびりやってしまったので結局ぶっ通しで話してしまいました。やや反省。

今回は初めて参加するっていう人も何人か居たのですが、感想を聞きそびれてしまったのでどうだったかなぁーと思ってみたり。初心者でも構築は出来るように説明したつもりなので、実際に一回くらい作って遊んで貰えると嬉しいなぁ。

以下はあまり今回の勉強会そのものとは関係ないオマケの駄文。VirtualBoxが不調で困ったという話です・・・。

続きを読む

_・)今夜はTHSの日本語Night

昨日に引き続いて今夜も[THS](http://www.tokyohackerspace.org)のミーティングに参加してきたよ。

 
THSは一応、火曜日は英語のレギュラーミーティングで、水曜日は日本語ナイトとしての日本語を使うミーティングという位置づけで運営してる、、、んだけど、今夜はほぼ英語メンバーばかりだったのでほとんど日本語"無い"トでした。
 
# 一応言い訳しとくと、このダジャレは別の英語メンバーが考えたんだからね!><
 
SketchUpやっている人がいたりRaspberryPiやっている人がいたり壊れた半田ごて直してる人がいたりと、相変わらずの自由っぷりですが、THSは今日も平和です。ゲストの方も来て頂けました。平和。
 
メンバーの一人が3ヶ月間だけ福島の方に仕事に行くらしく、金曜日はその送別会が企画されそう。
できれば参加したいなーとは思っているんだけど、そうすると5日の[Tokyo OpenSolaris勉強会](http://connpass.com/event/5285/)の準備ができるのは実質明日だけやな、、、、やばい。
 
明日、詰むや詰まざるや、、、(たぶん詰む)