yahoo! japan meetup #8 (インフラ技術カンファレンス)lt②
TRANSCRIPT
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
OpenStack関連セッション
1
OpenStack Summit Barcelona 2016 参加報告
神尾皓 立見祐介
Ansibleによるおっちょこちょいの運用自動化
高橋拓也
4年間、OpenStackをデプロイしてみた(ry
北田駿也
OpenStack on Kubernetes
木下裕太
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
2017年1月30日
2
クラウドオペレーション 北田 駿也(27)
4年間、OpenStackのデプロイをしてみたので、
今までのデプロイ方法の移り変わりや、
苦労、教訓、など軽く話す(LT)。
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
目次
3
• 基礎知識編: OpenStackとは?
• OpenStack 1年目: 手動デプロイ、途中からコンピュートノードのChef化
• OpenStack 2年目: コントローラ群のChef化、だがしかし、、
• OpenStack 3年目: コントローラ群のAnsible化、だがしかし、、
• OpenStack 4年目: コントローラ群のChef化再び
• OpenStack 今年: Kubernetes化
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
基礎知識編: OpenStack
とは?
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
OpenStackとは?
= OSS= IaaSを提供するマイクロサービス群= ヤフーのプライベートクラウド
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
1クラスタ
コンピュートノード群 サーバ50 ~ 500台コントローラ群 サーバ6~50台
コンピュートノード
OpenStackをデプロイするということ
66
認証サービス
ディスクイメージサービス
ネットワークサービス コンピュートサービス
ダッシュボード
ボリュームサービス
ダッシュボード
認証サービス
ディスクイメージサービス
ネットワークサービス コンピュートサービス
ボリュームサービス
データベースデータベース
メッセージングサービスメッセージングサービス
コンピュートノードコンピュートノードコンピュートノードコンピュートノードコンピュートノード
Virtual MachineVirtual Machine
Virtual MachineVirtual Machine
Virtual Machine
etcetc
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
1クラスタ
コンピュートノード群 サーバ50 ~ 500台コントローラ群 サーバ6~50台
コンピュートノード
OpenStackをデプロイするということ
77
認証サービス
ディスクイメージサービス
ネットワークサービス コンピュートサービス
ダッシュボード
ボリュームサービス
ダッシュボード
認証サービス
ディスクイメージサービス
ネットワークサービス コンピュートサービス
ボリュームサービス
データベースデータベース
メッセージングサービスメッセージングサービス
コンピュートノードコンピュートノードコンピュートノードコンピュートノードコンピュートノード
Virtual MachineVirtual Machine
Virtual MachineVirtual Machine
Virtual Machine
etcetc
これら全てのサーバに、パッケージインストール、設定ファイル配置、デーモン起動、カーネル設定、監視設定などを行う
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
利用しているデプロイツール
• 手• なんでもできる万能ツール• 心を込めて各サーバをセットアップする事ができる
• Chef• 各サーバの構成情報はChefサーバに集約される• 各サーバはその構成情報に従ってセットアップされる
• Ansible• 各サーバの構成情報は手元ファイルで管理される• SSHごしに各サーバのセットアップやオペレートができる
8
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
OpenStack 1年目
手動デプロイ、途中からコンピュートノードのChef化
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
OpenStackの手動デプロイ
コントローラ群: 10台程度
ー>熟練の人なら余裕
コンピュートノード群: 数百台
ー>みんなでがんばって構築。。。10
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
OpenStackの手動デプロイ
コントローラ群: 10台程度
ー>熟練の人なら余裕
コンピュートノード群: 数百台
ー>みんなでがんばって構築。。。11
Chef (チラッ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
コンピュートノードのChef化
12
ChefServer
Keystone
Glance
Cinder
Neutron
Nova
Horizon
ChefWorkstation
ComputeCompute
ComputeCompute
ComputeCompute
Compute
その他クラスタ
その他クラスタ
CookbookやRole設定をアップロード
Chefでセットアップ
オペレータ
手動でセットアップ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
1年目の教訓
• 手動デプロイ• 再現性がなく、作成者によって品質がマチマチ
• 心がこもるが、さばける台数に限界がある
• Chefでデプロイ• 再現性があり、誰でもデプロイ可能• 大量のサーバを簡単にデプロイ
13
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
OpenStack 2年目
コントローラ群のChef化、だがしかし、、
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
コントローラ群のChef化
全コンポーネントのパッケージ、設定ファイルをChefで配置できるようになった!
15
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
コントローラ群のChef化
16
ChefServer
Keystone
Glance
Cinder
Neutron
Nova
Horizon
ChefWorkstation
ComputeCompute
ComputeCompute
ComputeCompute
Compute
その他クラスタ
その他クラスタ
CookbookやRole設定をアップロード
Chefでセットアップ
オペレータ
コントローラ群のChef化
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
だがしかし、、
1. Chefでデプロイしたサービスが動かない1. コンポーネントが多く、設定すべき変数やロール
も多く複雑化していた2. 複雑性が手動とたいして変わらない
2. 手動で動くところまで修正するはめに
3. 最終的に手動デプロイに落ち着いた。。
17
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
2年目の教訓
• マイクロサービス群をChefでデプロイするのは大変• デプロイ対象の種類が多く、設定すべきRole、設定値も増えデプロイ方法が複雑化してしまった。
• 複雑化したデプロイフローは流行らない• デプロイフローも定義できると楽そう
18
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
2年目の教訓
• マイクロサービス群をChefでデプロイするのは大変• デプロイ対象の種類が多く、設定すべきRole、設定値も増えデプロイ方法が複雑化してしまった。
• 複雑化したデプロイフローは流行らない• デプロイフローも定義できると楽そう
19
Ansible (チラッ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
OpenStack 3年目
コントローラ群のAnsible化、だがしかし、、
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
コントローラ群のAnsible化
21
ChefServer
Keystone
Glance
Cinder
Neutron
Nova
Horizon
ChefWorkstation
ComputeCompute
ComputeCompute
ComputeCompute
Compute
その他クラスタ
その他クラスタ
CookbookやRole設定をアップロード
Chefでセットアップ
オペレータ
コントローラ群のAnsible化
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
だがしかし、、、
1. Ansibleで設定を巻いた後に、手動で変更を加えられることが何度かあった。。次のAnsible実行時まで気づず、そのまま上書きされることも。。
2. Ansibleの実行忘れで、設定の反映漏れが何度か。。
22
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
3年目の教訓
• Ansibleでデプロイフローを制御• マイクロサービス群でもデプロイが簡単
• しかし、Ansibleを実行するのは人なので、• 実行し忘れによる変更漏れや、• 古い変更のデプロイなど、が発生
• デプロイはすべて自動化すべき
23
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
3年目の教訓
• Ansibleでデプロイフローを制御• マイクロサービス群でもデプロイが簡単
• しかし、Ansibleを実行するのは人なので、• 実行し忘れによる変更漏れや、• 古い変更のデプロイなど、が発生
• デプロイはすべて自動化すべき
24
Chef (チラッ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
OpenStack 4年目
コントローラ群のChef化再び
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
すべてをChef化し、定期デプロイへ
2626
ChefServer
Keystone
Glance
Cinder
Neutron
Nova
Horizon
ComputeCompute
ComputeCompute
ComputeCompute
Compute
その他クラスタ
その他クラスタ
GithubにPushされたCookbookやRoleを自動アップロード
初回デプロイ後は、定期的にデプロイされる
オペレータ
Github
Jenkins
ステージング
定期的なテスト
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
Chef Before(2年前) After(現在)
Role, CookBookの設計思想が変わった!
Before• 各マイクロサービスに対してそれぞれのRoleを定義
• 変数もそれぞれのRoleで細かく定義
• > 設定が複雑化
After• 1クラスタに対して1Roleを定義 (AnsibleのInventryFileに近い)
• 変数はなるべく自動生成
• > 設定が簡略化
27
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
4年目の教訓
• すべてをChef化し、定期デプロイ• 初回デプロイは少し大変• その後の変更はGithubにPushしたら、自動でデプロイされるので楽
28
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
まとめ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
デプロイツール・まとめ
• 手• なんでもできる万能ツール(人によってまちまち)• デプロイできる台数に限界がある
• Chef• 初回デプロイは少し大変• 初回デプロイ後の変更は自動化できる
• Ansible• デプロイフローを組み立てられる• 実行し忘れや、実行間違いが怖い
30
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
4年間の教訓・まとめ
31
デプロイを自動化すると楽!
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
4年間の教訓・まとめ
32
デプロイを自動化すると楽!
現在のデプロイ規模: 65000VM on 40クラスタ
= 1900 コントローラノード
+ 5200 コンピュートノード
を20人で運用
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
OpenStack 今年
Kubernetes化 つづく
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
ご清聴ありがとうございました!
34
• 基礎知識編: OpenStackとは?
• OpenStack 1年目: 手動デプロイ、途中からコンピュートノードのChef化
• OpenStack 2年目: コントローラ群のChef化、だがしかし、、
• OpenStack 3年目: コントローラ群のAnsible化、だがしかし、、
• OpenStack 4年目: コントローラ群のChef化再び
• OpenStack 今年: Kubernetes化
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
ありがとうございました!