Upload
virtualtech-japan-inc
View
2.309
Download
13
Embed Size (px)
DESCRIPTION
1. 検証環境の構築 --- Nested Virtualization 2. 動作確認の方法 --- コマンドによる監視 3. トラブルシューティング --- 障害と解決例
Citation preview
OpenStack検証環境構築・トラブルシューティング入門
(2014年8月号)
日本仮想化技術株式会社 技術部 遠山 洋平
1
私について
名前: 遠山 洋平
出身: 宮城県大崎市
VDI / 最近はOpenStack担当
[他の仕事]
– 日経Linux執筆・連載(2011年5月〜)
– 秀和システム「VMware 設計・運用・構築プロフェッショナルガイド」
– 技評「VMwareポケットリファレンス」
2
本日の内容
1. 検証環境の構築 – Nested Virtualization
2. 動作確認の方法 – コマンドによる監視
3. トラブルシューティング – 障害と解決例
3
OpenStack検証環境 構築について
4
OpenStackの検証
1. サーバーを必要台数用意 2. OpenStackデプロイ方法の検討 3. OpenStackの構築 4. 動作検証 5. 利用開始
5
OpenStackの検証
1. サーバーを必要台数用意 2. OpenStackデプロイ方法の検討 3. OpenStackの構築 4. 動作検証 5. 利用 6. 問題発生 7. デバッグ 8. 修正…
6
OpenStackの検証
1. サーバーを必要台数用意 2. OpenStackデプロイ方法の検討 3. OpenStackの構築 4. 動作検証 5. 利用開始
7
OpenStackの検証
1. サーバーを必要台数用意 2. OpenStackデプロイ方法の検討 3. OpenStackの構築 4. 動作検証 5. 利用開始
8
予算が…
既存ハードウェアを使いたい
Nested Virtualization
• 仮想化の上で仮想化 • 仮想化のマトリョーシカ?
9
Nested 利用上の注意
• Nested環境限定のバグや仕様にはまることも
• そもそも情報が少ない
10
Nested Virtualizationの実際
構築方法について
11
LinuxでNested KVM
1. Linux KVM環境を構築 2. KVMホストでカーネルパラメータを変
更して再起動 3. Nested KVMのvirbr0を無効化
12
# 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
13
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
14
VMware ESXi 5.1以降
1. /etc/vmware/configに書く – 全体に適用
2. vmxファイルに書く(→参考)
– 仮想マシンごと – vhv.enable = "true" – 再起動で有効
15
全体に適用
# 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.
16
動作イメージ
17
ESXi
Ubuntu
CentOSKVM
実は…
18
ESXi
Ubuntu
CentOSKVM
VMware Fusion
OS X
L3
L2
L1
L0
フラグの確認
# 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コア分が標準出力される)
19
AMD: svm
私のテスト環境
20
テスト環境 その2
21
あとは構築するだけ
• テスト実行環境完成 • お好みのツールでデプロイ
– Juju/MAAS – Ubuntu OpenStack Installer – Mirantis Fuel – RDO Packstack – etc…
22
RDOとは
• RHELベースプラットフォームでOpenStackを利用するユーザーのためのコミュニティ
• OpenStackリポジトリを提供 – RHEL,CentOS,Fedora etc..
• OpenStackをクイックインストール • Packstackインストーラ
– Puppet
23
RDO Packstackによる導入
• RHEL, CentOS 6.5以降, Fedora 20 • 下記コマンドを順に実行 • 単体構成なら30分程度でデプロイ
24
# 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以外の構成は? – マルチノード – コンポーネントの要不要
25
RDO Packstackの問題点
1. 事前設定 2. 日本語の情報があまりない →ないなら作っちゃえ
!3. All-in-one以外の構成は?
– マルチノード – コンポーネントの要不要
→ないなら作っちゃえ26
現状可能な構成
• Havana – CentOS 6.5 (1Node/Multi)
• Icehouse – CentOS 6.5 (1Node/Multi) – Fedora 20 (1Node/Multi)
27
CentOS/RHEL7でIcehouse
• RDO Packstackで構築する場合はパッチ充てが必要です。
–Bug 1117871
– 参考
28
OpenStackの状態を 確認する方法
S t a t u s
29
OpenStackの動作状況を確認
• OpenStack Dashboardで確認 • コマンドで確認
30
OpenStackの構成
コマンドのルール
• COMPONENT option-list • COMPONENT option list
- 一覧を表示 • COMPONENT option-show id • (もしくはCOMPONENT option-get id)
- 詳細情報を表示
32
とりあえず実行してみるコマンド
# nova hypervisor-list (登録されているハイパーバイザーが出力されていればOK) # nova hypervisor-stats (ハイパーバイザーの空きリソース) # nova-manage service list (Status enabledのコンポーネントStateが :-) であればOK) # neutron agent-list (全てのコンポーネントがalive が :-) であればOK) # ovs-vsctl show (ovsデータベーステーブルを確認) # openstack-status (色々まとめて)
33
dstatもステータス確認に便利
• # dstat -tcdn --top-io --top-cpu --output log.csv
34
dstatの結果をグラフに
• 動作イメージ – dstat2graphs - dbstudy.info
– example
• ソース – sh2/dstat2graphs - GitHub
35
コマンドを実行
DEMO-1
36
OpenStackの 各コンポーネントについて
37
重要コンポーネント"Keystone"
• Identity(認証) サービス !
• keystone token-get – 認証情報表示
• keystone service-list – サービス
38
Glance
• Image(イメージ管理)サービス !
• glance image-list – イメージ一覧
• glance image-show "VM Name" – イメージ詳細
39
Nova
• OpenStackの中核(心臓部) !
• nova service-list – サービス一覧
• nova hypervisor-list – ハイパーバイザー一覧
40
Nova-Compute
• Compute(リソース提供)サービス !
• nova list • nova-manage vm list
- インスタンスの一覧
41
Neutron
• Networking サービス
• neutron agent-list – エージェントの動作状況
• neutron net-list – ネットワークのリスト
• neutron subnet-list – サブネットのリスト
42
エラーが発生したら
• ログを確認
– /var/log/COMPONENT
• ログレベルをあげる
– /etc/COMPONENT
• 設定ファイルを確認
• SQLサーバーログ
• メッセージキューサービスのログ
• netstatコマンドで待受けポートの確認
• 関連サービスの再起動43
コマンドを実行
DEMO-2
44
トラブルシューティング編
• 私が構築時にはまったところ
45
Multi-NodeのOpenStack環境でネットワークがつながらない
(障害例1)
46
症例
• RDO PackstackでIcehouseを構築 1. Neutron以外全部 2. Neutronネットワークノード
• Fedora 20を利用 • Neutronネットワークを設定 • 正常に動作 • 再起動以降つながらない
47
原因
1. RabbitMQサーバーが起動してない 2. Neutronサーバーが起動しない 3. トンネル(br-tun)が作られない 4. ネットワークノードとコンピュートがつ
ながらない 5. インスタンスがネットワークにつなが
らない
48
コマンドを実行
# openstack-status … == neutron services == neutron-server: failed … == Support services == libvirtd: active openvswitch: active dbus: active rabbitmq-server: failed …
49
解決方法
# 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が作られていることを確認)
50
インスタンスが だんだん不安定になってくる
(障害例2)
51
症例
• RDO PackstackでIcehouseを構築
• エラーなく構築完了
• インスタンスを起動
• Pingは可能
• SSHアクセス不安定
• インスタンス上でネットワークトラフィックを発生するとタイムアウト or 切断
– wget /curl
– SSH52
原因
1. RDO Icehouse版の最近のバージョンはVXLANモードでデプロイされる
2. VXLANは50byteのヘッダを Ethernetフレームに付加する
3. Ethertnetフレームとして1550byte流そうとする
4. 50byte多くて通らないのでドロップされる
5. 不通53
GREは42byte
解決方法(一例)
• VMのインターフェイスのMTUを1450以下にする
• 方法 1. インスタンスにMTU 1450を設定 2. DHCP OptionでMTU 1450を配布
!※ GREモードでもMTU設定の変更を推奨します。
54
インスタンスにMTU 1450を設定
• カスタマイズ・スクリプトに記述
55
#cloud-config bootcmd: - ifconfig eth0 mtu 1450 - echo "ifconfig eth0 mtu 1450" > /etc/rc.local
DHCP OptionでMTU 1450を配布
• dhcp_agent.iniの設定を変更 !!
• dnsmasq.confの変更 !!
• サービスの再起動
56
# 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
→参考
原因が分からないときは どうする?
ネットワークにつながらない!
57
まず実行するのは
ifconfig ip addr show
58
ネットワーク/コンピュートで実行
• br-int,br-tunなどがあることを確認
59
次に実行するのは
ovs-vsctl
60
ネットワークノードで実行
• GREの場合
61
コンピュートノードで実行
• GREの場合
62
Network Namespaceの確認
ip netns exec
63
Network Namespaceとは
• Linuxホストの中に仮想的なネットワーク環境を作成
• ネットワークの分離 • Linux Kernel 2.6.24以降でサポート
– RHEL6.x+RDOリポジトリのiproute2 – Fedora 16以降 – Ubuntu 12.04以降
64
OpenStackにおける利用法
• ip netns • 仮想ルーターと仮想DHCPサーバーを
確認 !!!
• ip netns exec qdhcp-xxxx command • ip netns exec qrouter-xxxx command
65
qrouterとqdhcp
• ip netnsで一覧 • ip netns execで内容確認 !
• qrouter – ルータをネットワーク接続すると出現
• qdhcp – DHCPサーバが作成されると出現 ※はじめてインスタンスが作られたタイミングでDHCPサーバーが作られる
66
qrouterの確認(1)
• ip a/ifconfigコマンドでIPアドレス確認
67
qrouterの確認(2)
• qrouterからPing • 外部PCからqrouterにPing
68
qdhcpの確認(1)
• ip a/ifconfigコマンドでIPアドレス確認
69
qdhcpの確認(2)
• qdhcpからインスタンスにPing
70
コマンドを実行
DEMO-3
71
それでもつながらない
1. ログを見る
2. Floating IPを付け直し
3. クライアントのMTUを下げてみる
4. インスタンス中→外にPing
5. Open vSwitchエージェントの再起動
6. qrouterやqdhcpを確認
7. 各種設定の見直し
8. Neutronネットワークの作り直し
72
以上です。 ありがとうございました
73
おまけ
74
インスタンスが 外部ネットワークにつながらない!
(障害例3)
75
症例
1. OpenStackホストにパッチ適用 2. 再起動 3. インスタンス起動 4. ネットワーク不通
76
udhcpc (v1.20.1) started Sending discover... Sending discover… Sending discover...
原因
1. インターフェイスの起動する前 2. Open vSwitchが起動 3. 必要なNICで疎通できず 4. 仮想ネットワークがつながらない
77
解決方法(一例)
• ip route deleteでルーティングを削除
78
解決方法(一例)
• 問題解決
79
Ubuntuでの回避策
• /etc/network/interface
80
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
その他注意すべきポイント
81
PDFからのコピペに気をつけろ
• 手順通り実行 • エラー !
• PDFから複数行に渡る文字列をコピペする
↓ • 折り返し部分に謎のスペースが • コマンド失敗
82
Adobe Readerでは正常
83
Mac OS X プレビューからでは
84
改行が…
キーペアがインポートできない
• ssh-keygenコマンドで鍵を作成 • インポート実行 • エラー • 何回やってもエラー • 何回やっても(ry
85
原因はエディタの設定
• viエディタで開いてコピペ • .vimrc設定の問題
86
set formatoptions=q 自動改行オフ set textwidth=0 長い文章の自動折り返しをしない set linebreak ワードラップを有効
• linebreak オン !!!!
• linebreak オフ
87