さくらインターネットベアメタル自動化への挑戦
TRANSCRIPT
(C)Copyright 1996-2016 SAKURA Internet Inc.
さくらインターネットのベアメタル自動化への挑戦さくらインターネット株式会社
プラットフォーム事業部 インフラ開発チーム伊東 宏起
2016 年 3 月 4 日
自己紹介
• 伊東 宏起– 2015 年 4 月 新卒採用にて入社• プラットフォーム事業部 インフラ開発チーム
–さくらの VPS 開発担当• 物理からミドルウェア辺りまでの検証・開発が主な業務• ベアメタルプランの開発主担当
– JANOG37 プログラム委員
–@_nihi– https://www.facebook.com/hiroki.ito.1990
さくらの VPS ベアメタルプランリリース!
さくらのベアメタルの特徴 (1)
• 自動プロビジョニングシステムの開発– kickstart / preseed を動的に生成して実現• PXE Server の config とひも付け
–ユーザーの設定• 管理者パスワード
–最低限のパッケージのインストール–ネットワークの設定• NIC の Mac address の書き換え
– 9C-A3-BA OUI はさくらインターネット独自だったり
• OS のグローバル IP などなどの設定
集約スイッチ
アクセススイッチ
ベアメタルサーバ
さくらのベアメタルの特徴 (2)
集約スイッチ
アクセススイッチ
ベアメタルサーバ
ホワイトボックススイッチを使ってます
さくらのベアメタルの特徴 (2)
ホワイトボックススイッチ (WBSW) 使ってる?
• 国内での WBSW の議論まだまだ盛んじゃない–そもそもサービスで利用している事業者が少ない• 弊社でも利用は初めてで、まさに五里霧中
–だったらまずは自分たちで発信してみよう• WBSW のカスタマイズについて• 自動化にどうやって活かしたのか
WBSW のカスタマイズ
• WBSW のカスタマイズというと…– SDK を利用して ASIC の処理を実装?• これはやっていません
–じゃあなにやったの?• WBSW 用 OS のユーザランド上で、
自前で REST API サーバを実装• Jenkins + Serverspec を利用して、
セットアップスクリプトの CI
• 全体像
WBSW のカスタマイズ – REST API サーバ編
WBSW
WBSW 用 OS
Python + Flask 製REST API サーバ
WBSW のカスタマイズ – REST API サーバ編
• REST API を使ってなにしてるの?–各ポートの情報の取得や変更• ポートのリンク状態• RX/TX の各カウント• access VLAN ID• policing の帯域• IP/MAC address spoofing 対策用ホワイトリスト• 通信断制御の ON/OFF
WBSW のカスタマイズ – REST API サーバ編
• REST API をどんなときに使うの?– access VLAN の変更– policing の帯域変更• お試し期間時の帯域制限
– IP/MAC address spoofing 対策用ホワイトリスト• ユーザの再収容時に変更
–通信断制御の ON/OFF• 不正利用時などに ON!
WBSW のカスタマイズ – REST API サーバ編
• REST API だと何が嬉しい?• 前項で紹介した様な制御がとても楽になった
– before: ssh 越しに内部コマンドを頑張ってポチポチ…– after: 任意のエンドポイントを叩くだけ!
• チーム毎のフロントツールが容易に実装できた– NW 管理者 / サーバ管理者では観点が違う– 必要なエンドポイントが足りなければ
継ぎ足して実装すれば OK
WBSW のカスタマイズ – REST API サーバ編
• ハマりどころ (1)• サーバと同じ感覚で扱うとリソースが枯渇する
WBSW のカスタマイズ – REST API サーバ編
• ハマりどころ (1)• サーバと同じ感覚で扱うとリソースが枯渇する
– 検証機で virtualenv で環境構築ライブラリとソースだけ抽出して Ansible で配布
検証機
本番機
本番機
本番機
最低減必要なものだけを抽出
WBSW のカスタマイズ – REST API サーバ編
• ハマりどころ (2)• リクエストの取りこぼしの危険性がある
– Gunicom 入れるとリソースが足りない…
WBSW のカスタマイズ – REST API サーバ編
• ハマりどころ (2)• リクエストの取りこぼしの危険性がある
– Gunicom 入れるとリソースが足りない…– RabbitMQ を前面に置いて、リクエストの管理
本番機
本番機
本番機
Client
Client
Client
WBSW のカスタマイズ – Jenkins + Serverspec 編
• Jenkins + Serverspec のよくある使い方–セットアップスクリプトのテスト–今までサーバでやってきたことが違和感なく
同じようにやれることが大きい
テスト機
まとめ
• WBSW と上手く付き合っていくには?• できること・できないことを理解することが大切• その中で今までやれなかったことを実現して、
便利にしていくのが最適解かと思います