さくらのVPSを支える技術とこれから / Technology behind SAKURA VPS and the future

27be367c0d0d8e9cbeba60afd8b68da4?s=47 chamaharun
April 24, 2020

さくらのVPSを支える技術とこれから / Technology behind SAKURA VPS and the future

OSC2020 Online/Spring にて登壇した際の資料です。
https://event.ospn.jp/osc2020-online-spring/session/61393

27be367c0d0d8e9cbeba60afd8b68da4?s=128

chamaharun

April 24, 2020
Tweet

Transcript

  1. © SAKURA Internet Inc. さくらのVPSを⽀える技術とこれから @OSC2020 Online / Spring さくらインターネット株式会社

    技術本部 ⼩林 巧
  2. ⾃⼰紹介

  3. ⼩林 巧 (こばやし たくみ) • ta-kobayashi@sakura.ad.jp @chamaharun • 2017年4⽉⼊社 新卒4年⽬

    所属 • 技術本部 ミドルウェアグループ • 仮想化基盤チーム VPSインフラ担当 著書 • 技術評論社 イラスト図解でよくわかる ITインフラの基礎知識(共著) • 技術評論社 Software Design 2018年7⽉号/2018年10⽉号(寄稿) 備考 • OSC参加 7年⽬ (登壇2回⽬) • アウトドアしたい!
  4. • さくらのVPSのサービスについて • さくらのVPSの仕組みと運⽤上の⼯夫 • さくらのVPS最新動向 今⽇お話すること 注意事項等 • サービス提供上公開できないこともあります(DC所在地や原価等)

    • 「for Windows」「ベアメタルプラン」は仕様が違います • 資料作成当時(2020年4⽉)の情報です 発表当時資料になく⼝頭で説明・補⾜した部分は発表後に各ページのこの部分に追記しています。
  5. 「さくらのVPS」とは

  6. さくらのVPS使っている⼈

  7. • 2010年 サービス開始 • Virtual Private Server = 仮想専⽤サーバ •

    root権限、グローバルIPつきの⾃分専⽤のサーバ(実態はVM) • コントロールパネルから操作・リソースグラフの確認などができる さくらのVPS VM = Virtual Machine 仮想マシン 操作 リソースの利⽤状況 コントロールパネル お客様VPS
  8. さくらのクラウドとのアーキテクチャの⽐較 さくらのVPS さくらのクラウド VM ホストサーバ VM ホストサーバ VM VM VM

    ホストサーバ VM ストレージ VMのストレージがホストサーバ上にある VMのストレージがネットワーク上にある • ⾼価なストレージアプライアンスを必要 とせず安価に提供可能 • 障害の影響範囲が⼩さい • ホストが障害でも別のホストからVMを起動 できる • 別のVMで使⽤していたディスクを接続して VMを起動できる DAS = Direct Attached Strage
  9. さくらのVPSのホストサーバ VM VPSホストサーバ VM VM • VMが稼働しているサーバ • 複数VMでリソースを共有 •

    ハードウェアRAID • SSD/NIC/PSUなどのパーツを複数 搭載し冗⻑化 • bonding / NW機器の冗⻑化 • IPMIによるリモートからの操作 NIC = Network Interface Card PSU = Power Supply Unit RAID = 冗⻑化や⾼速化のため複数のディスクを束ねて使⽤すること SSD SSD SSD NIC NIC PSU PSU SSD SSDやNICやPSUといったパーツを複数搭載しているベンダー製サーバを採⽤しています。 データセンターに⾏かずにコンソール作業ができるよう、IPMIインターフェイスを搭載しています。
  10. 〇〇Stackなどのクラウド管理基盤ソフトウェアを使⽤せず⾃前で実装 • KVM+QEMU (仮想マシンの実⾏環境) • libvirt (仮想マシンの制御) • Linux Bridge

    + (Nested)VLAN(仮想マシンのNW) • LVM(仮想マシンのストレージ) さくらのVPSの実装 ⾃社で開発・保守することで低コストで運⽤&不具合に迅速に対応 KVM = Kernel-based Virtual Machine LVM = Logical Volume Manager
  11. さくらのVPSのVMができるまで VM VPSホストサーバ VM VM スクリプト VPS API 実⾏ LV

    LV LV 実⾏結果 • 社内システムとの調整(課⾦等) • 収容ホストサーバの選定 • 実⾏結果をコンパネへ反映 • LV(VMのストレージ領域)の作成 • OSイメージの展開 • VMの初期設定 • VMの起動 VM作成時以外(操作時・設定変更時)も同様に動作 お客様からVMの申し込みがあると、VPS APIがリソースの空き具合から収容するホストサーバを 選定し、ホストサーバにあるスクリプトを叩き、スクリプトがVM作成などを⾏います。
  12. 「さくらのVPS」の運⽤

  13. サービスチーム お客様対応部隊 さくらのVPSを⽀える⼈たち 24/365オペレーション部隊 DCOP 現地・物理作業 SVOP ホストアラート対応・メンテ VPSインフラ担当 VPS-API担当

    NWOP NWアラート対応・メンテ 対応依頼・共同対処 エスカレーション CR カスタマーサポート VPS NW担当 24時間有⼈でサービスを横断して対応を⾏う体制があり、⼿順書と権限を渡して対応を依頼し、 対応しきれないものに関してはエスカレーションを⾏ってもらい、共同で対処します。
  14. • サービスを安定的に提供し続けること = 監視を⾏い障害が発⽣したら対応する・発⽣しにくいようにする • サービス品質の継続的向上 = パフォーマンス改善・機能追加など 現状維持だけが運⽤ではない 「さくらのVPS」では開発と運⽤を同じスタッフで⾏っている

    → 運⽤負荷を下げる事でよりよいサービスづくりに注⼒が可能 サービスを安定して提供し続けるのは当然⼤事ですが、お客様に選ばれ使い続けていただくためには、 サービスを維持するだけでなく改善も必要で、開発も運⽤に含まれると考えています。
  15. VPSインフラメンバーの⽇常 障害対応 問い合わせ 対応 ベンダー との 保守の調整 メンテ ナンス 運⽤改善

    機能開発 新規構築 Abuse 対応 技術調査 在庫関連 作業 VPSインフラメンバーの⽇常業務は多岐にわたりますが、
  16. VPSインフラメンバーの⽇常 メンテ ナンス 運⽤改善 今回はこの辺りについてお話します。

  17. • RAIDカード • NIC • メモリ • マザーボード サーバの主な故障箇所とその対応 シャットダウンが必要

    シャットダウンなしで交換 • HDD/SSD • PSU ホットスワップ⾮対応でも故障予知機能のあるパーツは 障害を防ぐため事前に計画メンテナンスを⾏う ⼀部ホットスワップにより交換できないものもありますが、NICなど冗⻑化しているパーツであれば ⽚側が動作している間にメンテナンスを計画しホストサーバを停⽌して交換します。
  18. HW交換メンテナンスの流れ 計画メンテナンス対応例 メンテ情報掲載 シャットダウン 筐体交換 復旧確認 • アラート等を検知 • メンテナンス情報の掲載

    と対象ユーザへメール (1〜2週間前) • Disk以外を予備機と 筐体ごと交換 • ホスト正常性を確認し VMの状態を復元 • VMの疎通確認 所要時間3時間程度:通常は深夜帯に実施 • VMの状態を保存 • ホストサーバの シャットダウン SVOP対応 DCOP対応 予備機は障害機と同スペックのものを複数⽤意しており、対応するスロットのディスクを差し替え、 障害機が設置してあったラックの位置にマウントし結線する運⽤を⾏っております。
  19. 信頼性を⾼める⼯夫

  20. • RAIDの設計以上の本数が故障するとRAIDが崩壊する • 崩れたRAIDは再作成するしかない • バックアップから復旧するのに時間がかかる • CCを定期的に実⾏し不整合を検出・修正する • RAID/SMARTエラー値をホスト・スロット毎に追跡して予防交換

    ストレージ障害と予防交換 CC(Consistency Check) = 仮想ドライブのデータ整合性をチェック修正するRAIDカードの機能 信頼性を⾼める⼯夫 CCを定期的に実⾏していても、不良スロットの影響により動作が不安定になることがあるので、 SMARTやRAIDカードのエラー値をチェックして、状況次第で予防交換を⾏います。
  21. 0 4 1 2 3 5 RAID多重障害事例 • RAID10のホスト •

    Slot0にてエラー値の上昇を確認 • 通常通りSlot0の交換を⼿配 • CCを⼿動実⾏
  22. 0 4 1 2 3 5 RAID多重障害事例 ❌ ⚠ •

    RAID10のホスト • Slot0にてエラー値の上昇を確認 • 通常通りSlot0の交換を⼿配 • CCを⼿動実⾏ • Slot1が脱落 • Slot0をリビルドソースとすると失敗 する可能性アリ
  23. 0 4 1 2 3 5 • RAID10のホスト • Slot0にてエラー値の上昇を確認

    • 通常通りSlot0の交換を⼿配 • CCを⼿動実⾏ • Slot1が脱落 • Slot0をリビルドソースとすると失敗 する可能性アリ RAID多重障害事例 ⚠ 緊急メンテナンスを実施し VMを別ホストに退避 Slot1をこのまま交換してしまうとVMのデータ消失に繋がる恐れがあったので、 やむを得ず緊急で深夜帯にVMの移設を⾏いました。
  24. 0 4 1 2 3 5 RAID多重障害事例 VM移設後 • slot1を交換(3⽇後)

    →リビルド →完⾛ • slot0が脱落(22⽇後) →交換 →リビルド →完⾛ Slot1をこのまま交換してしまうとVMのデータ消失に繋がる恐れがあったので、 やむを得ず緊急で深夜帯にVMの移設を⾏いました。
  25. • 故障率の上昇 • 保守費の⾼騰 • 収容率の低下 機材⽼朽化メンテナンス より新しく⾼性能な サーバにリプレース 古い機材を使い続けると・・・

    通常のマイグレーション: 1VMあたり 数⼗分〜数時間のサービス断 x 数⼗〜数百VM VMのストレージがホストサーバに紐付いているため VMのデータを旧→新ホストに効率よく転送する必要がある 信頼性を⾼める⼯夫 ここ最近は機材⽼朽化メンテナンスに注⼒しているのでそれについて話します。
  26. DRBD 挟み込み VMデータ 同期 論理 切り替え 論理移設メンテナンスの流れ VMの停⽌が必要 VMの停⽌が不要 DRBDを各VMの

    LVの下に挟み込み DRBD = ホスト間でブロックデバイスの 同期・複製ができるソフトウェア ホストサーバ単位で⼀⻫にデータ同期と切り替えを⾏い サービス断を最⼩限に抑えつつ効率的にマイグレーション 新旧ホストのDRBDを 接続・同期 新ホストでVMを起動
  27. DRBD挟み込み VM ストレージ VM • VMをシャットダウン • DRBDをセットアップ • LVMのデバイスを切り替え

    • VMを起動 • VM起動後の確認 DRBD 挟み込み VM VM 論理移設メンテナンス ストレージ DRBDという、HAなどでブロックデバイスの同期に使われるソフトウェアを、VMのIOを⼀度⽌めて VMのストレージ領域であるLVと、ホストサーバのストレージの間に挟み込みます。
  28. VMデータ同期 DRBD データ 同期 VM VM 論理移設メンテナンス ストレージ DRBD •

    DRBD⼊り新ホスト を構築 • 新旧ホストを接続 • データの同期 VM ストレージ VM DRBD • 新ホストは同期開始時に構築されていればOK! • VM無停⽌で同期を開始できる! ⼀度挟み込んでしまえば、VMを停⽌することなくVMデータの同期を開始できます。 右側のDRBDデバイスはもう⼀つの旧ホストから⼊ってくるVMの領域になります。
  29. • VM定義データの移⾏ • 旧ホストでVMをシャッ トダウン • LVMを切り替え • 新ホストでVMを起動 •

    VM起動後の確認 ストレージ VM VM VM VM 論理切り替え 論理移設メンテナンス 同期された状態で旧ホストのVMをシャットダウンしてIOを停⽌すると、新ホストにも旧ホストと同じ VMデータが存在することになります。この状態で新ホストでDRBDを外しVMを起動します。
  30. 運⽤負荷を下げる⼯夫

  31. 運⽤負荷を下げる⼯夫 • 構築・検収⼿順のスクリプト化 • アラート対応の⾃動化 • NetBoxの活⽤ • Infrastructure as

    a Code化 • ⼀部⾃動テストの導⼊ • 監視設定周りのGitOps化 ⾃動化・省⼒化を進めやすい環境・フローづくりを推進 監視の仕組みを⾒直し、スクリプトにオペレーションの⼀部を⾏わせることで省⼒化ができます。 運⽤者の負荷が減って、サービスの改善に繋がるようなことを今後はもっとやりたいと思っています。
  32. さくらのVPS最新動向

  33. さくらのVPSをリニューアルしました! • ストレージがフルSSDになりました! • 初期費⽤がなくなりました! • 既存のお客様へのフォローもあります!(SSD化 or SSD容量増加) さくらのVPS

    リニューアル 新プラン提 供開始のお知らせ https://vps-news.sakura.ad.jp/ 2019/11/07/vps-plan-renewal/
  34. パケットフィルタ機能が追加されました! 新機能追加のお知らせ • コントロールパネル上から通信を許可するポートを設定可能 • VM上のiptables等のファイアウォールの設定が設定不要 • リリース後はデフォルトで有効なので困ったら設定を確認 https://vps-news.sakura.ad.jp/2019/06/27/vps-pf/ さくらのVPS

    「パケットフィルタ」提供開始のお知らせ
  35. スタートアップスクリプトが新しくなりました! 新機能追加のお知らせ • スタートアップスクリプトをユーザー同⼠で「シェア」 • ⾃分のスクリプトを「公開」可能! • 他のユーザーが公開したスクリプトを「利⽤」可能! https://vps-news.sakura.ad.jp/ 2020/03/10/vps-ss-share/

    さくらのVPS スタートアップスクリプトで スクリプトのシェア機能を追加しました CMSやゲームの開発者・コミュニティの⽅などには是⾮使って頂きたい機能で、構築スクリプトをシェ アすればお気に⼊りのソフトウェアをユーザーに簡単に広めることができます。
  36. SSH公開 登録機能が追加されました! 新機能追加のお知らせ SSH公開 を設置すれば、 初回ログインから公開 認証が可能に!! 設置 公開 認証

    でログイン https://vps-news.sakura.ad.jp/ 2020/04/02/vps-ssh-keygen/ さくらのVPS コントロールパネルで 「SSH公開 の登録」ができる機能 を追加しました
  37. DEMO スタートアップスクリプトのシェア機能とSSH公開 の追加機能について、簡単なデモを⾏いました。

  38. ⾮公式キャラクターVPSちゃんが登場! 今後も続々機能追加を予定しています! VPSちゃんの潜⼊⼤作戦! さくら社員のテレワーク環境を⾒る会 https://sakumaga.sakura.ad.jp/ entry/2020/04/01/120000

  39. • 「さくらのVPS」は独⾃実装と運⽤の⼯夫により、リーズナブルに 安定したサービスを提供している。 • サービス開始から10年が経過し、様々なノウハウを培ってきた⼀⽅、 VM数の増加や機器の⽼朽化に伴う運⽤上の課題が⾒えてきた。 • 今後は省⼒化・⾃動化を推進し、運⽤の負荷を低減するとともに 機能追加等を通してよりよいサービスづくりに注⼒していきたい。 まとめ

  40. 質疑応答 当⽇頂いた質問と回答の要約を紹介します。

  41. A. ございません。 パケットフィルタはWeb上で簡単にアクセス制御を⾏えるように設 計されていますので、既存のiptablesの設定がある場合は、対応し ているルールをコントロールパネルから追加いただくか、パケット フィルタを無効にしてVM上のiptablesをご利⽤頂くのが良いかと 思います。 Q1. パケットフィルタに既存のiptablesの設定を そのまま流し込める機能はあるか?

  42. A. 今の所ありません。 需要があるようであれば検討いたします。 Q2. オートスケールアップの機能追加の予定は あるか? Q3. 今後プランの拡充はあるか?上位スペック のプラン提供はあるか?

  43. A. はい。 キーペアを⼿元で⽣成、もしくは既に存在する公開 をコピー& ペーストいただく仕様になります。 より便利にお使いいただけるよう、機能追加を検討しております。 Q4. コントロールパネルから公開 を設置する 場合、⼿元の端末でssh-keygen等でキーペアの

    ⽣成を⾏う必要があるか?
  44. A. 特に変化は感じていません。 平常通りサービスを提供できていると思います。 以前からリモート勤務が制度上可能で積極的に利⽤していたという のもあるかも知れません。 Q5. リモート勤務に切り替わって運⽤負荷の⾯ で変化はあったか?

  45. © SAKURA Internet Inc. ありがとうございました