cloud stackユーザ会大阪 運用tips 20130802
TRANSCRIPT
CloudStack運用Tips
KVM/VMwareマルチハイパーバイザ環境
第13回CloudStackユーザ会 in 大阪
KVM/VMwareマルチハイパーバイザ環境
2013/8/2
KDDI 北条
1. インスタンス、仮想ルータの稼働状況をログから把
握する
2. 仮想ルータに紐付くインスタンスを取得する
Tips
3. Management Serverが停止した場合でもホスト上
のインスタンス、仮想ルータを取得する
• Cloudplatform3.0.5+KVM6.x+ESXi5.x
• クラスターに待機系ホストを用意し、インスタンス、
仮想ルータの高可用性を実現
環境
VM VMRT RT
KVM
VM VMRT RT
ESXi
Primary Storage
Secondary Storage
• インスタンス、仮想ルータ自身の障害
1. インスタンス、仮想ルータの稼働状況把握
課題
対処
ホストが故障してダウンした時にインスタンスや
仮想ルータが停止した時間が分からない...
management-server.logのキーワードとDB検索
で検出
• インスタンス、仮想ルータ自身の障害
• ホスト障害に伴うインスタンス等の巻き添え障害
• 仮想ルータ障害に伴うインスタンスの巻き添え障害
ドメイン
ホスト
インスタンス
仮想ルータ isolated
shared
◎
◎
• インスタンス障害(KVM)
1. インスタンス、仮想ルータの稼働状況把握
ログレベル キーワード
WARN Unable to actually stop VM[User|インスタンス名]
WARN Unable to restart VM[User|インスタンス名]
DEBUG [User|インスタンス名] is stopped on the host.
Proceeding to release resource held.
• インスタンス復旧(KVM)
Proceeding to release resource held.
かつ
AgentManager-Handler または HA-Worker
ログレベル キーワード
DEBUG Start completed for VM VM[User|インスタンス名]
DEBUG and realState = Running
• 仮想ルータ障害(KVM)
1. インスタンス、仮想ルータの稼働状況把握
ログレベル キーワード
WARN Unable to actually stop VM[DomainRouter|仮想ルータ名]
WARN Unable to restart VM[DomainRouter|仮想ルータ名]
• 仮想ルータ復旧(KVM)
ログレベル キーワード
DEBUG Start completed for VM VM[DomainRouter|仮想ルータ名]
DEBUG Expunged VM[DomainRouter|仮想ルータ名]
DEBUG and realState = Running
• インスタンス、仮想ルータ障害(VMware)
1. インスタンス、仮想ルータの稼働状況把握
ログレベル キーワード
DEBUG DirectAgent
かつ
Detecting a new state but couldn't find a old state so
adding it to the changes
• インスタンス、仮想ルータ復旧(VMware)
ログレベル キーワード
DEBUG cs state = Running and realState = Running
vCenterログ出力よりも数分間遅れた時刻で出力される
• ホスト障害(KVM)
1. インスタンス、仮想ルータの稼働状況把握
ログレベル キーワード
ERROR Host is down:
ホスト以外にSystemVM、SecondaryStorageが出力されるため、
hostテーブルからtype=Routingのみを抽出する。
• ホスト復旧(KVM)
ログレベル キーワード
DEBUG AgentManager-Handler
かつ
Agent status update
かつ
new status = Up
(同一行に“name = ホスト名;”が表示される)
• ホスト障害(VMware)
• ホスト復旧(VMware)
1. インスタンス、仮想ルータの稼働状況把握
vCenterログやSNMP Trapで。。。
vCenterログやSNMP Trapで。。。
• まとめ
KVMはmanagement-server.logだけで把握可能。
VMwareはvCenterログと組み合わせて精度を上げる。
1. インスタンス、仮想ルータの稼働状況把握
障害内容 KVM VMware
インスタンス、仮想ルータ障害 ○ △インスタンス、仮想ルータ障害 ○ △
インスタンス、仮想ルータ復旧 ○ ○
物理サーバ障害 ○ ×
物理サーバ復旧 ○ ×
2. 仮想ルータに紐付くインスタンスの取得
課題
対処
パブリックネットワーク(仮想ルータ)に紐づくイン
スタンスを検索するのが大変...
3つのテーブルを結合して一発検索
vm_instance nics networks
○ id
○ removed=NULL
○ instance_id
○ network_id ○ id
○ guest_type=
isolated
2. 仮想ルータに紐付くインスタンスの取得
selectvvi.id,vvi.name,dm.name,vvi.state,ht.tag
fromvm_instance vviinner join(
selectnc2.instance_id
fromnics nc2
whereEXISTS(
selectnc.network_id
from
${VMID}に仮想ルータのidを
入れて検索
fromvm_instance vileft join nics nc on ( vi.id = nc.instance_id )left join networks nw on (nc.network_id = nw.id)
wherenw.guest_type = 'Isolated'andvi.id = '${VMID}'andnc2.network_id = nc.network_idandvi.removed is null
)) inson(ins.instance_id = vvi.id)
inner join domain dm on(vvi.domain_id = dm.id)left join host_tags ht on (vvi.host_id = ht.host_id)
wherevvi.id != '${VMID}'andht.tag is not nulland vvi.type = 'User'and vvi.removed is null;;;;
3. ホスト上のインスタンス/仮想ルータの取得
課題
対処
Management ServerやDBが停止した場合でも
ホスト上のマシンの状態を把握したい...
ハイパーバイザにログインしてコマンドを実行
expectでホスト一覧を読み込んで実行結果を
• KVM
# virsh list --all
• VMware
# vim-cmd vmsvc/getallvms
expectでホスト一覧を読み込んで実行結果を
取得するスクリプトを用意しておく