OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月

11,743 views
11,414 views

Published on

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

Published in: Technology

OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月

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

×