JOSUG 9th Study openstack Open source software to build public and private clouds. 第 9 回動かして学ぶ! OpenStack とクラウドを支える技術 テキスト : http://goo.gl/pwusg ( これと一緒に参照 ) 2012.11.18 日本 OpenStack ユーザ会 中島倫明 @irix_jp 1
はじめに 会場提供 及び デモ環境用の VPS をお貸し出し頂いた KDDI ウェブコミュニケーションズ様に 御礼申し上げます 2
自己紹介 日本 OpenStack ユーザ会 会長 クラウド利用促進機構 技術アドバイザー @irix_jp 3
今回の勉強会の趣旨 Folsom リリース これで大体一通りの機能が揃った しかし OpenStack の勢いは衰える気配を見せず さらなる進化が期待できる ここらでちゃんと OpenStack の構造を理解し 次の進化に備えよう という企画 By @habuka036 & @enakai00 4
大枠の流れ とりあえず動かしてみる 構造を理解する 裏側を見てみる By @habuka036 & @enakai00 5
デモ環境の構築フォロー 事前課題の devstack を 使った環境構築が 上手く行かなかった人向け この環境が手元に無いと 話についていくのが 厳しくなります ( リアル話 ) 6
デモ環境 ( 講師用 ) glance rabbitmq mysql quantum nova keystone q-agt n-cpu c-vol Internet q-agt q-agt q-agt q-agt n-cpu n-cpu n-cpu n-cpu c-vol c-vol c-vol c-vol 7
基本操作 OpenStack の操作 Web インターフェース コマンドライン ログイン キーペア作成 インスタンス作成 ボリューム作成 ネットワーク作成 テナント ユーザ作成 8
基本操作 glance rabbitmq mysql quantum nova keystone Internet q-agt n-cpu c-vol VM q-agt q-agt q-agt q-agt n-cpu n-cpu n-cpu n-cpu c-vol c-vol c-vol c-vol VM 9
コンポーネントの基本構造 keystone horizon Local file, Swift, S3 glance nova-api quantum-server quantum-l3 quantum-dhcp cinder nova-compute quantum-agent DB LVM, NetApp, Nexenta Kvm, Xen HyperV,ESXi OVS, Nicira NEC AMQP 10
コンポーネントの基本構造 Admin or Users Horizon OpenStack Component Client Command Client Library (python) API Server DB AMQP OpenStack Component Other Program https://launchpad.net/openstack External Software 11
quantum Folsom から正式コンポーネントとなったネットワークマネージャ テナントのアイソレーション インスタンス間の接続 ルーティング DHCP Floting IP 外部からインスタンスへアクセスさせるための IP 12
構成例 http://docs.openstack.org/trunk/openstack-network/admin/content/app_demo.html 13
プラグイン構造 Quantum はプラグイン構造で 様々なネットワークを制御可能 OVS devstack だとコレが使われる Nicira NEC Bigswitch Cisco Ryu 等々 14
Quantum で作れるネットワーク ethx br-ext ext_net Router Router net1 VM net2 VM net1 net2 Router VM VM VM VM net3 VM net4 VM 15
使われている技術 OVS プラグインの場合 OVS + GRE Network Name Space iptables dnsmasq route linux bridge veth tap 16
やってみよう ネットワークの作成 サブネットの作成 ルーターの作成 ルーターとネットワークの関連付け Floaitng IP の割り当て 17
192.168.128.100 eth0 eth0 192.168.128.101 172.26.0.100 eth1 eth1 172.26.0.101 br-tun br-tun br-tun gre-2 (remote_ip="172.26.0.101) patch-int (peer=patch-tun ) br-int 172.24.17.3 testvm02 eth0 tap vnet0 gre-1 (remote_ip="172.26.0.100) patch-int (peer=patch-tun ) br-int br-tun patch-tun (peer=patch-int ) bridge qbrdd945b9a-4a patch-tun (peer=patch-int ) qr-01b9a7bf-ce (tag=1) 172.24.17.254 veth qvbdd945b9a-4a veth qvodd945b9a-4a (tag=1) br-int tapa9806132-f2 (tag=1) veth qvo00a6d081-61 (tag=1) 172.24.17.1 veth qvb00a6d081-61 br-int bridge qbr00a6d081-61 受信先サイト ゲートウェイ ネットマスクフラグ Metric Ref 使用数インタフェース 0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 qg-f616aed6-66 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 qg-f616aed6-66 172.24.17.0 0.0.0.0 255.255.255.0 U 0 0 0 qr-01b9a7bf-ce Tap vnet0 qg-f616aed6-66 10.0.0.2 eth0 172.24.17.2 testvm01 br-ex br-ex 10.0.0.1 ping 172.24.17.2 eth2 受信先サイト ゲートウェイ ネットマスクフラグ Metric Ref 使用数インタフェース 0.0.0.0 192.168.128.1 0.0.0.0 UG 100 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br-ex 172.24.17.0 10.0.0.2 255.255.255.0 UG 0 0 0 br-ex 172.26.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.128.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.0.0.254 Router
nova 仮想マシンを作成し管理する スケジューラー ハイパーバイザー管理 セキュリティグループ管理 キーペア管理 ゾーンの管理 メタデータ提供 コンソールプロキシ ボリューム管理 Cinder へ移管 ( folsom ) ネットワーク管理 Quantum へ移管 ( folsom ) 19
nova の構造 20
スケジューラー キューからリクエストを取得して 仮想マシンの配置先を決定する API 経由でリクエストメッセージをキューへ キュー経由でスケジューラーがメッセージを受け取る スケジューラーが配置先のホストを決定 キューへメッセージを送信 配置先のホストが受け取る 細かく話すと長いので こちらを参照 nova-scheduler(1) http://www.slideshare.net/h-saito/osc2012kansaikyotojosug 21
ハイパーバイザー管理 複数のハイパーバイザーを混在して管理可能 ( ゾーンを分ける必要あり ) KVM - Kernel-based Virtual Machine LXC - Linux Containers (through libvirt) QEMU - Quick EMUlator UML - User Mode Linux VMWare ESX/ESXi 4.1 update 1 Xen - Xen, Citrix XenServer and Xen Cloud Platform (XCP) 22
ゾーン (availability zone) 複数の nova ホストを論理的に区切る事ができる ラック単位 接続スイッチ単位 接続電源系統単位 DC 単位 等々の対障害性の単位で区切る インスタンス作成時にオプションで指定できる nova.conf node_availability_zone で設定 default_schedule_zone でデフォルトゾーンを指定 23
セキュリティグループ & キーペア セキュリティグループ 仮想マシンへの FW 機能 Iptables を駆使して実現 キーペア管理 SSH キーの作成と管理 仮想マシンへのねじ込み コンピュートノード上でイメージをループバックマウントしてねじ込む 24
メタデータサーバ インスタンスに対して任意の情報を提供する Quantum 上ではまだテストサポート metadata 機能を使いたい場合は nova-network を使う 仮想マシンでは知り得ない情報を入手するための機能 169.254.169.254 で待受け iptables で DNAT されている 25
コンソールプロキシ 仮想マシンのコンソールへ接続するためのプロキシ ( そのまんま ) ブラウザ novnc nova-xvpvncproxy VM VM とブラウザを使うクライアントと通信できる必要は無い horizon からアクセスしてみるべし 詳細は省略 26