Cloud stackユーザ会大阪 運用Tips 20130802

13
CloudStack運用Tips KVM/VMwareマルチハイパーバイザ環境 第13回CloudStackユーザ会in 大阪 2013/8/2 KDDI北条

Transcript of Cloud stackユーザ会大阪 運用Tips 20130802

Page 1: Cloud stackユーザ会大阪 運用Tips 20130802

CloudStack運用Tips

KVM/VMwareマルチハイパーバイザ環境

第13回CloudStackユーザ会 in 大阪

KVM/VMwareマルチハイパーバイザ環境

2013/8/2

KDDI 北条

Page 2: Cloud stackユーザ会大阪 運用Tips 20130802

1. インスタンス、仮想ルータの稼働状況をログから把

握する

2. 仮想ルータに紐付くインスタンスを取得する

Tips

3. Management Serverが停止した場合でもホスト上

のインスタンス、仮想ルータを取得する

Page 3: Cloud stackユーザ会大阪 運用Tips 20130802

• Cloudplatform3.0.5+KVM6.x+ESXi5.x

• クラスターに待機系ホストを用意し、インスタンス、

仮想ルータの高可用性を実現

環境

VM VMRT RT

KVM

VM VMRT RT

ESXi

Primary Storage

Secondary Storage

Page 4: Cloud stackユーザ会大阪 運用Tips 20130802

• インスタンス、仮想ルータ自身の障害

1. インスタンス、仮想ルータの稼働状況把握

課題

対処

ホストが故障してダウンした時にインスタンスや

仮想ルータが停止した時間が分からない...

management-server.logのキーワードとDB検索

で検出

• インスタンス、仮想ルータ自身の障害

• ホスト障害に伴うインスタンス等の巻き添え障害

• 仮想ルータ障害に伴うインスタンスの巻き添え障害

ドメイン

ホスト

インスタンス

仮想ルータ isolated

shared

Page 5: Cloud stackユーザ会大阪 運用Tips 20130802

• インスタンス障害(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

Page 6: Cloud stackユーザ会大阪 運用Tips 20130802

• 仮想ルータ障害(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

Page 7: Cloud stackユーザ会大阪 運用Tips 20130802

• インスタンス、仮想ルータ障害(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ログ出力よりも数分間遅れた時刻で出力される

Page 8: Cloud stackユーザ会大阪 運用Tips 20130802

• ホスト障害(KVM)

1. インスタンス、仮想ルータの稼働状況把握

ログレベル キーワード

ERROR Host is down:

ホスト以外にSystemVM、SecondaryStorageが出力されるため、

hostテーブルからtype=Routingのみを抽出する。

• ホスト復旧(KVM)

ログレベル キーワード

DEBUG AgentManager-Handler

かつ

Agent status update

かつ

new status = Up

(同一行に“name = ホスト名;”が表示される)

Page 9: Cloud stackユーザ会大阪 運用Tips 20130802

• ホスト障害(VMware)

• ホスト復旧(VMware)

1. インスタンス、仮想ルータの稼働状況把握

vCenterログやSNMP Trapで。。。

vCenterログやSNMP Trapで。。。

Page 10: Cloud stackユーザ会大阪 運用Tips 20130802

• まとめ

KVMはmanagement-server.logだけで把握可能。

VMwareはvCenterログと組み合わせて精度を上げる。

1. インスタンス、仮想ルータの稼働状況把握

障害内容 KVM VMware

インスタンス、仮想ルータ障害 ○ △インスタンス、仮想ルータ障害 ○ △

インスタンス、仮想ルータ復旧 ○ ○

物理サーバ障害 ○ ×

物理サーバ復旧 ○ ×

Page 11: Cloud stackユーザ会大阪 運用Tips 20130802

2. 仮想ルータに紐付くインスタンスの取得

課題

対処

パブリックネットワーク(仮想ルータ)に紐づくイン

スタンスを検索するのが大変...

3つのテーブルを結合して一発検索

vm_instance nics networks

○ id

○ removed=NULL

○ instance_id

○ network_id ○ id

○ guest_type=

isolated

Page 12: Cloud stackユーザ会大阪 運用Tips 20130802

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;;;;

Page 13: Cloud stackユーザ会大阪 運用Tips 20130802

3. ホスト上のインスタンス/仮想ルータの取得

課題

対処

Management ServerやDBが停止した場合でも

ホスト上のマシンの状態を把握したい...

ハイパーバイザにログインしてコマンドを実行

expectでホスト一覧を読み込んで実行結果を

• KVM

# virsh list --all

• VMware

# vim-cmd vmsvc/getallvms

expectでホスト一覧を読み込んで実行結果を

取得するスクリプトを用意しておく