[OpenStack Days Tokyo 2015] Zabbixを用いたOCPベアメタル監視環境構築の自働化2. 2
松井 暢之(まつい のぶゆき)
TIS株式会社
コーポレート本部 戦略技術センター
~2003
2003~2008
2009
2010~2012
2013~
現場PJでアーキテクト兼モデラー兼プログラマ兼…を歴任
基盤技術センター(現戦略技術センター)で不芳PJの火消しに奔走
全社生産性向上の企画策定に従事
オープンでエッジな技術を活用した事業企画に従事
Cloud Orchestrator “CloudConductor?” の企画開発とOSS化開始
http://cloudconductor.org
nbyk.matsui
nmatsui
nbyk.matsui
@n_matsui
3. 3
TIS株式会社 (TIS Inc.) 昭和46年(1971年)4月28日
231億円
6,077人 (2014年4月1日現在)
代表取締役会長 兼 社長 桑野 徹
1,483億円 (2013年3月期単体)
社 名 設 立
資 本 金
従 業 員
代 表 者
売 上 高
TISの会社概要
経済産業省情報セキュリティ監査企業台帳登録
経済産業省システム監査企業台帳登録
届出電気通信事業者
情報通信ネットワーク安全?信頼性対策実施登録
プライバシーマーク使用許諾事業者
ISO9001
ISO/IEC27001
ISO/IEC20000
ISO14001
東京都一般建設業 ( 電気通信工事 )
CMM (Capability Maturity model ) レベル3評定
拠 点 認定資格
ITホールディングスグループのTISは、SI?受
託開発に加え、データセンターやクラウドなど
サービス型のITソリューションを多数用意して
います。同時に、中国?ASEAN地域を中心と
したグローバルサポート体制も整え、金融、製
造、流通/サービス、公共、通信など様々な業
界で3,000社以上のビジネスパートナーとして、
お客様の事業の成長に貢献しています。
九州支社
名古屋????????????
浜松オフィス
松本オフィス
長野オフィス
北京駐在員事務所
ホーチミン駐在員事務所
ジャカルタ駐在員事務所
バンコク駐在員事務所
東京第1センター
東京第2センター
東京第3センター
名古屋センター
師勝センター
大阪センター
心斎橋gDC
天津IDC 心斎橋gDC-EX GDC御殿山
6. ? OpenStackに代表されるOSSのクラウドOSの隆盛?
? 利用しているプライベートクラウド環境はVMWare vSphere/vCloudが最も多く31%
検証中?計画中もあわせるとOpenStackはVMWare vSphere/vCloudに比肩する
? OpenStackの利用企業は2013年と比べてほぼ倍増
6
活動の背景
? RightScale, "Cloud Computing Trends: 2014 State of the Cloud Survey“,
2014-04, http://assets.rightscale.com/uploads/pdfs/RightScale-2014-State-of-the-Cloud-Report.pdf
12. ? Open Compute Project準拠のベアメタル:Quanta F03A, F03C
? Quanta社製のOCP準拠サーバ
? F03Cは1筐体に3ノード、F03Aは1筐体に4ノード格納されるが、
今回はF03Cを1ノード、F03Aを1ノード用いる
12
オープンなハードウェア
F03C F03A
15. ? OCPベアメタルへのZabbix Server & Zabbix Proxy自動構築
? ESXi上のCobblerを用い、OCPベアメタルへZabbix ServerやZabbix Proxyを自動構築
15
検証①:Zabbix Server & Zabbix Proxy自動構築
LOM
F03A
LOM
F03C
Cobbler
VMWare vSphere ESXi
10.10.10.0/24
DHCPd
TFTPd
HTTPd
PXEBoot
OS Image
Repository
Mirror
kickstart
template
?Zabbix Package
?Zabbix Install Script
IPMI:.12IPMI:.15
?CentOS6.6イメージ
構築前
LOM LOM
Cobbler
VMWare vSphere ESXi
IPMI:.12IPMI:.15
DHCPd
TFTPd
HTTPd
PXEBoot
OS Image
Repository
Mirror
kickstart
template
OS:.XX OS:.YY
PXEBootされたOSのIPアドレスは
DHCPで動的に払い出し
Zabbix
Server
Zabbix
Proxy
ベアメタル上にCentOS6.6を自動インストールし、
Zabbix Server(Zabbix Proxy)をプロビジョニング
構築後
16. ? Zabbix Server構築時の処理の流れ(Zabbix Proxyも同様)
1. Cobblerのkickstartにより、Zabbixサーバ構築スクリプト実行
(cobbler/kickstart/ZabbixServer-Cent6-x86_64.ks & cobbler/snippets/pre_install_zabbix_server)
2. Zabbix Serverセットアップスクリプトが自動起動
(scheduler/caller_server.py)
① Zabbixサーバのホスト名取得
② テンプレートの割り当て(template/zbx_export_templates.xml)
③ アクションの設定
i. IPMI情報登録用ミニOSの自動登録時に起動するアクション
ii. IPMIインタフェース更新時に起動するアクション
iii. Zabbix Agentインタフェース更新時に起動するアクション
iv. Zabbix Proxy構築時に起動するアクション
16
検証①:Zabbix Server & Zabbix Proxy自動構築
17. ? Zabbixを用いたベアメタル自動監視
? ZabbixへベアメタルのH/W監視を自動登録
? プロビジョニングされたOSの監視を、H/Wと対応付けて自動登録
? 設定したルールに従い、適切なZabbix Proxyへ自動振り分け
17
検証②:Zabbixを用いたベアメタル自動監視
Cobbler
VMWare vSphere ESXi
PXEBoot
OS Image
Repository
Mirror
kickstart
template
Zabbix
Server
Zabbix
Proxy
?HW登録用ミニOSイメージ
?実OSイメージ
検証用のベアメタルが足りなかったため、
Zabbix ServerとProxyは仮想環境に構築
LOM LOM
F03A F03C
監視登録前
Cobbler
VMWare vSphere ESXi
PXEBoot
OS Image
Repository
Mirror
kickstart
template
Zabbix
Server
Zabbix
Proxy
LOM LOM
実OS 実OS
プロビジョニング時に、IPMIと
対応付けてOSやM/Wを監視登録
Pahse2(実OSプロビジョニング)
LOM
Cobbler
VMWare vSphere ESXi
PXEBoot
OS Image
Repository
Mirror
kickstart
template
Zabbix
Server
LOM
Zabbix
ProxyミニOS ミニOS
登録された監視対象ノードをルールに
従って適切なProxyへ振り分け
Pahse1(NWと電源へ接続)
HW登録用のミニOSを自動起動し
IPMI情報をZabbixへ登録
実OSが起動していなくても
IPMI経由でH/W監視は実行される
H/WとOSを対応付け
統合監視
18. ? Phase1:H/W接続時に対象ノードのIPMI情報をZabbixへ自動登録
18
検証②:Zabbixを用いたベアメタル自動監視
ベアメタル Cobbler Zabbix Server Zabbix Proxy
ミニOSでPXEブート
ミニOS起動
Zabbix Agent導入
Zabbix Agentが
自動登録情報を送付
ベアメタルを監視対象
ホストとして追加
IPMI IPアドレスの
取得処理起動
ミニOSに同梱された
dcmitoolでIPMI情報取得
IPMIインタフェースの登録
Agent自動登録機能
HostMetadata内に”OCP STARTER”である事のフラグを
埋め込む
SSH Agent機能
適切なProxyを割り当て
IPMI監視情報の送付先
IPアドレス更新
IPMI監視テンプレート割当
トラッパーアクション追加
Agentインタフェース削除
Zabbix Agentでリモートコマンド実行
IPMI監視開始
Agent自動登録時のアクション
により一連の処理を自動化
IPMI経由でH/W情報
を送信
19. ? ミニOSのZabbix Agent自動登録時に起動するアクション
(scheduler/caller_action.py “UpdateIpmiInterfaces” <client hostname>)
1. SSH Agentのテンプレートを割り当て、対象サーバのIPMIアドレスを取得
2. 対象サーバをZabbixへ登録しIPMI情報を変更
3. IPMIのログイン設定情報を変更
4. ホストグループへ割り当て
5. IPMIより取得した製品名から、適切なテンプレートを割り当て
6. スケジューラを呼び出し、適切なZabbix Proxyを割り当て
7. 不要になったSSH Agentテンプレートを削除
8. 不要になったミニOSのZabbix Agentインタフェースを削除
19
検証②:Zabbixを用いたベアメタル自動監視
21. ? Phase2:プロビジョニングする実OSの監視設定をZabbixへ自動登録
21
検証②:Zabbixを用いたベアメタル自動監視
ベアメタル Cobbler Zabbix Server Zabbix Proxy
実OSでPXEブート
実OS起動
Zabbix Agent導入
Zabbix Agentが
実OSの情報を送付
zabbix_trapperで
ホスト名とIPを受信
Agentインタフェース登録
監視テンプレート割当
ホスト名から登録済み
H/W情報と対応付け
zabbix_sender
自身のホスト名と実OSのIPアドレスをZabbix Serverへ送信
trapper受信時のアクション
により一連の処理を自動化
割り当てられた
Proxyを確認
Zabbix API呼び出し
OS監視情報の送付先
IPアドレス更新
OSやミドルウェアの監視開始
Zabbix AgentがOSや
MWの監視情報を送信
22. ? プロビジョニングする実OSの監視設定をZabbixへ自動登録する流れ
1. Cobblerのkickstartにより、Zabbix Agent構築スクリプト実行
(cobbler/kickstart/<target os kickstart.ks> & cobbler/snippets/pre_install_zabbix_agent)
2. Zabbix Agentセットアップスクリプトが自動起動
(scheduler/client_startup/zabbix_client_startup.py <server ipaddress> <zabbix server username>
<zabbix server password> <host name> <client ipaddress>)
1. Zabbix APIを呼び出し、自身に割り当てられたZabbix Proxyを取得
2. 実OSの監視情報の送信先を書き換え
3. zabbix_senderを用いて実OSの情報をzabbix_trapperに送信
3. zabbix_trapperに実OSの情報が着信した際に起動するアクション
(scheduler/caller_action.py “UpdateAgentInterfaces” <client hostname>)
1. Zabbix Agentインタフェースを当該ホストへ追加登録
2. Zabbix Agnetインタフェースへ適切なテンプレートを割り当て
22
検証②:Zabbixを用いたベアメタル自動監視
26. ? 今回の検証で用いた各種スクリプト類
? Baremetal AutoDiscovery Tool for Zabbix(近日公開予定)
https://github.com/tech-sketch/baremetal_ad
? Python 2.6系
? Apache License Version2
26
ソースコードの公開
30. ? Infrastructure Design Patterns as Code
? インフラ?運用のノウハウを依存関係を整理してパターン化
? パターンを機械可読な形式で集積し、集合知化
30
CloudConductorの特徴①
CloudFormation Template
Chef Cookbook
ServerSpec TestCode
…
31. ? Everyone, EveryTime & EveryCloud
? 必要なパターンを組み合わせて誰でも最適なインフラ設計を獲得
? クラウドを跨りデータを遍在化させ、どのクラウドでもシステムを再現
(現在はAWSとOpenStack)
31
CloudConductorの特徴②
Packerで生成したGlance Image
Heat APIを利用
32. ? OnDemand Service Level
? 「負荷分散」「災害対策」「ログ分析」等の非機能要件は最初から作りこまず、必要に
なった段階で適用したシステムへ乗り換え
32
CloudConductorの特徴③
36. ? クラウド間フェイルオーバーさせたシステムのスペック
? 通常系:OpenStack Icehouse上のVM(シングルノード)
? 災対系:Amazon EC2 東京リージョン上のVM(シングルノード)
? システムの再構築に要した時間 = 6分53秒
36
CloudConductorを用いた災害対策実証実験
CPU 2コア
RAM 4GB
Storage 20GB
CPU 4コア
RAM 7.5GB
Storage 2×40GB
時刻 経過時間 イベント
7:05:50 00:00 災害発生(人為的にNICをダウン)
7:06:05 00:15 CloudConductorによる障害検知
7:06:21 00:31 CloudConductorによるシステム再構築開始
7:12:43 06:53 システム復旧