2015年8月26日水曜日

YAPC::ASIA 2015 参加メモ

参加したところ

  • 日時: 2015/08/21(金) 10:00 - 18:00(懇親会)
  • 日時: 2015/08/22(土) 10:00 - 18:00
  • 会場: 国際展示場 会議棟
  • ホームページ: http://yapcasia.org/2015/
  • hash tag: #yapcasia

初めてのYAPC::ASIAでした

懇親会は大盛況でした。

ネットワークエンジニアでRubyがメインの私にとって、今回、初めてのYAPC::ASIAでした。

金曜日と土曜日の両日参加し、懇親会にも参加できました。

多くのOSSの開発者と話ができたこと(アイコンと顔が一致した)が一番よかったです。

YAPC::ASIAを快適に過ごしている裏で、YAPC::ASIAの開催側でいろいろなかたが努力しているのを感じました。 ありがとうございました。

「blogを書くまでがYAPC」ということで、2つの発表について振り返ろうと思います。 (YAPC::ASIAのあとに家族旅行があり、blog更新が遅くなりました。)

それは僕たちのドメイン・DNS運用

某面白法人でのDNSレコード(受託のWebサイトのレコードなど)の管理方法についての話でした。

  • AWSのRoute53での運用をするようになった
  • その運用のツールとして、Roadworkerというツールを使っている
  • Circle CIを使ってCIを回している
  • 実際にDNSレコードが反映されているかはテストしていない

このような話だったので、@jiggyakkumaさんと、次のようなやりとりで、 テストツール(infrataster-plugin-dns, rspec-dns)を紹介したのですが。。。

Roadworkerにテストコマンドあるじゃん!! という落ちでした。

Roadworkerはとても良さそうなので、 AWSのRoute53以外のDNSレコードの運用にも応用したい熱が上昇中です。

3分でサービスのOSを入れ替える技術

タイトルでは想像できないくらいいろんな取り組みをしていて、とても参考になる話でした。

まず、課題設定として、「Do scale-out with extremely rapid automation!!!1」という ところからのスタートです。 この課題に向けて、どのようなアプローチをとるのか。

アプローチとしては、以下のようなアプローチのようです。

  • アプローチ
    • Infrastructure as a Code化
      • VMの作成手順書からPuppetへの置き換え
      • puppetマニフェストの修正
    • VMのサービスへの投入の自動化
      • ノードのImmutable化
      • 現実の手順をコードにする
    • クラウド指向のアーキテクチャの導入
      • 監視などで登録を手動でやらないといけないものからの脱却
      • fluentdなどでのログの収集自動化
    • コマンド化
      • コマンドをthorなどを使って簡単に!
    • VM起動時間の短縮
      • Packerを使って、起動のためのphaseを段階を分けて実行するように
        • Minimal image(phase1)
        • Role specified(phase2)
    • Infra CI
      • Severspecなどを使って、壊れていないことを確認できるようにする
    • OSの切り替え
      • Secientific LinuxからCent OS7 へ
    • Blue Green デプロイ
      • Nginx などでの切り替え(ELBはここでは使わない)
    • (将来)ここまで来たらDockerとかも考えられる

コード化して、CI回しながら、リファクタリング という、 ソフトウェア開発的なアプローチでの置き換えにより、 短期間での実現したという素晴らしい内容でした。

「すばらしい」のだが、一方で、「自分でもできるのではないか?」 と 思うことができて、成功体験の共有は素晴らしい と思いました。

2015年8月9日日曜日

Trema Day #7 Presented by APC に参加してきた

開催概要

他のかたのまとめ

感想

トレンドなのか、たまたまなのか、今回は無線関係のOpenFlowの話が多かった。 TremaがPure Rubyになったということで、いい加減、Trema入門します。 エーピーコミュニケーションズさんのすばらしい会場で、 懇親会まで準備いただいてありがとうございました!

OpenFlowで覚えるネットワーク

まとめると

ネットワークをあまり理解していない人に向けて、どのようにしたら 理解してもらえるか。どうやったらネットワークを理解している人を増やせるか という課題に対して、 Yellowケーブルなどのころからのネットワークの変化を OpenFlowを使って追体験することで、理解を深められるのではないか という 試み。

メモ

  • テクニカルな話ではない
− ネットワーク = コミュニケーションをする道具
  • 複数の人 で達成する
    • 情報のやりとりをやる
  • 必ず2点の「端点」がある
  • ゴール: 自分の頭の中にあるものが相手の頭の中になっている
    • 音声、紙
      • 日本語 とかいうルールがある
        • プロトコル
  • ネットワークのかたち
    • どんな情報を伝えるか
    • どこのだれに情報を伝えるか
    • 何を使って情報を伝えるか
    • メディア
  • mininet使うと簡単に試せる
  • 糸電話からLearning Switchへ
  • 同時に話すとCollisionが発生する
    • 共有メディアは人が増えるとしゃべれなくなる
  • 近代ネットワークの道
    • ブリッジ → スイッチ
    • スイッチになるとコリジョンが発生しなくなる
− スイッチにするには
  • KnownなARPテーブル
  • UnknownなARPテーブル → Learning Switch
  • よその部屋の人との会話
    • IPの話→Simple Router
  • L1とはL2というのを下から上に理解するといいのではと思っている
  • コリジョンドメイン、全二重と半二重、物理メディアの話は端よっている
  • OpenFlowを使おうとおもうと、面倒見る人がいない
    • ソフト屋

ニューTrema5つのポイント

まとめる

新しいTremaになった。 見た目は変わっていないが、中身はだいぶかわった。 OpenFlow1.3.4に対応し、Pure Rubyにして、 コントローラ連携がしやすくなって、テストフレームワークと ドキュメントが充実した。

メモ

  • OpenFlow1.3.4に対応
    • –openflow13 と足すとしゃべれるようになった
    • pioで対応
    • trema/pio を見るとわかる
  • Pure Ruby化
    • インストールが簡単
    • openvswitchを入れて、bundle install でできる
    • デバッグしやすい
    • pryとかでパケットインのところでそのときのスコープの変数とかが見える
    • pryだとmethodの補完もできる
    • show-sourceとかでmethodなので。
  • コントローラ連携
    • 既存のコントローラを組み合わせて高機能なコントローラを作ることができる
    • delegatorというのを使う
    • クラスの継承を使って機能を拡張するのも簡単
  • テストフレームワーク
    • テスト
      • INPUT とOUTPUTを定義するとできる
    • Cucumberでできる
    • Given When Thenでかける
  • ドキュメント
    • Cucumberの記述からドキュメントを生成するようにした
    ー その結果充実した
  • 協力のお願い
    1. バグ報告
    2. パッチのPR
    3. 新しいアプリ
    4. Trema本レビュー

OVS拡張の話(とPioの話)

まとめると

TremaのPacketParserであるPioに OVSで使われている Nicira拡張をいれたいという話。 Nicira拡張はOVSに限定されているが、 いろいろと使いやすいものがある。

メモ

  • PioはRubyのパケットパーサ実装
    • パケットのパースをするツール
    • パケットを作れるツール
    • PioがだんだんCoreの部分に近づいている
    • Pioの性能がTremaの性能に影響を与える
  • OVSのNicira拡張にいろいろと使えるものがある
  • OpenFlowのきついところ
    • 「Controllerに転送を書くんでしょ?」
    • 「そうだよ?」
    • 辛そう
  • 宣言的にやりたい
  • OpenFlow的にはpacket_inさせるな!というのが一般的だが。。
  • 簡単にかけます

QA

  • Q: Pioにいれるきがあるか?
  • A: 熟読してから決める(by @yasuhito さん)
  • Q: 使える実装はどれくらい?
  • A: OVSなら使える
  • C: 他のハードのスイッチはけっこうはまりそう?。
  • C: Nicira拡張なのでOVSなら使える

いろいろなデバイスでOpenVNetを動かしてみようとした

まとめると

OpenVNet(OVS, Trema, MySQL など)を 次世代携帯型データセンター(Android 2.x)で 動かそうと頑張ったが、そこまでいかなかった。。 という 死闘の記録。

メモ

  • Edge Overlayのおさらい
    • Hostに仮想Switchがのるタイプのネットワーク
    • OpenStack Newtronとの親和性
  • 次世代携帯型データセンター
    • rbenvでrubyのコンパイルが1日で終わる。
    • Tremaのコンパイルも1時間
    • rootをとる必要がある
    • けっこう辛い
  • デモ
    • OVS, Tremaはなんとか動いたが。。
    • 無理矢理アラインメント変更したから。。

Dive into wireless openflow!

まとめると

無線LANとOpenFlowについての考えは珍しくはないが、 無線LANベンダによって、ロックインがあるため、いろいろ難しい面もある。 Raspberry Piを使った実装のデモを使って、効果の説明があった。

メモ

  • 無線とOpenFlowの組み合わせは珍しくはない
  • 無線はいろいろわからない(見えない)
  • 今回作ったやつはラズベリーパイで動いている
  • 効果
    • 状態を監視できる
    • APの電波でどちらを優先するか などの制御ができる
    • デバイスごとの癖がわかる
  • 実装
    • Linux netdev = openflow portとした

QA

  • Q: 無線LANの標準はあるのか?
  • A: 標準にしてもいいがONFとしてどうなっているかはわからない
  • C: 個人的には標準化したほうがよいかという気持ちはある

「Lagopusで遊ぶ(仮)」 あらため「Lagopusで試すFirewall」

  • @hibitomo さん
  • スライドはNot Yet

まとめると

FirewallのACLをLagopusで実装してみる試み。 ポートのRangeを実装するところはLagopusなら力業で実現できる(はず)。 ちょうどLagopusが新しくなって動いていないが、すぐに直るはず。

メモ

  • ACLのポートレンジのところは、最大26万ルールにおさまる!!
  • Lagopus →100万ルール いける(はず)
  • priorityを気をつける必要がある

QA

  • Q: テストツールは?
  • A: RyuのテストツールでJSONをいれればできるので、これでいける?

(仮題)Dockerコンテナのネットワーク周りについて

まとめると

DockerではネットワークまわりがいまHot。 docker 1.8 experimentalではいろいろ遊べる。 RunCを使えば、dockerが入らないようなシステムでも コンテナを簡単に作れる。

メモ

  • Trema関係ない
  • いまDocker Networkに力入れている
  • コンテナの周りのツール いろいろある
  • きょうの話
    • libnetwork
      • コンテナのネットワーク
    • RunC
  • libnetworkの話
    • 言葉の定義
      • SandBox → コンテナのこと
      • Endpoint → vethとかのこと
    • libnetwork driverがdocker0作成したりする
    • libnetwork driver
      • bridge デフォルト
      • overlay VXLANでトンネルをはる
    • overlay driver
      • docker 1.8-experimentalから利用可能
    • swarmはいまはネットワーク周りまだ管理していない
    • consulでやっている
    • docker create network overlay のようにやる
    • docker service publish h1.test ってやる
    • service とIPアドレスが対応している
    • /etc/hostsに書かれている
    • network driver だとarpがこない
      • broadcastとかはdocker側で管理している
    • 今後はlibnetworkを中心に発展していきそう
  • RunCの話
    • ホワイトボックススイッチ
    • Cumulus Linuxなど
      • Debian 7ベース
    • dockerを入れるにはいろいろ問題があって。。
    • そこでRunC
    • Open Container Projectに準拠させた
    • dockerのような常駐デーモンがいない
    • docker export でtarにして、それをrootfsにして、そこでruncを走らせるとコンテナが動く

QA

  • Q: vxlanはdocker間だけ?
  • A: 現状はdocker間だけでしかvxlanは通信できない
  • Q: どうしてスイッチ上でコンテナを動かしたい?
  • A: スイッチ上でアプリが動けばいろいろやりたい。アプリの配置を簡単にしたい
  • Q: dockerのネットワーク切り替えはできる?
  • A: 一応できるけど、ホスト名では解決できない

LT

ぜんぜんかけていないので、あとで追記します。きっと。。

LT SDNに夢見た無線AP~

LT 無線LANコントローラーからSDNへの移行可能性と拡張性の模索

  • @SRCHACK さん

LT Lagopus 0.2