Slide 1

Slide 1 text

ディスクレスハイパーバイザ 〜運⽤しやすいクラウドのために〜 株式会社サイバーエージェント CIU Platform div 
 Nakanishi Kento @whywaita クラウドを⽀えるインフラ技術 @ CAMPHOR- HOUSE 20 23 / 02 / 07

Slide 2

Slide 2 text

Nakanisi Kento / whywaita • 2019年新卒⼊社 (4年⽬) • 業務: OpenStack / Kubernetes を使った新機能開発 • IaaSの開発 • OSS (myshoes) の開発 
 & OSSを⽤いたマネージドサービス PdM • 趣味: ⾃宅インフラ / アニソン / ポーカー

Slide 3

Slide 3 text

ディスクレスハイパーバイザ 〜運⽤しやすいクラウドのために〜 株式会社サイバーエージェント CIU Platform div 
 Nakanishi Kento @whywaita クラウドを⽀えるインフラ技術 @ CAMPHOR- HOUSE 20 23 / 02 / 07

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Cycloud 5 •Cy(berAgent)cloud •特徴 •各種コンポーネントのAPI化 •Cloud / Firewall / IPAddress / LoadBalancer / etc •性能に対するコストパフォーマンス (Public⽐) •運⽤者が「つらくない」プライベートクラウド

Slide 6

Slide 6 text

プライベートクラウド概要図 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

Slide 7

Slide 7 text

プライベートクラウド (OpenStack) の展開 7 L 
 VM Users 
 VM Users 
 Service nova 
 Components OpenStack 


Slide 8

Slide 8 text

プライベートクラウド (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

Slide 9

Slide 9 text

9

Slide 10

Slide 10 text

10 沢⼭あります!

Slide 11

Slide 11 text

11 さらに

Slide 12

Slide 12 text

プライベートクラウド概要図 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

Slide 13

Slide 13 text

プライベートクラウド概要図 13 L 
 neutron 
 Container KVM / Container OpenStack 
 Controller 
 Container other 
 Container User 
 Components Physical 


Slide 14

Slide 14 text

14 改めて考えると

Slide 15

Slide 15 text

プライベートクラウド概要図 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

Slide 16

Slide 16 text

プライベートクラウド概要図 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

Slide 17

Slide 17 text

プライベートクラウド概要図 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

Slide 18

Slide 18 text

18 管理が⼤変…

Slide 19

Slide 19 text

19 運⽤「しにくい」!

Slide 20

Slide 20 text

20 運⽤「しやすい」 とは

Slide 21

Slide 21 text

運⽤「しやすい」クラウドのために 21 沢⼭のプロセスには? → Kubernetesを使いましょう! 沢⼭の物理機材には? →「Bearman🐻」を使いましょう!

Slide 22

Slide 22 text

プライベートクラウド概要図 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

Slide 23

Slide 23 text

プライベートクラウド概要図 23 L 8 s master k 8 s 
 master k 8 s 
 master Storage Storage KVM / Container Users 
 Components 物理的なサーバは 
 Kubernetes Node として管理

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

プライベートクラウド概要図 26 L 
 neutron 
 Container KVM / Container OpenStack 
 Components Physical 
 Components OpenStack⽤のコンポーネントは 
 Podとして管理

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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 複数ノードに渡るプロセスを ⼀括管理可能!

Slide 29

Slide 29 text

プライベートクラウド概要図 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

Slide 30

Slide 30 text

プライベートクラウド概要図 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

Slide 31

Slide 31 text

31 🙌

Slide 32

Slide 32 text

プライベートクラウド概要図 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

Slide 33

Slide 33 text

33

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

Bearman 🐻 35 •Django製 Baremetal 管理 (manager) ツール •物理サーバの管理 •UUID / hostname •Flavor (起動するOSの指定) •ComputeNode, Cinder, Software LoadBalancer •Network (VLAN, IPMI, IP Address)

Slide 36

Slide 36 text

36 〜ここから⻑いやつ〜

Slide 37

Slide 37 text

Bearman 37

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

Bearmanによる在庫管理 - 登録編 39 1 . iPXEによるブート (CentOS) 2 . autorun.service が起動 3 . BIOS / NICのファームウェアバージョンチェック and アップ 4 . lldpd によって近傍スイッチ情報をチェック 5 . dmidecode コマンドでHW情報をチェック 6 . Bearmanに登録 / IPMI設定 7 . CentOS シャットダウン!

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

Bearmanによる在庫管理 - 登録編 43 CentOS autorun.service 新規登録⽤ register.sh 取得 & 実⾏ object storage 1段階⽬OS

Slide 44

Slide 44 text

Bearmanによる在庫管理 - 登録編 44 1 . iPXEによるブート (CentOS) 2 . autorun.service が起動 3 . BIOS / NICのファームウェアバージョンチェック and アップ 4 . lldpd によって近傍スイッチ情報をチェック 5 . dmidecode コマンドでHW情報をチェック 6 . Bearmanに登録 / IPMI設定 7 . CentOS シャットダウン! register.sh の職務

Slide 45

Slide 45 text

Bearmanによる在庫管理 - 登録編 45 CentOS autorun.service Bearmanに登録 ※正確にはregister.shで取得した bearman-cli (by Go) Bearman 1段階⽬OS register.sh https://bearman-grpc.example.com/

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

Bearman / Node 47

Slide 48

Slide 48 text

Bearman / Node 48

Slide 49

Slide 49 text

Bearmanによる在庫管理 - 登録編 49 CentOS autorun.service Bearman 1段階⽬OS register.sh ②BearmanがIPMI IPを アサイン IPman ①IP払い出し

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

Bearmanによる在庫管理 - 登録編 51 CentOS autorun.service Bearman 1段階⽬OS register.sh IPMI情報を設定し シャットダウン IPman BMC

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

Bearmanによる在庫管理 - 起動編 55 Real OS (Ubuntu) iPXE kernel= … initramfs= … append= … CentOS autorun.service kexec kernel= … initramfs= … append= … 初回ブート 1段階⽬OS 2段階⽬OS

Slide 56

Slide 56 text

Bearmanによる在庫管理 - 起動編 56 Real OS (Ubuntu) iPXE kernel= … initramfs= … append= … CentOS autorun.service kexec kernel= … initramfs= … append= … 初回ブート 1段階⽬OS 2段階⽬OS 2段階⽬には ⾃由なOSを選択可能

Slide 57

Slide 57 text

Bearman / Pro fi le 57

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

Bearman / Pro fi le 59 2段階⽬OS⽤ インストールスクリプト

Slide 60

Slide 60 text

Bearmanによる在庫管理 - 起動編 60 iPXE kernel= … initramfs= … append= … CentOS autorun.service 初回ブート 1段階⽬OS Cephからダウンロード kexec.sh

Slide 61

Slide 61 text

Bearmanによる在庫管理 - 起動編 61 iPXE kernel= … initramfs= … append= … CentOS autorun.service 初回ブート 1段階⽬OS ⾃分が起動するべき OS情報をBearmanから 取得 kexec.sh Bearman

Slide 62

Slide 62 text

Bearmanによる在庫管理 - 起動編 62 iPXE kernel= … initramfs= … append= … CentOS autorun.service 初回ブート 1段階⽬OS ⾃分が起動するべき OS情報をBearmanから 取得 kexec.sh Bearman https://bearman-grpc.example.com/ipxe/${uuid}

Slide 63

Slide 63 text

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” にて決定

Slide 64

Slide 64 text

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に通知

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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に通知

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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に通知

Slide 69

Slide 69 text

Bearman / Baremetal 69 Bearmanにて起動したサーバ群 DEPLOY_START 
 DEPLOYING 
 UNRECOVERABLE_ERROR など

Slide 70

Slide 70 text

Bearmanによる在庫管理 - 起動編 70 iPXE kernel= … initramfs= … append= … CentOS autorun.service 初回ブート 1段階⽬OS kexec.sh Bearman このNodeが起動すべき OS情報などを取得

Slide 71

Slide 71 text

Bearmanによる在庫管理 - 起動編 71 iPXE kernel= … initramfs= … append= … CentOS autorun.service kexec kernel= … initramfs= … append= … 初回ブート 1段階⽬OS kexecのパラメータ組⽴

Slide 72

Slide 72 text

Bearmanによる在庫管理 - 起動編 72 Real OS (Ubuntu) iPXE kernel= … initramfs= … append= … CentOS autorun.service kexec kernel= … initramfs= … append= … 初回ブート 1段階⽬OS 2段階⽬OS

Slide 73

Slide 73 text

Bearmanによる在庫管理 - 起動編 73 Real OS (Ubuntu) iPXE kernel= … initramfs= … append= … CentOS autorun.service kexec kernel= … initramfs= … append= … 初回ブート 1段階⽬OS 2段階⽬OS ユーザ⽤の 2段階⽬OSが 起動成功🎉

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

Bearmanによる在庫管理 - 起動編 75 iPXE kernel= … initramfs= … append= … CentOS autorun.service kexec kernel= … initramfs= … append= … 初回ブート 1段階⽬OS

Slide 76

Slide 76 text

Bearmanによる在庫管理 - 起動編 76 iPXE kernel= … initramfs= … append= … CentOS autorun.service kexec kernel= … initramfs= … append= … 初回ブート 1段階⽬OS 在庫管理DBに登録 必要な情報の収集

Slide 77

Slide 77 text

Bearmanによる在庫管理 - 起動編 77 Compute Node iPXE kernel= … initramfs= … append= … CentOS autorun.service kexec kernel= … initramfs= … append= … 初回ブート 1段階⽬OS 2段階⽬OS メモリ上にOSを展開

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

79 オンメモリに ハイパーバイザを展開すると なにがいいのか?

Slide 80

Slide 80 text

平和な⽇常 (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 設定ファイル 設定ファイル 設定ファイル 設定ファイル

Slide 81

Slide 81 text

81 平和な⽇常は いつか終わりを遂げる

Slide 82

Slide 82 text

悲しい事件 (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 設定ファイル 設定ファイル 設定ファイル 設定ファイル 😇 🔥 🔥 🔥 🔥 障害発⽣ 🔥 🔥 強制シャットダウン 🔥

Slide 83

Slide 83 text

悲しい事件 (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 設定ファイル 設定ファイル 設定ファイル 設定ファイル 😇 🔥 🔥 🔥 設定ファイル救出失敗!!! 復帰が⼤変 😇

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

85

Slide 86

Slide 86 text

謝ったあとは 86 •壊れたサーバの調査して…… •再起動しよう •勝⼿に悪さしないように各所チェックして…… •ログを調査して…… •OSが壊れてる、再インストールだ…… •設定ファイルをもう⼀回作ろう……

Slide 87

Slide 87 text

87 でも、Bearmanがあれば

Slide 88

Slide 88 text

平和な⽇常 (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 設定ファイル 設定ファイル 設定ファイル 設定ファイル

Slide 89

Slide 89 text

平和な⽇常 (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 設定ファイル 設定ファイル 設定ファイル 設定ファイル (そもそも!) オンメモリ = いつ消えても再現可能

Slide 90

Slide 90 text

90 平和な⽇常は いつか終わりを遂げる

Slide 91

Slide 91 text

悲しい事件 (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 設定ファイル 設定ファイル 設定ファイル 設定ファイル 😇 🔥 🔥 🔥 🔥 障害発⽣ 🔥 🔥 強制シャットダウン 🔥

Slide 92

Slide 92 text

悲しい事件 (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

Slide 93

Slide 93 text

悲しい事件 (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

Slide 94

Slide 94 text

94 あれ、なんかあった?

Slide 95

Slide 95 text

Bearmanがあれば⼈⽣順⾵満帆 95 •壊れたサーバのOSはオンメモリなので⾃動消滅 •スクリプト/WebUI から簡単に再起動 •ハードウェアが壊れてないかは起動前にチェック •元々のOSと別なので悪さする要素なし •問題無ければWebからポチで復活!

Slide 96

Slide 96 text

Bearman のコンセプト 96 •No 現地作業 •ハードウェア構成の違いはソフトウェアで吸収 •利⽤者視点 •CLIツールでシステムを利⽤可能 •管理者視点 •データはDjango Adminで 閲覧/管理 可能

Slide 97

Slide 97 text

Bearman のメリット 97 •運⽤時の確認事項が⼤きく削減 •適切に電源 / 光ケーブルを配線し電源ポチで 🙆 •設定に不備があった場合はSlack通知で⽬視確認不要 •トラシュもフル機能のbashを使って可能 •IPMI情報などが⾃動で登録、Web画⾯から参照可 •チームメンバー誰でも気軽に物理利⽤

Slide 98

Slide 98 text

プライベートクラウド概要図 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

Slide 99

Slide 99 text

プライベートクラウド概要図 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 🐻 🐻 🐻

Slide 100

Slide 100 text

ディスクレスハイパーバイザ 100 •物理サーバ = Kubernetes Nodeに •OpenStack on Kubernetes •OSを全てオンメモリに展開することで障害からの 復旧を簡易化 •Bearmanと連携し簡単安全にNodeを復活 •ストレージは全てNetwork経由

Slide 101

Slide 101 text

まとめ 101 •CyberAgentのプライベートクラウドでは、 
 既存の問題点をエンジニアリングで解決 •Kubernetes / Bearman 🐻 •巨⼤なインフラを⾃分のソフトウェアで制御できる •(たぶん)国内でもあまりない事例 •より多くの問題を解決し価値を提供していきます 💪