_・)Keep Smiling

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

なながつのおもいで的な

早いもんで

気づいたら7月も終わりな訳ですよ。

うっかり前回の日記的なやつから一ヶ月以上空いちゃってるんですが、まぁそれだけ忙しいのかなんなのか、充実した日々を送っていると勝手にしておきましょう。

そんなわけで、最近の私を振り返っておきたいと思います。

お仕事のこと

けっこう相変わらずです。OpenStack的なモノが中心ですが、合間にコンテナ的なこととかクラウド的なこと(OpenStackもクラウド的なものだけど)をやってます。 来月からAnsibleのトレーニング的なことも携わる予定なので今はその準備におろおろしています。

お仕事以外のこと

Rancher JPのコミュニティ活動を盛んに行っています。主に賑やかし要員ですが。 LTで話したり、運営としてかけずり回ったり。

お陰で知り合いも増えて、他のコミュニティの情報やらも前よりもキャッチできるようになりました。 世の中には面白い技術は多いけど、全部追うには時間が足りないですねー(寝たいので許して)。

おうちのこと

上の息子さんが相変わらず試験という試験(スイミング、算盤、合気道)に合格しまくっています。 合格したらベイブレードのベイを買うって話で当初進めてたんだけど、あまりに合格ばかりなので奥さんが「なんでそんなに買わなきゃならんのだ」となってしまいました。 息子さんも合格したら買ってもらって当たり前という態度がちょっとどうなのよ?という感じでもあるので少し方針変更中だったりします。

あ、ついでですが私も合気道の試験(6級ですが)合格しました。まだ白帯。 息子さんは青帯に進化しててずるい。

下の息子さんは相変わらず顔はすげー可愛いけど超うるさくて性格が悪いです。昨日、保育園の夕涼み会のお化け屋敷でギャン泣きして暴れました。可愛いやつめ。 このちっこいさんもスイミングを春から始めて先日初めての試験に合格しました。ご褒美はハイチュウ。すごい大事に食べてる。かわいい。

この先のこと

8月から9月にかけて色々お話する機会を頂いています。LTじゃなくて少し長めの尺のやつです。

8月なのにJulyでおなじみの”JTF(July Tech Festa)”では、前述のRancherについてお話しする機会を得ました。 最近注目されまくりのコンテナオーケストレーター”Kubernetes”とDCリソースがっつりおまとめで有名な”Mesos”のクラスターデプロイについて話しますよ。

9月になると、毎度おなじみOSC Tokyoで前回と同じ入門トラックの”Linuxインストールの話”と、やはりRancher JPの”Rancherでk8s牧場を作ろう”ってかんじの話をします。

専業講師から兼業講師にジョブチェンジはしちゃいましたが、今でもやっぱり人前で話すのは好きなんだなぁと思います。

_・)みなさん聞きにきてね!

_・)さいきんの活動記録みたいな

お久しぶりです

書こう書こうと思いつつ、すっかり間が空いてしまいました。 ここしばらく公私ともに忙しくてやっとすこーしだけ落ち着いた感じがするようなしないような・・・。

今日は、最近何をやってるの?ってことを主に記録しておこうかと。

まずはお仕事

私よりも忙しい人をあげればきりが無いのですが、 ここ最近はそれなりにお仕事もやることが色々できたりして忙しくしていました。 暇で暇で仕方なくなったらそれはそれでヤバイので良いことですね。

家庭は、というと

息子さんの運動会のせいで腕がこんがり焼けてしまいました。誰が焼豚だ。 中途半端な袖の長さにしてしまっていたせいで、変なポッキー焼けしちゃっています。 しかも左右の腕で焼け具合が違うという・・・。

あとはまぁいつも通りでしょうか。

あ、上の息子さんのスイミングが気づいたら随分進んでて、5月末にはなんとバタフライの科目にも合格しちゃいました。 あいつ、試験という試験に最近ずっと合格しているなぁ・・・。

実は息子さんとは、試験に合格したらご褒美でベイブレードバーストのベイを1個買うって感じの約束をしちゃっています。 スイミングに算盤と最近はずっと合格続きの負け知らずなのでかなり良いペースでベイを買わされちゃっています。 まぁ、楽しそうにいっつもベイシュートしているのでいいか・・・。

合気道も頑張っています

4月からお世話になっている養神館合気道光龍館も、継続して毎週土曜日に3時間ほど稽古しています。 5月の後半には、浦安市の総合体育館で複数流派で合同の演舞大会にも参加してきました。 まだまだ初心者なのでちっともサマにはなっていないのですが、日進月歩という感じで基本を覚えているところです。

7月には初めての試験(6級〜8級を目指すらしい)もありますので、まずはその合格が当面の目標ですね。

コミュニティ活動とかも増えました

仕事に関連もするからというと身も蓋もないんですが、ここのところ色んな勉強会への参加が増えました。 また、Rancher JPMUGTと言ったコミュニティ運営にも少し関わるようになってきてて、何かと忙しさに拍車をかける原因にもなっています。

とはいえ、最新の技術に触れられる良い機会ですし、そうした技術のコミュニティに集まっている人達も皆さん優秀で素晴らしいので、 今後も色々とガンバってやっていこうと思っているところです。えいえいおー。

おまけ

Nintendo Switchほしい・・・けど買ったところでやる暇ないだろうなぁ。

_・)RasPi2でTV録画サーバ

やっとTV録画サーバ直した

前々回くらいでOSC Tokyoにも展示したRasPi2を使った地デジ録画サーバ。

その後、なぜかchinachuでTV番組表が更新できなくなり、あれこれするうちに録画ができなくなって、あー直さなきゃなーと思ってたやつをGW中に直しました。

以前はOSMCで構築したんですが最近はLibreELECなんてメディアセンター向けOSがRaspberry Piも主流になってきているみたいで、よーしこいつでつくるか!!!と思ったらパッケージの手動追加とかめんどくさそうになってたので諦めてサクッとRaspbianで作ってみました。

いやー、標準OSはやっぱり楽でいいですね。

参考にしたのは

以前は誰かのBlog記事を参考にしたんですが、ちょうど良くまとまってるQiita記事があったのでこれを参考にしました。

qiita.com

Chinachuも以前よりもバージョンアップしててインストール。。。というか管理の仕組みががらっと変わったんですね。 こちらは公式のページを参考にインストールしました。

「七森中録画研究会」スペシャルサイト

いきなりデーンとアニメ画がでますが、公式がこんな感じなので戸惑わないように・・・。

とりあえずは健全に動いてます

番組表も無事に取得できたのでとりあえず今晩のベイブレードから録画する予定。 予約もサクッとDone。Chinachu便利。

どうか無事に録れるますように・・・。

_・)手首が痛い

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

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

合気道をはじめました

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 の写真