RDOを使ったOpenStack Havana
Neutron 構築編
日本仮想化技術株式会社
OpenStack構成図
2
RDOとは
• Red Hatベースプラットフォームで
OpenStackを利用するユーザーのた
めのコミュニティ
• OpenStack環境をクイックインストール
• Packstackを利用
• Pythonで書かれている
お品書き
1. RHEL系のLinuxをインストール
2. RDOリポジトリーの追加
3. RDOでOpenStackをインストール
4. RDOでOpenStackをカスタムインストール
5. コマンドでOpenStackを設定
事前準備
ソフトウェア要件
• Red Hat Enterprise LinuxおよびRHEL
派生OS 6.4以降
• Fedora 19以降
ハードウェア要件
• CPU 2Core以上
– VT-x / AMD-V
• メモリー4GB以上
• 最低1つのNIC
– Privateネットワーク用はloインターフェイスを利
用可能。
• インターネットにアクセスできる環境
Linuxのインストール
STEP1
Linuxをインストール
• 次のバージョン以降のOS
– RHEL 6.4
– Fedora 19
– CentOS 6.4
– Scientific Linux 6.4
※本例ではScientific Linux 6.5をインス
トールしています。
あらかじめ設定
# vi /etc/sysctl.conf
#設定を確認
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
#設定を追記
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.rp_filter = 0
#設定を変更
net.ipv4.conf.default.rp_filter = 0
# sysctl -e -p /etc/sysctl.conf
(設定を反映)
IPアドレスの固定化
• eth0に固定IPアドレスを割り当て
RDOリポジトリーの追加
STEP2
リポジトリーの追加
• 公式の手順に従ってコマンドを実行
• アップデートの実施
# yum install -y
http://rdo.fedorapeople.org/openstack-
havana/rdo-release-havana.rpm
# yum -y update
パッケージのインストール
• Packstackおよび必要パッケージをイン
ストール
# yum install -y openstack-packstack python-
netaddr
SELinux
• 公式の手順にしたがってオフにします。
• /etc/selinux/configファイル
SELINUX=permissiveの設定も行う。
# setenforce 0
# getenforce
Permissive
RDOでOpenStackをインストール
STEP3
OpenStackをインストール
• インストールするには次のコマンドを
実行するだけ
• しばらく待つ
• ログインしてみる
# packstack --allinone
OpenStack ログイン画面
Web Interfaceで操作
デフォルトの構成
• プライベートネットワーク
– 10.0.0.0/24
• パブリックネットワーク
– デモ用
– 外部接続不可
• ユーザー
– demo
– admin
RDOでOpenStackをカスタム
インストール
STEP4
カスタムインストールの方法
• packstackはアンサーファイルを用意
することでカスタム可能
• packstackコマンド実行に指定
– カスタム構成でOpenStackが構築できる
実行前に
• 必要パッケージがインストール済みか
確認
# rpm -q openstack-packstack
openstack-packstack-2013.2.1-
0.29.dev956.el6.noarch
アンサーファイルの作成
• packstackコマンドでアンサーファイル
を作成
※アンサーファイルはバージョンによっ
て追加があるので使い回す際は注意
# packstack --gen-answer-file=answer.txt
(answer.txtという名前のファイルを作成する場合)
アンサーファイル例
# vi answer.txt
[general]
CONFIG_MYSQL_INSTALL=y
CONFIG_GLANCE_INSTALL=y
CONFIG_CINDER_INSTALL=y
CONFIG_NOVA_INSTALL=y
CONFIG_NEUTRON_INSTALL=y
CONFIG_HORIZON_INSTALL=y
CONFIG_SWIFT_INSTALL=y
(略)
CONFIG_NOVA_COMPUTE_PRIVIF=lo
CONFIG_NOVA_NETWORK_PRIVIF=lo
CONFIG_NOVA_NETWORK_PUBIF=eth0
CONFIG_KEYSTONE_ADMIN_PW=admin
CONFIG_PROVISION_DEMO=n
アンサーファイルの編集
• 自分の環境に合わせて修正
• 最低設定するのは
– 導入コンポーネント
– Private用NIC
– Public用NIC
– adminユーザーのパスワード
OpenStackをインストール
• インストールするには次のコマンドを
実行するだけ
• しばらく待つ
# packstack --answer-file=/root/answers.txt
ブリッジの設定
STEP6
NICの設定変更
• eth0をpublic用にする
• br-ex用のポートとしてeth0を使う
• Neutron Pluginの設定
※具体的な設定は次のスライドで
ifcfg-eth0
# vi /etc/sysconfig/network-
scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ifcfg-br-ex
# vi /etc/sysconfig/network-scripts/ifcfg-
br-ex
DEVICE=br-ex
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=192.168.1.140 # Old eth0 IP
NETMASK=255.255.255.0 # Your netmask
GATEWAY=192.168.1.1 # Your gateway
DNS1=8.8.8.8 # DNS Server
DNS2=8.8.4.4
Neutron Pluginの設定変更
• 以下を追記する
• 一旦OpenStackホストを再起動
# vi /etc/neutron/plugin.ini
(略)
network_vlan_ranges = physnet1
bridge_mappings = physnet1:br-ex
ovs-vsctlコマンドで確認
• br-exにeth0が追加されたことを確認
# ovs-vsctl show
016948ac-32eb-4dc3-89bc-81b96a343d06
Bridge br-ex
Port phy-br-ex
Interface phy-br-ex
Port br-ex
Interface br-ex
type: internal
Port "qg-2aaf420a-c9"
Interface "qg-2aaf420a-c9"
type: internal
Port "eth0"
Interface "eth0"
コマンドでOpenStackを設定
STEP7
実施項目
• OS設定の次は「OpenStack」の設定
1. ルーターを作成
2. ネットワークを作成
3. ネットワークサブネットを作成
4. 外部と内部ネットワークの接続
5. OpenStack利用ユーザーの追加
事前準備
• keystonercを読込む
• 設定を確認
[root@openstack]# source keystonerc_admin
[root@openstack ~(keystone_admin)]#
コマンド 確認できる項目
keystone tenant-list テナント
neutron net-list ネットワーク
neutron router-list ルーター
ルーターの作成
• 次例のように実行
# neutron router-create router1
(router1を作成)
# neutron router-list
(コマンドを実行して確認)
Publicネットワークの作成
• 次例のように登録
• TENANT-IDはkeystone tenant-list
コマンドで確認
• 「--router:external=True」オプション
で「外部ネットワーク」として登録
# neutron net-create public --tenant-id
TENANT-ID --router:external=True
# neutron net-list
(コマンドを実行して確認)
Privateネットワークの作成
• 次例のように登録
• TENANT-IDはkeystone tenant-list
コマンドで確認
• 「--shared」オプションで他のユーザーと
ネットワークを共有できる
# neutron net-create demo-net --tenant-id
TENANT-ID --shared
# neutron net-list
(コマンドを実行して確認)
サブネットの登録
• ネットワークにサブネットを登録
# neutron subnet-create --name public_subnet
--enable_dhcp=False --allocation-
pool=start=192.168.1.241,end=192.168.1.254 --
gateway=192.168.1.1 public 192.168.1.0/24
Privateネットワークに追加
• 次の構成でPrivateネットワークにサブ
ネットを追加してみよう
項目 設定
名前 demo-net_subnet
ネットワーク demo-net
DHCP 有効
IPアドレス割り当て範囲 10.0.0.0/24
ゲートウェイ 10.0.0.1
【問題】
正解は
• 次例のようにサブネットを登録
※アロケーションプールはゲートウェイ
を考慮すること
# neutron subnet-create --name demo-
net_subnet --enable_dhcp=True --allocation-
pool=start=10.0.0.2,end=10.0.0.254 --
gateway=10.0.0.1 demo-net 10.0.0.0/24
ゲートウェイの設定
• 作成したルーター(router1)とパブリッ
クネットワークを接続
※ROUTER-IDはneutron router-listコマンド、
PUBLIC-NETWORK-IDはneutron net-listコマンドで確
認できます。
# neutron router-gateway-set ROUTER-ID
PUBLIC-NETWORK-ID
外部と内部ネットワークの接続
• プライベートネットワークを割り当てた
インスタンスがFloating IPを割り当て
られたときに外に出られるようにする
ために「ルーターにインターフェイスの
追加」を行います
コマンドの実行
• 次例のように実行
※ROUTER-IDはneutron router-listコマンド、サブネット
はneutron subnet-listコマンドで確認できます。
• 実行例
# neutron router-interface-add b195f4e5-c8f5-
4dbd-b265-14e1736faefb subnet=demo-net_subnet
# neutron router-interface-add ROUTER-ID
INTERFACE
ユーザーの追加
• OpenStackの利用ユーザーを追加
• パラメータは--helpを参照
• テナントはkeystone tenant-listコマンド
で確認できる
# keystone user-create --name demo --pass
demo --tenant services --enabled true
コマンドでOpenStackを操作
STEP8
実施項目
1. セキュリティグループの設定
2. インスタンスの起動
セキュリティグループの設定
• neutron security-group-listコ
マンドで対象を確認
• neutron security-group-rule-
createコマンドで定義
# neutron security-group-rule-create --protocol icmp GROUP-
ID
# neutron security-group-rule-create --protocol tcp --port-
range-min FROM-PORT --port-range-max TO-PORT GROUP-ID
# neutron security-group-rule-create --protocol udp --port-
range-min FROM-PORT --port-range-max TO-PORT GROUP-ID
インスタンスの起動
• インスタンス起動に必要な情報を確認
– nova flavor-list
– nova image-list
– neutron net-list
• nova listコマンドでインスタンスの
稼働状況を確認
コマンドの実行
• 次例のように実行
• 実行例
# nova boot --flavor FLAVOR-NAME --image
IMAGE-NAME --nic net-id=NETWORK-ID VMNAME
# nova boot --flavor m1.tiny --image CirrOS--
nic net-id=10af861b-e640-4db8-ad56-
a4d398d2b66c VM1
Novaの設定変更
STEP9
設定変更のポイント
• 仮想化としてQEMUを利用するように
設定される場合がある
• 速さはQEMU < KVM
• libvirt_typeの設定を確認
対応しているか確認
• Linux KVMに対応しているか確認
# lsmod | grep kvm
kvm_intel 54285 6
kvm 332980 1 kvm_intel
(Intel CPUの場合)
kvm 332980 1 kvm_amd
(AMD CPUの場合)
nova.conf設定の確認
• libvirt_typeの設定を確認
• 対応ならkvmが選択されているはず
# vi /etc/nova/nova.conf
(略)
libvirt_type=kvm
#libvirt_type=qemu
(qemuからkvm利用に設定変更)
Enjoy!
STEP9
インスタンスを操作
FAQ
ステータスの確認について
• ステータスを確認するには?
↓
1. サービスの稼働状況を確認
– lsof , ps ax
– nova-manage service list
– neutron agent-list など
2. openstack-statusコマンドの実施
– ただし、Fedoraベースで構築した場合はうまく表示
できません
サービスが動かない(1)
• アップデート後ホストを再起動したとこ
ろ、うまく動かなくなりました。
↓
• カーネルを更新してホストを再起動す
るとbr-exがリセットされる
• 再度packstackを実行する必要がある
サービスが動かない(2)
• Fedoraベースで構築したところ、再起
動したら色々なサービスが動かなくな
りました
↓
• packstackを再実行すれば復旧?
– CentOSやScientific Linuxをオススメします。
キーボード関連
• 日本語キーボードが使えない
↓
• コンピュートノードのnova.confに追記
– vnc_keymap=ja と設定
– 「openstack-nova-compute」サービスを再起動
• 日本語キーボードが使えるかどうかはOS
次第
– Cirrosは英語キーマップで利用可
– 多くの場合loadkeys jp106コマンドで利用可
パスワード認証したい
• こう設定してインスタンスを起動!
マルチノード構成にするには
• 次の手順を参考に
– http://openstack.redhat.com/Adding_a_compute_node
• 手動で構築したほうが簡単?
– http://www.server-
world.info/query?os=CentOS_6&p=openstack_havana
&f=10
参考URLなど
• RDO Quick Start
– http://openstack.redhat.com/Quickstart
• RDO Quick Start Neutron
– http://openstack.redhat.com/Neutron-Quickstart
• Neutronと外部ネットワーク
– http://openstack.redhat.com/Neutron_with_existing
_external_network
• RDO ドキュメント一覧
– http://openstack.redhat.com/Docs

RDOを使ったOpenStack Havana - Neutron 構築編