Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OpenStackトラブルシューティング入門

7,107 views

Published on

1. 検証環境の構築
--- Nested Virtualization
2. 動作確認の方法
--- コマンドによる監視
3. トラブルシューティング
--- 障害と解決例

Published in: Technology

OpenStackトラブルシューティング入門

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

×