OpenStack検証環境構築・トラブルシューティング入門 -...

Post on 15-Jan-2015

4.333 views 4 download

description

講師:日本仮想化技術 遠山 日時:2014/08/07 タイトル:OpenStack検証環境構築・トラブルシューティング入門 概要: - 検証環境の構築 --- Nested Virtualization - 動作確認の方法 --- コマンド - トラブルシューティング

Transcript of OpenStack検証環境構築・トラブルシューティング入門 -...

OpenStack検証環境構築・トラブルシューティング入門

(2014年8月号)

日本仮想化技術株式会社 技術部 遠山 洋平

1

私について

名前: 遠山 洋平

出身: 宮城県大崎市

    VDI / 最近はOpenStack担当

マリオカート8にはまっています

[他の仕事]

– 日経Linux執筆・連載(2011年5月〜)

– 秀和システム「VMware 設計・運用・構築プロフェッショナルガイド」

– 技評「VMwareポケットリファレンス」2

私の休日

3

5%5%

90%

マリカ その他のゲーム 勉強

本日の内容

1. 検証環境の構築 – Nested Virtualization

2. 動作確認の方法 – コマンド

3. トラブルシューティング

4

OpenStack検証環境 構築について

5

OpenStackの検証

1. サーバーを必要台数用意 2. OpenStackデプロイ方法の検討 3. OpenStackの構築 4. 動作確認 5. 利用開始

6

OpenStackの検証

1. サーバーを必要台数用意 2. OpenStackデプロイ方法の検討 3. OpenStackの構築 4. 動作確認 5. 利用 6. 問題発生 7. デバッグ 8. 修正…

7

OpenStackの検証

1. サーバーを必要台数用意 2. OpenStackデプロイ方法の検討 3. OpenStackの構築 4. 動作確認 5. 利用開始

8

OpenStackの検証

1. サーバーを必要台数用意 2. OpenStackデプロイ方法の検討 3. OpenStackの構築 4. 動作確認 5. 利用開始

9

予算が…

既存ハードウェアを使いたい

Nested Virtualization

• 仮想化の上で仮想化 • 仮想化のマトリョーシカ?

10

注意

• Nested環境限定のバグや仕様にはまることも

• そもそも情報が少ない

11

障害例

• OpenStackをAll-in-one • Linux Kernelが応答なし

12

Nested Virtualizationの実際

構築方法について

13

LinuxでNested KVM

1. Linux KVM環境を構築 2. KVMホストでカーネルパラメータを変

更して再起動 3. Nested KVMのvirbr0を無効化

14

# virsh net-destroy default # virsh net-autostart default --disable

192.168.122.0/24

Ubuntu Server 14.04 LTS

$ sudo apt-get install kvm qemu-kvm libvirt-bin $ sudo -i # echo "options kvm_intel nested=1" >> /etc/modprobe.d/qemu-system-x86.conf # reboot !$ cat /sys/module/kvm_intel/parameters/nested  Y

15

Fedora 20 / CentOS 7

# yum install kvm qemu-kvm libvirt # systemctl enable libvirtd # systemctl start libvirtd # echo "options kvm_intel nested=1" >> /etc/modprobe.d/kvm-nested.conf # reboot !# cat /sys/module/kvm_intel/parameters/nested  Y

16

VMware ESXi 5.1以降

1. /etc/vmware/configに書く – 全体に適用

2. vmxファイルに書く(→参考)

– 仮想マシンごと – vhv.enable = "true" – 再起動で有効

17

全体に適用

# vi /etc/vmware/config (末尾に追記) vhv.enable = TRUE ESXi 5.0の場合 vhv.allow = TRUE ESXi 5.1以降の場合 # reboot or # /etc/init.d/hostd restart hostd stopped. hostd started.

18

動作イメージ

19

ESXi

Ubuntu

CentOSKVM

実は…

20

ESXi

Ubuntu

CentOSKVM

VMware Fusion

OS X

フラグの確認

# cat /proc/cpuinfo | grep vmx !flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase smep flags …(CPUコア分が標準出力される)

21

AMD: svm

私のテスト環境

22

テスト環境 その2

23

あとは構築するだけ

• テスト実行環境完成 • お好みのツールでデプロイ

– Juju/MAAS – Ubuntu OpenStack Installer – Mirantis Fuel – RDO Packstack – etc…

24

RDOとは

• RHELベースプラットフォームでOpenStackを利用するユーザーのためのコミュニティ

• OpenStackリポジトリーを提供 – RHEL,CentOS,Fedora etc..

• OpenStackをクイックインストール • Packstackインストーラ

– Puppet

25

RDOによる導入

• RHEL, CentOS 6.5以降, Fedora 20 • 下記コマンドを順に実行 • 単体構成なら30分程度でデプロイ

26

# setenforce permissive # yum -y install http://rdo.fedorapeople.org/rdo-release.rpm # yum install -y openstack-packstack # packstack --allinone (--provision-demo=n 推奨)

公式ドキュメント > http://goo.gl/FgbuVS http://openstack.redhat.com/Quickstart etc..

RDO Packstackの問題点

1. 事前設定 2. 日本語の情報があまりない

!!

3. All-in-one以外の構成は? – マルチノード – コンポーネントの要不要

27

RDO Packstackの問題点

1. 事前設定 2. 日本語の情報があまりない     →ないなら作っちゃえ

!3. All-in-one以外の構成は?

– マルチノード – コンポーネントの要不要

    →ないなら作っちゃえ28

現状可能な構成

• Havana – CentOS 6.5 Multi/1Node – Fedora 19 Multi/1Node

• Icehouse – CentOS 6.5 1Node (local-mode) – Fedora 20 Multi/1Node

29

CentOS 6.5でIcehouse

• Open vSwitchのエラーが毎秒 orz

30

GRE/VXLAN

CentOS 7でIcehouse

• RDO Packstackで構築する場合はパッチ充てが必要です。

–Bug 1117871

– 参考

• 手がかりがあるのでそのうち対応します。

31

OpenStackの状態を 確認する方法

32

OpenStackの動作状況を確認

• Dashboardで確認 • コマンドで確認

33

OpenStackの構成

コマンドのルール

• COMPONENT option-list • COMPONENT option list

- 一覧を表示 • COMPONENT option-show id • (もしくはCOMPONENT option-get id)

- 詳細情報を表示

35

とりあえず実行してみるコマンド

# nova hypervisor-list (登録されているハイパーバイザーの確認) # nova hypervisor-stats (ハイパーバイザーの空きリソースを確認) # nova-manage service list (Status enabledのコンポーネントStateが :-) である) # neutron agent-list (全てのコンポーネントがalive が :-) である) # ovs-vsctl show (ovsデータベーステーブルを確認) # openstack-status (色々まとめて)

36

dstatもステータス確認に便利

• # dstat -tcdn --top-io --top-cpu --output log.csv

37

コマンドを実行

DEMO38

OpenStackの 各コンポーネントについて

39

重要コンポーネント"Keystone"

• Identity(認証) サービス !

• 重要なコマンド – keystone token-get 認証情報表示

– keystone service-list サービス

40

Keystoneでエラー

• Keystoneのログ /var/log/keystone • ログレベルをあげる /etc/keystone • SQLサーバーログ • メッセージキューサービスのログ !

• Keystoneの設定 • 関連サービスの再起動

41

Glance

• Image(イメージ管理)サービス !

• glance image-list – イメージ一覧

• glance image-show "VM Name" – イメージ詳細

42

Glanceでエラー

• Glanceのログ /var/log/glance • ログレベルをあげる /etc/glance • SQLサーバーログ • メッセージキューサービスのログ !

• Glanceの設定 • 関連サービスの再起動

43

Nova

• OpenStackの中核 !

• nova service-list – サービス一覧

• nova hypervisor-list – ハイパーバイザー一覧

44

Nova-Compute

• Compute サービス !

• nova list • nova-manage vm list

- インスタンスの一覧

45

Novaでエラー

• Novaのログ /var/log/nova • ログレベルをあげる /etc/nova • SQLサーバーログ • メッセージキューサービスのログ !

• NovaやNova-Computeの設定 • 関連サービスの再起動

46

Neutron

• Networking サービス

• neutron agent-list

– エージェントの動作状況

• neutron agent-show id

– エージェントの詳細情報

• neutron net-list

– ネットワークのリスト

• neutron subnet-list

– サブネットのリスト47

Neutronでエラー

• Neutronのログ /var/log/neutron • ログレベルをあげる /etc/neutron • SQLサーバーログ • メッセージキューサービスのログ !

• Nova-Computeとネットワークノードの設定

• 関連サービスの再起動

48

コマンドを実行

DEMO49

トラブルシューティング編

• 私が構築時にはまったところ

50

Multi-NodeのOpenStack環境でネットワークがつながらない

(障害例1)

51

症例

• RDOでIcehouseを構築 1. Neutron以外全部 2. Neutronネットワークノード

• Fedora 20を利用 • Neutronネットワークを設定 • 正常に動作 • 再起動以降つながらない

52

原因

1. RabbitMQサーバーが起動してない 2. Neutronサーバーが起動しない 3. トンネル(br-tun)が作られない 4. ネットワークノードとコンピュートがつ

ながらない 5. インスタンスがネットワークにつなが

らない

53

コマンドを実行

# openstack-status … == neutron services == neutron-server: failed … == Support services == libvirtd:   active openvswitch: active dbus: active rabbitmq-server: failed …

54

解決方法

# systemctl start rabbitmq-server (rabbitmq-serverを起動) # watch systemctl status -l rabbitmq-server (起動状況を詳細確認) # systemctl start neutron-server.service (neutron-serverを起動) # watch systemctl status -l neutron-server.service (起動状況を詳細確認) # ovs-vsctl show (両ノードでtunnelが作られていることを確認)

55

インスタンスが だんだん不安定になってくる

(障害例2)

56

症例

• RDO PackstackでIcehouseを構築 • エラーなく構築完了 • インスタンスを起動 • Pingは可能 • SSHアクセス不安定 • インスタンス上でネットワークトラフィッ

クを発生するとタイムアウト or 切断 – wget /curl – SSH 57

原因

1. RDO Icehouse版の最近のバージョンはVXLANモードでデプロイされる

2. VXLANは50byteのヘッダを Ethernetフレームに付加する

3. Ethertnetフレームとして1550byte流そうとする

4. 50byte多くて通らないのでドロップされる

5. 不通58

GREは42byte

解決方法

• VMのインターフェイスのMTUを1450以下にする

• 方法 1. インスタンスにMTU 1450を設定 2. DHCP OptionでMTU 1450を配布

!※ GREモードでもMTU設定の変更を推奨します。

59

インスタンスにMTU 1450を設定

• カスタマイズ・スクリプトに記述

60

#cloud-config bootcmd: - ifconfig eth0 mtu 1450 - echo "ifconfig eth0 mtu 1450" > /etc/rc.local

DHCP OptionでMTU 1450を配布

• dhcp_agent.iniの設定を変更 !!

• dnsmasq.confの変更 !!

• サービスの再起動

61

# vi /etc/neutron/dhcp_agent.ini dnsmasq_config_file=/etc/dnsmasq.d/dnsmasq.conf

# systemctl restart neutron-dhcp-agent.service

# vi /etc/dnsmasq.d/dnsmasq.conf dhcp-option=26,1450

原因が分からないときは どうする?

ネットワークにつながらない!

62

まず実行するのは

ifconfig ip addr show

63

ネットワーク/コンピュートで実行

• br-int,br-tunなどがあることを確認

64

次に実行するのは

ovs-vsctl

65

ネットワークノードで実行

• GREの場合

66

コンピュートノードで実行

• GREの場合

67

Network Namespaceの確認

ip netns exec

68

Network Namespaceとは

• Linuxホストの中に仮想的なネットワーク環境を作成

• ネットワークの分離 • Linux Kernel 2.6.24以降でサポート

– RHEL 6.5+RDOのiproute2 – Fedora 16以降 – Ubuntu 12.04以降

69

OpenStackにおける利用法

• ip netns • 仮想ルーターと仮想DHCPサーバーを

確認 !!!

• ip netns exec qdhcp-xxxx command • ip netns exec qrouter-xxxx command

70

qrouterとqdhcp

• ip netnsで一覧 • ip netns execで内容確認 !

• qrouter – ルータをネットワーク接続すると出現

• qdhcp – DHCPサーバが作成されると出現 ※はじめてインスタンスが作られたタイミングでDHCPサーバーが作られる

71

qrouterの確認(1)

• ifconfigでIPアドレスを確認

72

qrouterの確認(2)

• qrouterからPing • 外部PCからqrouterにPing

73

qdhcpの確認(1)

• ifconfigでIPアドレスを確認

74

qdhcpの確認(2)

• qdhcpからインスタンスにPing

75

コマンドを実行

DEMO76

それでもつながらない

1. ログを見る

2. Floating IPを付け直し

3. クライアントのMTUを下げてみる

4. インスタンス中→外にPing

5. インスタンスのMTUを下げてみる

6. Open vSwitchエージェントの再起動

7. qrouterやqdhcpを確認

8. 各種設定の見直し

9. Neutronネットワークの作り直し77

以上です。 ありがとうございました

78

おまけ

79

インスタンスが 外部ネットワークにつながらない!

(障害例3)

80

症例

1. OpenStackホストにパッチ適用 2. 再起動 3. インスタンス起動 4. ネットワーク不通

81

udhcpc (v1.20.1) started Sending discover... Sending discover… Sending discover...

原因

1. インターフェイスの起動する前 2. Open vSwitchが起動 3. 必要なNICで疎通できず 4. 仮想ネットワークがつながらない

82

解決方法(一例)

• ip route delete

83

解決方法(一例)

• 問題解決

84

Ubuntuでの回避策

• /etc/network/interface

85

auto eth0 iface eth0 inet static pre-up service openvswitch-switch start || true address 192.168.0.9 netmask 255.255.255.0 auto br-ex iface br-ex inet static pre-up service openvswitch-switch start || true address 10.0.0.9 netmask 255.255.255.0 gateway 10.0.0.1 dns-nameservers 10.0.0.1 auto eth1 iface eth1 inet manual pre-up service openvswitch-switch start || true up ip address add 0/0 dev $IFACE up ip link set $IFACE up down ip link set $IFACE down

その他注意すべきポイント

86

PDFからのコピペに気をつけろ

• 手順通り実行 • エラー !

• PDFから複数行に渡る文字列をコピペする

 ↓ • 折り返し部分に謎のスペースが • コマンド失敗

87

Adobe Readerでは正常

88

Mac OS X プレビューからでは

89

改行が…

キーペアがインポートできない

• ssh-keygenコマンドで鍵を作成 • インポート実行 • エラー • 何回やってもエラー • 何回やっても(ry

90

原因はエディタの設定

• viエディタで開いてコピペ • .vimrc設定の問題

91

set formatoptions=q 自動改行オフ set textwidth=0 長い文章の自動折り返しをしない set linebreak ワードラップを有効

• linebreak オン !!!!

• linebreak オフ

92