$30 off During Our Annual Pro Sale. View Details »

ディスクレスハイパーバイザ 〜運用しやすいクラウドのために〜

ディスクレスハイパーバイザ 〜運用しやすいクラウドのために〜

サイバーエージェントにはプライベートクラウドチームがあり、15年以上前から自社でサーバを管理/運用しています。 プライベートクラウドを運用するにあたって、効率的な運用のために数多くの仕組みや自動化システムを開発しています。 このセッションではその中の1つであるディスクレスハイパーバイザについてお話しします。

Talked by 【サイバーエージェント】クラウドを支えるインフラ技術

whywaita
PRO

March 02, 2023
Tweet

More Decks by whywaita

Other Decks in Technology

Transcript

  1. ディスクレスハイパーバイザ


    〜運⽤しやすいクラウドのために〜
    株式会社サイバーエージェント CIU Platform div

    Nakanishi Kento @whywaita


    クラウドを⽀えるインフラ技術 @ CAMPHOR- HOUSE
    20 23
    /
    02
    /
    07

    View Slide

  2. Nakanisi Kento / whywaita
    • 2019年新卒⼊社 (4年⽬)


    • 業務: OpenStack / Kubernetes を使った新機能開発


    • IaaSの開発


    • OSS (myshoes) の開発

    & OSSを⽤いたマネージドサービス PdM


    • 趣味: ⾃宅インフラ / アニソン / ポーカー

    View Slide

  3. ディスクレスハイパーバイザ


    〜運⽤しやすいクラウドのために〜
    株式会社サイバーエージェント CIU Platform div

    Nakanishi Kento @whywaita


    クラウドを⽀えるインフラ技術 @ CAMPHOR- HOUSE
    20 23
    /
    02
    /
    07

    View Slide

  4. 4
    運⽤しやすいクラウド 🤔

    View Slide

  5. Cycloud
    5
    •Cy(berAgent)cloud


    •特徴


    •各種コンポーネントのAPI化


    •Cloud / Firewall / IPAddress / LoadBalancer / etc


    •性能に対するコストパフォーマンス (Public⽐)


    •運⽤者が「つらくない」プライベートクラウド

    View Slide

  6. プライベートクラウド概要図
    6
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage

    View Slide

  7. プライベートクラウド (OpenStack) の展開
    7
    L

    VM
    Users

    VM
    Users

    Service
    nova

    Components
    OpenStack

    View Slide

  8. プライベートクラウド (OpenStack) の展開
    8
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    k
    8
    s

    master
    Storage Storage
    KVM / Container
    Users

    Components

    View Slide

  9. 9

    View Slide

  10. 10
    沢⼭あります!

    View Slide

  11. 11
    さらに

    View Slide

  12. プライベートクラウド概要図
    12
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage

    View Slide

  13. プライベートクラウド概要図
    13
    L

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    Physical

    View Slide

  14. 14
    改めて考えると

    View Slide

  15. プライベートクラウド概要図
    15
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage

    View Slide

  16. プライベートクラウド概要図
    16
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage

    View Slide

  17. プライベートクラウド概要図
    17
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container

    View Slide

  18. 18
    管理が⼤変…

    View Slide

  19. 19
    運⽤「しにくい」!

    View Slide

  20. 20
    運⽤「しやすい」


    とは

    View Slide

  21. 運⽤「しやすい」クラウドのために
    21
    沢⼭のプロセスには?


    → Kubernetesを使いましょう!


    沢⼭の物理機材には?


    →「Bearman🐻」を使いましょう!

    View Slide

  22. プライベートクラウド概要図
    22
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage

    View Slide

  23. プライベートクラウド概要図
    23
    L
    8
    s


    master
    k
    8
    s

    master
    k
    8
    s

    master
    Storage Storage
    KVM / Container
    Users

    Components
    物理的なサーバは

    Kubernetes Node


    として管理

    View Slide

  24. 24
    $ kubectl get nodes | grep ^cn
    cn0001 Ready cn,node
    cn0002 Ready cn,node
    cn0003 Ready cn,node
    cn0004 Ready cn,node

    View Slide

  25. 25
    $ kubectl get nodes | grep ^cn
    cn0001 Ready cn,node
    cn0002 Ready cn,node
    cn0003 Ready cn,node
    cn0004 Ready cn,node
    1台で80Core
    512
    GB


    ※最近だと96Core
    1
    TB

    View Slide

  26. プライベートクラウド概要図
    26
    L

    neutron

    Container
    KVM / Container
    OpenStack

    Components
    Physical

    Components
    OpenStack⽤のコンポーネントは

    Podとして管理

    View Slide

  27. 27
    $ kubectl get pod -n openstack -o wide | grep nova-api
    nova-api-849dff6d5b-68z8h 2/2 Running 0 22d x.x.x.x k8smaster01
    nova-api-849dff6d5b-8d95z 2/2 Running 0 22d x.x.x.x k8smaster02
    nova-api-849dff6d5b-bp64w 2/2 Running 0 22d x.x.x.x k8smaster03
    nova-api-849dff6d5b-cxhwt 2/2 Running 0 22d x.x.x.x k8smaster04

    View Slide

  28. 28
    $ kubectl get pod -n openstack -o wide | grep nova-api
    nova-api-849dff6d5b-68z8h 2/2 Running 0 22d x.x.x.x k8smaster01
    nova-api-849dff6d5b-8d95z 2/2 Running 0 22d x.x.x.x k8smaster02
    nova-api-849dff6d5b-bp64w 2/2 Running 0 22d x.x.x.x k8smaster03
    nova-api-849dff6d5b-cxhwt 2/2 Running 0 22d x.x.x.x k8smaster04
    複数ノードに渡るプロセスを


    ⼀括管理可能!

    View Slide

  29. プライベートクラウド概要図
    29
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container
    nova

    neutron

    Container
    OpenStack

    Controller

    Container
    other

    Container

    View Slide

  30. プライベートクラウド概要図
    30
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage

    View Slide

  31. 31
    🙌

    View Slide

  32. プライベートクラウド概要図
    32
    L
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    Components
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage

    View Slide

  33. 33

    View Slide

  34. 34
    ⼿作業の管理は無理!🙅

    View Slide

  35. Bearman 🐻
    35
    •Django製 Baremetal 管理 (manager) ツール


    •物理サーバの管理


    •UUID / hostname


    •Flavor (起動するOSの指定)


    •ComputeNode, Cinder, Software LoadBalancer


    •Network (VLAN, IPMI, IP Address)

    View Slide

  36. 36
    〜ここから⻑いやつ〜

    View Slide

  37. Bearman
    37

    View Slide

  38. Bearmanによる在庫管理 - 登録編
    38

    View Slide

  39. Bearmanによる在庫管理 - 登録編
    39
    1
    . iPXEによるブート (CentOS)


    2
    . autorun.service が起動


    3
    . BIOS / NICのファームウェアバージョンチェック and アップ


    4
    . lldpd によって近傍スイッチ情報をチェック


    5
    . dmidecode コマンドでHW情報をチェック


    6
    . Bearmanに登録 / IPMI設定


    7
    . CentOS シャットダウン!

    View Slide

  40. Bearman / Node
    40
    Bearmanの管理下にある物理サーバ群

    View Slide

  41. Bearmanによる在庫管理 - 登録編
    41
    Node
    初回ブート (iPXE)
    PXEブートによって起動

    →iPXEに切替

    View Slide

  42. Bearmanによる在庫管理 - 登録編
    42
    CentOS
    1段階⽬OS
    autorun.service
    メタ処理⽤の


    autorun.service


    起動

    View Slide

  43. Bearmanによる在庫管理 - 登録編
    43
    CentOS
    autorun.service
    新規登録⽤


    register.sh 取得 & 実⾏
    object storage
    1段階⽬OS

    View Slide

  44. Bearmanによる在庫管理 - 登録編
    44
    1
    . iPXEによるブート (CentOS)


    2
    . autorun.service が起動


    3
    . BIOS / NICのファームウェアバージョンチェック and アップ


    4
    . lldpd によって近傍スイッチ情報をチェック


    5
    . dmidecode コマンドでHW情報をチェック


    6
    . Bearmanに登録 / IPMI設定


    7
    . CentOS シャットダウン!
    register.sh の職務

    View Slide

  45. Bearmanによる在庫管理 - 登録編
    45
    CentOS
    autorun.service
    Bearmanに登録


    ※正確にはregister.shで取得した
    bearman-cli (by Go)
    Bearman
    1段階⽬OS
    register.sh
    https://bearman-grpc.example.com/

    View Slide

  46. Bearmanによる在庫管理 - 登録編
    46
    CentOS
    autorun.service
    Bearman
    1段階⽬OS
    register.sh
    新規にNodeとして保存
    Bearman DB
    Node (UUID: xxx)

    View Slide

  47. Bearman / Node
    47

    View Slide

  48. Bearman / Node
    48

    View Slide

  49. Bearmanによる在庫管理 - 登録編
    49
    CentOS
    autorun.service
    Bearman
    1段階⽬OS
    register.sh
    ②BearmanがIPMI IPを


    アサイン
    IPman
    ①IP払い出し

    View Slide

  50. Bearmanによる在庫管理 - 登録編
    50
    CentOS
    autorun.service
    Bearman
    1段階⽬OS
    register.sh
    アサインされた情報通り


    IPMI情報を設定
    IPman
    BMC

    View Slide

  51. Bearmanによる在庫管理 - 登録編
    51
    CentOS
    autorun.service
    Bearman
    1段階⽬OS
    register.sh
    IPMI情報を設定し


    シャットダウン
    IPman
    BMC

    View Slide

  52. Bearmanによる在庫管理 - 登録編
    52
    CentOS
    autorun.service
    Bearman
    1段階⽬OS
    register.sh
    IPman
    BMC
    • Node情報はBearmanから登録


    • IPMIにてNodeに疎通可能

    View Slide

  53. Bearmanによる在庫管理 - 起動編
    53

    View Slide

  54. Bearman / Pro
    fi
    le
    54
    Bearmanにて起動するOSの定義

    View Slide

  55. Bearmanによる在庫管理 - 起動編
    55
    Real OS (Ubuntu)
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    kexec
    kernel=

    initramfs=

    append=

    初回ブート 1段階⽬OS 2段階⽬OS

    View Slide

  56. Bearmanによる在庫管理 - 起動編
    56
    Real OS (Ubuntu)
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    kexec
    kernel=

    initramfs=

    append=

    初回ブート 1段階⽬OS 2段階⽬OS
    2段階⽬には


    ⾃由なOSを選択可能

    View Slide

  57. Bearman / Pro
    fi
    le
    57

    View Slide

  58. Bearman / Pro
    fi
    le
    58
    2段階⽬OS⽤


    cmdline

    View Slide

  59. Bearman / Pro
    fi
    le
    59
    2段階⽬OS⽤


    インストールスクリプト

    View Slide

  60. Bearmanによる在庫管理 - 起動編
    60
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    初回ブート 1段階⽬OS
    Cephからダウンロード
    kexec.sh

    View Slide

  61. Bearmanによる在庫管理 - 起動編
    61
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    初回ブート 1段階⽬OS
    ⾃分が起動するべき


    OS情報をBearmanから


    取得
    kexec.sh
    Bearman

    View Slide

  62. Bearmanによる在庫管理 - 起動編
    62
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    初回ブート 1段階⽬OS
    ⾃分が起動するべき


    OS情報をBearmanから


    取得
    kexec.sh
    Bearman
    https://bearman-grpc.example.com/ipxe/${uuid}

    View Slide

  63. Bearmanによる在庫管理 - 起動編
    63
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    初回ブート 1段階⽬OS
    kexec.sh
    Bearman
    https://bearman-grpc.example.com/ipxe/${uuid}
    $ dmidecode -s “system-uuid”


    にて決定

    View Slide

  64. Bearmanによる在庫管理 - 起動編
    64
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    初回ブート 1段階⽬OS
    kexec.sh
    Bearman
    • 順番にエンドポイントを叩く


    • ${uuid}/pro
    fi
    le


    • 起動⽤のpro
    fi
    le


    • ${uuid}/detail


    • IPアドレス / bond
    0
    IPアドレスなど


    • ${uuid}/installed


    • インストール完了をBearmanに通知

    View Slide

  65. Bearman / Baremetal
    65
    Bearmanにて起動したサーバ群

    View Slide

  66. Bearmanによる在庫管理 - 起動編
    66
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    初回ブート 1段階⽬OS
    kexec.sh
    Bearman
    • 順番にエンドポイントを叩く


    • ${uuid}/pro
    fi
    le


    • 起動⽤のpro
    fi
    le


    • ${uuid}/detail


    • IPアドレス / bond
    0
    IPアドレスなど


    • ${uuid}/installed


    • インストール完了をBearmanに通知

    View Slide

  67. Bearman / Baremetal
    67
    Bearmanにて起動したサーバ群

    View Slide

  68. Bearmanによる在庫管理 - 起動編
    68
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    初回ブート 1段階⽬OS
    kexec.sh
    Bearman
    • 順番にエンドポイントを叩く


    • ${uuid}/pro
    fi
    le


    • 起動⽤のpro
    fi
    le


    • ${uuid}/detail


    • IPアドレス / bond
    0
    IPアドレスなど


    • ${uuid}/installed


    • インストール完了をBearmanに通知

    View Slide

  69. Bearman / Baremetal
    69
    Bearmanにて起動したサーバ群
    DEPLOY_START

    DEPLOYING

    UNRECOVERABLE_ERROR


    など

    View Slide

  70. Bearmanによる在庫管理 - 起動編
    70
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    初回ブート 1段階⽬OS
    kexec.sh
    Bearman
    このNodeが起動すべき


    OS情報などを取得

    View Slide

  71. Bearmanによる在庫管理 - 起動編
    71
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    kexec
    kernel=

    initramfs=

    append=

    初回ブート 1段階⽬OS
    kexecのパラメータ組⽴

    View Slide

  72. Bearmanによる在庫管理 - 起動編
    72
    Real OS (Ubuntu)
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    kexec
    kernel=

    initramfs=

    append=

    初回ブート 1段階⽬OS 2段階⽬OS

    View Slide

  73. Bearmanによる在庫管理 - 起動編
    73
    Real OS (Ubuntu)
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    kexec
    kernel=

    initramfs=

    append=

    初回ブート 1段階⽬OS 2段階⽬OS
    ユーザ⽤の


    2段階⽬OSが


    起動成功🎉

    View Slide

  74. 74
    〜ここからざっくりのやつ〜

    View Slide

  75. Bearmanによる在庫管理 - 起動編
    75
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    kexec
    kernel=

    initramfs=

    append=

    初回ブート 1段階⽬OS

    View Slide

  76. Bearmanによる在庫管理 - 起動編
    76
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    kexec
    kernel=

    initramfs=

    append=

    初回ブート 1段階⽬OS
    在庫管理DBに登録


    必要な情報の収集

    View Slide

  77. Bearmanによる在庫管理 - 起動編
    77
    Compute Node
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    kexec
    kernel=

    initramfs=

    append=

    初回ブート 1段階⽬OS 2段階⽬OS
    メモリ上にOSを展開

    View Slide

  78. Bearmanによる在庫管理 - 起動編
    78
    Compute Node
    iPXE
    kernel=

    initramfs=

    append=

    CentOS
    autorun.service
    kexec
    kernel=

    initramfs=

    append=

    初回ブート 1段階⽬OS 2段階⽬OS
    その上にユーザのVM


    ストレージはiSCSI経由
    Users VM
    Users VM
    Users VM

    View Slide

  79. 79
    オンメモリに


    ハイパーバイザを展開すると


    なにがいいのか?

    View Slide

  80. 平和な⽇常 (Bearmanがない⼈⽣)
    80
    Compute Node
    Users VM
    Users VM
    Users VM
    Compute Node
    Users VM
    Users VM
    Users VM
    Compute Node
    Users VM
    Users VM
    Users VM
    Compute Node
    設定ファイル 設定ファイル 設定ファイル 設定ファイル

    View Slide

  81. 81
    平和な⽇常は


    いつか終わりを遂げる

    View Slide

  82. 悲しい事件 (Bearmanがない⼈⽣)
    82
    Compute Node
    Users VM
    Users VM
    Users VM
    Compute Node
    Users VM
    Users VM
    Users VM
    Compute Node
    Users VM
    Users VM
    Users VM
    Compute Node
    設定ファイル 設定ファイル 設定ファイル 設定ファイル
    😇
    🔥
    🔥
    🔥
    🔥 障害発⽣ 🔥


    🔥 強制シャットダウン 🔥

    View Slide

  83. 悲しい事件 (Bearmanがない⼈⽣)
    83
    Compute Node
    Users VM
    Users VM
    Users VM
    Compute Node
    Users VM
    Users VM
    Users VM
    Compute Node
    Users VM
    Users VM
    Users VM
    Compute Node
    設定ファイル 設定ファイル 設定ファイル 設定ファイル
    😇
    🔥
    🔥
    🔥
    設定ファイル救出失敗!!!


    復帰が⼤変 😇

    View Slide

  84. 84
    ユーザの皆さん、対応お願いします!

    View Slide

  85. 85

    View Slide

  86. 謝ったあとは
    86
    •壊れたサーバの調査して……


    •再起動しよう


    •勝⼿に悪さしないように各所チェックして……


    •ログを調査して……


    •OSが壊れてる、再インストールだ……


    •設定ファイルをもう⼀回作ろう……

    View Slide

  87. 87
    でも、Bearmanがあれば

    View Slide

  88. 平和な⽇常 (Bearmanがある⼈⽣)
    88
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    設定ファイル 設定ファイル 設定ファイル 設定ファイル

    View Slide

  89. 平和な⽇常 (Bearmanがある⼈⽣)
    89
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    設定ファイル 設定ファイル 設定ファイル 設定ファイル
    (そもそも!)


    オンメモリ = いつ消えても再現可能

    View Slide

  90. 90
    平和な⽇常は


    いつか終わりを遂げる

    View Slide

  91. 悲しい事件 (Bearmanがある⼈⽣)
    91
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    設定ファイル 設定ファイル 設定ファイル 設定ファイル
    😇
    🔥
    🔥
    🔥
    🔥 障害発⽣ 🔥


    🔥 強制シャットダウン 🔥

    View Slide

  92. 悲しい事件 (Bearmanがある⼈⽣)
    92
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    設定ファイル 設定ファイル 設定ファイル 設定ファイル
    😇
    🔥
    🔥
    (なんと!)


    ⾃動でUser VMはマイグレーション
    Users VM
    Users VM
    Users VM

    View Slide

  93. 悲しい事件 (Bearmanがある⼈⽣)
    93
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory
    Users VM
    Users VM
    Users VM
    Compute Node onMemory Compute Node onMemory
    設定ファイル 設定ファイル 設定ファイル 設定ファイル
    (さらに!)


    Bearmanによって簡単再構築!
    Users VM
    Users VM
    Users VM

    View Slide

  94. 94
    あれ、なんかあった?

    View Slide

  95. Bearmanがあれば⼈⽣順⾵満帆
    95
    •壊れたサーバのOSはオンメモリなので⾃動消滅


    •スクリプト/WebUI から簡単に再起動


    •ハードウェアが壊れてないかは起動前にチェック


    •元々のOSと別なので悪さする要素なし


    •問題無ければWebからポチで復活!

    View Slide

  96. Bearman のコンセプト
    96
    •No 現地作業


    •ハードウェア構成の違いはソフトウェアで吸収


    •利⽤者視点


    •CLIツールでシステムを利⽤可能


    •管理者視点


    •データはDjango Adminで 閲覧/管理 可能

    View Slide

  97. Bearman のメリット
    97
    •運⽤時の確認事項が⼤きく削減


    •適切に電源 / 光ケーブルを配線し電源ポチで 🙆


    •設定に不備があった場合はSlack通知で⽬視確認不要


    •トラシュもフル機能のbashを使って可能


    •IPMI情報などが⾃動で登録、Web画⾯から参照可


    •チームメンバー誰でも気軽に物理利⽤

    View Slide

  98. プライベートクラウド概要図
    98
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    Load

    Blancer
    Storage

    View Slide

  99. プライベートクラウド概要図
    99
    L
    2
    Overlay Network (VXLAN on IP CLOS)
    Compute
    Node
    Compute
    Node
    Compute
    Node
    k
    8
    s


    master
    k
    8
    s

    master
    Firewall
    KVM / Container
    Users

    VM
    Users

    VM
    Users

    Service
    nova

    neutron

    Container
    KVM / Container
    OpenStack

    Controller

    Container
    other

    Container
    User

    Components
    OpenStack

    Components
    Physical

    Components
    Storage
    Load

    Blancer
    🐻 🐻 🐻

    View Slide

  100. ディスクレスハイパーバイザ
    100
    •物理サーバ = Kubernetes Nodeに


    •OpenStack on Kubernetes


    •OSを全てオンメモリに展開することで障害からの
    復旧を簡易化


    •Bearmanと連携し簡単安全にNodeを復活


    •ストレージは全てNetwork経由

    View Slide

  101. まとめ
    101
    •CyberAgentのプライベートクラウドでは、

    既存の問題点をエンジニアリングで解決


    •Kubernetes / Bearman 🐻


    •巨⼤なインフラを⾃分のソフトウェアで制御できる


    •(たぶん)国内でもあまりない事例


    •より多くの問題を解決し価値を提供していきます 💪

    View Slide