さくらインターネットベアメタル自動化への挑戦

18
(C)Copyright 1996-2016 SAKURA Internet Inc. さささささささささささささささささささささささ ささささささささささささささ さささささささささささ さささささささささ ささ ささ 2016 さ 3 さ 4 さ

Upload: hiroki-ito

Post on 16-Apr-2017

2.890 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: さくらインターネットベアメタル自動化への挑戦

(C)Copyright 1996-2016 SAKURA Internet Inc.

さくらインターネットのベアメタル自動化への挑戦さくらインターネット株式会社

プラットフォーム事業部 インフラ開発チーム伊東 宏起

2016 年 3 月 4 日

Page 2: さくらインターネットベアメタル自動化への挑戦

自己紹介

• 伊東 宏起– 2015 年 4 月 新卒採用にて入社• プラットフォーム事業部 インフラ開発チーム

–さくらの VPS 開発担当• 物理からミドルウェア辺りまでの検証・開発が主な業務• ベアメタルプランの開発主担当

– JANOG37 プログラム委員

–@_nihi– https://www.facebook.com/hiroki.ito.1990

Page 3: さくらインターネットベアメタル自動化への挑戦

さくらの VPS ベアメタルプランリリース!

Page 4: さくらインターネットベアメタル自動化への挑戦

さくらのベアメタルの特徴 (1)

• 自動プロビジョニングシステムの開発– kickstart / preseed を動的に生成して実現• PXE Server の config とひも付け

–ユーザーの設定• 管理者パスワード

–最低限のパッケージのインストール–ネットワークの設定• NIC の Mac address の書き換え

– 9C-A3-BA OUI はさくらインターネット独自だったり

• OS のグローバル IP などなどの設定

Page 5: さくらインターネットベアメタル自動化への挑戦

集約スイッチ

アクセススイッチ

ベアメタルサーバ

さくらのベアメタルの特徴 (2)

Page 6: さくらインターネットベアメタル自動化への挑戦

集約スイッチ

アクセススイッチ

ベアメタルサーバ

ホワイトボックススイッチを使ってます

さくらのベアメタルの特徴 (2)

Page 7: さくらインターネットベアメタル自動化への挑戦

ホワイトボックススイッチ (WBSW) 使ってる?

• 国内での WBSW の議論まだまだ盛んじゃない–そもそもサービスで利用している事業者が少ない• 弊社でも利用は初めてで、まさに五里霧中

–だったらまずは自分たちで発信してみよう• WBSW のカスタマイズについて• 自動化にどうやって活かしたのか

Page 8: さくらインターネットベアメタル自動化への挑戦

WBSW のカスタマイズ

• WBSW のカスタマイズというと…– SDK を利用して ASIC の処理を実装?• これはやっていません

–じゃあなにやったの?• WBSW 用 OS のユーザランド上で、

自前で REST API サーバを実装• Jenkins + Serverspec を利用して、

セットアップスクリプトの CI

Page 9: さくらインターネットベアメタル自動化への挑戦

• 全体像

WBSW のカスタマイズ – REST API サーバ編

WBSW

WBSW 用 OS

Python + Flask 製REST API サーバ

Page 10: さくらインターネットベアメタル自動化への挑戦

WBSW のカスタマイズ – REST API サーバ編

• REST API を使ってなにしてるの?–各ポートの情報の取得や変更• ポートのリンク状態• RX/TX の各カウント• access VLAN ID• policing の帯域• IP/MAC address spoofing 対策用ホワイトリスト• 通信断制御の ON/OFF

Page 11: さくらインターネットベアメタル自動化への挑戦

WBSW のカスタマイズ – REST API サーバ編

• REST API をどんなときに使うの?– access VLAN の変更– policing の帯域変更• お試し期間時の帯域制限

– IP/MAC address spoofing 対策用ホワイトリスト• ユーザの再収容時に変更

–通信断制御の ON/OFF• 不正利用時などに ON!

Page 12: さくらインターネットベアメタル自動化への挑戦

WBSW のカスタマイズ – REST API サーバ編

• REST API だと何が嬉しい?• 前項で紹介した様な制御がとても楽になった

– before: ssh 越しに内部コマンドを頑張ってポチポチ…– after: 任意のエンドポイントを叩くだけ!

• チーム毎のフロントツールが容易に実装できた– NW 管理者 / サーバ管理者では観点が違う– 必要なエンドポイントが足りなければ

継ぎ足して実装すれば OK

Page 13: さくらインターネットベアメタル自動化への挑戦

WBSW のカスタマイズ – REST API サーバ編

• ハマりどころ (1)• サーバと同じ感覚で扱うとリソースが枯渇する

Page 14: さくらインターネットベアメタル自動化への挑戦

WBSW のカスタマイズ – REST API サーバ編

• ハマりどころ (1)• サーバと同じ感覚で扱うとリソースが枯渇する

– 検証機で virtualenv で環境構築ライブラリとソースだけ抽出して Ansible で配布

検証機

本番機

本番機

本番機

最低減必要なものだけを抽出

Page 15: さくらインターネットベアメタル自動化への挑戦

WBSW のカスタマイズ – REST API サーバ編

• ハマりどころ (2)• リクエストの取りこぼしの危険性がある

– Gunicom 入れるとリソースが足りない…

Page 16: さくらインターネットベアメタル自動化への挑戦

WBSW のカスタマイズ – REST API サーバ編

• ハマりどころ (2)• リクエストの取りこぼしの危険性がある

– Gunicom 入れるとリソースが足りない…– RabbitMQ を前面に置いて、リクエストの管理

本番機

本番機

本番機

Client

Client

Client

Page 17: さくらインターネットベアメタル自動化への挑戦

WBSW のカスタマイズ – Jenkins + Serverspec 編

• Jenkins + Serverspec のよくある使い方–セットアップスクリプトのテスト–今までサーバでやってきたことが違和感なく

同じようにやれることが大きい

テスト機

Page 18: さくらインターネットベアメタル自動化への挑戦

まとめ

• WBSW と上手く付き合っていくには?• できること・できないことを理解することが大切• その中で今までやれなかったことを実現して、

便利にしていくのが最適解かと思います