OpenStack
マルチノード環境構築
IceHouse VLAN編
ほんま
まず、はじめに。
 私は、OpenStackを初めてすぐのものです。あまり詳しくはありません。
 コミュニティにも参加したことはありません。
 インストールするのに苦労したので、簡単に手順を紹介します。
 いろんなインストール仕方があると思います。あくまでも1つの参考手順です。
 間違った記載があるかもしれませんが、ご了承ください。
 皆さまが、少しでもOpenStackをインストールするときの助けになればと思います。
 環境による違いなど、質問などお答えすることは難しいと思いますので、可能な限
り私の環境を説明させて頂いています。
2014/11 2
利用ソフトウェア
 CentOS 7を利用します。
 http://www.centos.org/
 OpenStackはIceHouseを利用します。RDOを利用してインストールします。
利用するレポジトリは、以下のrpmで利用できるものです。
 https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo-
release-icehouse-4.noarch.rpm
 詳細は、https://openstack.redhat.com/を見て下さい。
 家のパソコンを利用するので、VMware Player(6.0.4)を利用して仮想環境
を作ります。
 オープンソースに感謝!!
2014/11 3
システム構成
42014/11
Windows 8.1
+
VMware Player
Opst01
CentOS 7
Opst02
CentOS 7
NIC
ルータ
ブリッジ接続
NIC1NIC1
NIC2 NIC2
VMnet1
ブリッジ接続
192.168.1.0/24
192.168.1.21 192.168.1.22
VLAN
コンピュートノードすべて
インターネット
参考に
 VMware Playerを動かしている環境です。
 Intel(R) Core(TM) i7-2600
3.4GHz, 4コア(8スレッド)
 DDR3-1333 12G
 1HDD(約900G)
 Windows 8.1
 VMware Playerで動かく仮想マシーンは、以下の通り設定しています。
 プロセッサ数は、4
 メモリは、3.5G
 HDD容量は、100G
 DVD
 ネットワークアダプタ1(ブリッジ接続)
 ネットワークアダプタ2(VMnet1)
2014/11 5
※注意事項
vmxファイルの設定を変更しています。
自己責任でお願いします。
ethernet1.virtualDev = "e1000"
mainMem.useNamedFile = "FALSE"
CentOS 7のインストール設定①
2014/11 6
CentOS 7のインストール設定②
 OpenStackは/var/lib/nova以下を使
用しますので、/var以下のディスク容量を
確保するようにしてください。
 今回は、検証環境ですので、ディスクの残
りをすべて「/」に割り当てています。
2014/11 7
OpenStackのインストール①
 最新に更新します
 #yum –y update
 RDOをインストールします。
 RDO Quickstartを参考にしてください。
 #yum install -y
https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo-
release-icehouse-4.noarch.rpm
 #yum install -y openstack-packstack
 #packstack --allinone
 これで、AllInOne環境が出来上がりです。
2014/11 8
※注意事項
hostnameを設定している場合は、
/etc/hostsに記載してください。
しかし、うまく行ったことがないです。
localhost.localadminのままだとうまく行きます。
AllInOne環境の確認①
 環境ができあがると、以下のように表示されます。
 /root/以下に、以下のファイルができます。
 keystonerc_admin
 keystonerc_demo
 packstack-answers-日時.txt
2014/11 9
記載のとおり、AllInOneで使用する場合は、
NetManagerを停止してください。
このファイルを編集してマルチノードにします。
AllInOne環境の確認②
 OpenStackの状態を確認するコマンドを実行します。
 #. ./keystonerc_admin ← 環境変数を設定します。
 [(keystone_admin)] #openstack-status
実行すると以下のような表示がでます。
2014/11 10
続く(一部省略)
続き
AllInOne環境の確認③
 Horizonにログインしてみましょう。
 /root/keystonerc_adminにパスワードが書かれています。確認してください。
2014/11 11
admin
keystonerc_admin
に記載されたパスワード
ログインすると
参考に
 この時、必要なOpenvSwitchの設定が行われています。以下のコマンドで確
認してみましょう。
 #ovs-vsctl show
2014/11 12
br-tun、br-int、br-exの3つのブリッジが作成されて
います。
物理NICの名前が記載されていません。
まだ外部への接続はない状態です。
後で登場しますので、比較してみてください。
マルチノードに設定①
 /root/以下に保存されたpackstack-answers-日時.txtを編集します。
編集する項目は以下の通りです。
 CONFIG_COMPUTE_HOSTS=192.168.1.21,192.168.1.22
 CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE=vlan
 CONFIG_NOVA_COMPUTE_PRIVIF=eno33554960
 CONFIG_NOVA_NETWORK_PUBIF=eno16777736
 CONFIG_NOVA_NETWORK_PRIVIF=eno33554960
 CONFIG_NOVA_NETWORK_VLAN_START=1001
 CONFIG_NEUTRON_L3_EXT_BRIDGE=br-ex
 CONFIG_NEUTRON_L2_PLUGIN=openvswitch
 CONFIG_NEUTRON_OVS_VLAN_RANGES=physnet1,physnet2:1001:1010
 CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex,
physnet2:br-priv
 CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eno16777736,br-
priv:eno33554960
2014/11 13
マルチノードに設定①
 /root/以下に保存されたpackstack-answers-日時.txtを編集します。
編集する項目は以下の通りです。
 CONFIG_NEUTRON_OVS_TUNNEL_RANGES=1001:1010
 CONFIG_NEUTRON_OVS_TUNNEL_IF=eno33554960
2014/11 14
マルチノードに設定②
 全てのサーバで、NetworkManagerが動作していることを確認してください。
packstackが設定するときには、NetworkMangerが必要です。
 packstackを実行します。
 packstack --answer-file=packstack-answers-日時.txt
 インストールが成功すれば、とりあえずは一安心です。一応確認してみましょう。
 # . keystonerc_admin
 openstack-status
2014/11 15
localhost.localdomainが
残っていると思います。
マルチノードに設定③
 一度再起動します。
 shutdown –r now
 経験的にここで一度再起動しておく方が良いです。
 再起動後の設定確認を確認するためです。
2014/11 16
データの修正①
 localhost.localdomainを削除しましょう
 mysql –u root
こんな感じでデータが管理されています。
削除するコマンドは以下のコマンドです。
delete from nova.compute_nodes where hypervisor_hostname = 'localhost.localdomain';
delete from nova.services where host = 'localhost.localdomain';
2014/11 17
データの修正②
 cinderについても同様に消しておきましょう。
 cinder-manage service list
MariaDB [(none)]> delete from cinder.services where host = 'localhost.localdomain';
localhost.localdomainが消すことができます。
 cinder-manage service list
2014/11 18
外部ネットワークの修正①
 P4で示した外部ネットワークを使用するためにはネットワークを設定しなおす必要
があります。
 Horizonにログインしてネットワークを確認してみましょう
2014/11 19
publicのネットワークです
割り当てられているのは、physnet2で、vlanになって
おり、これでは外部ネットワークと通信ができません。
これから、これを外部ネットワークに接続できるように
設定を変更していきます。
外部ネットワークの修正②
 「管理」-「ルーター」を開き、ネットワークdemoのprivateとadminのpublicを
削除します。
2014/11 20
クリック
外部ネットワークの修正③
 「管理」-「ネットワーク」を開き、ネットワークdemoのprivateとadminの
publicを削除します。
2014/11 21
クリック
※ルーターを削除してからでないと、ネットワークを
削除できません。
その他、コンピュータノードなどを作成しているときは、
全て削除してからでないとできないので注意してください。
外部ネットワークの修正④
 外部ネットワークを作成します。
2014/11 22
この青枠のネットワークを
作成します。
外部ネットワークの修正⑤
 Horizon上では設定できないので、コマンドで設定します。
 neutron net-create public --provider:network-type flat 
--provider:physical_network physnet1 --router:external True --shared
2014/11 23
※注意事項
physnet1は、P13で指定しています。br-ex:eno16777736と結びついています。
外部ネットワークの修正⑥
 ここからはHorizonで設定できるので、WEBから設定していきます。
 まず、「管理」-「ネットワーク」を表示します。
 「public」をクリックします。
2014/11 24
クリック
ネットワークの修正⑦
 「サブネットの作成」をクリックします。
2014/11 25
クリック
クリック
このネットワークは、physnet1で、
faltで設定できています。
ネットワークの修正⑧
2014/11 26
クリック
クリック
外部ネットワークの修正⑨
2014/11 27
クリック
クリック
FloatingIPになりますので、
開始IP、終了IPをカンマ区切りで
指定してください。
内部ネットワークの作成①
 内部ネットワークを作成します。
2014/11 28
この青枠で構成する
ネットワークを作成します。
最終形はこうなります。
ルーター
内部ネットワークの作成②
 「管理」-「ネットワーク」で表示される「ネットワーク作成」をクリックします。
2014/11 29
クリック
内部ネットワークの作成③
 ウィンドウが表示されるので、設定し、「ネットワーク作成」をクリックします。
2014/11 30
クリック
内部ネットワークの作成④
 サブネットを登録しますが、先ほど外部ネットワークのサブネットを作成したように
設定していきます。
2014/11 31
クリック
クリック
内部ネットワークの作成⑤
 サブネットを作成します。
2014/11 32
内部ネットワークの作成⑥
 内部ネットワークを外部ネットワークに接続します。
 ネットワーク間を接続するのはルータです。ルータを追加します。これも、Horizonから設定できる
ので、ここではWEBから設定します。
 「管理」ではルータの作成はできないので、「プロジェクト」-「ルータ」から設定します。
2014/11 33
クリック
内部ネットワークの作成⑦
 ルーター名を指定します。
 ルーターが追加されます。
2014/11 34
クリック
内部ネットワークの作成⑧
 ルータにゲートウェイを設定します。
2014/11 35
クリック
内部ネットワークの作成⑨
 外部ネットワークを「public」を選択します
 「ゲートウェイの設定」をクリックします。
2014/11 36
publicを
設定します
クリック
内部ネットワークの作成⑩
 ルーターの外部ネットワークに「public」が追加されます。
 これを正しく設定していないと、インスタンスを作成し、FloatingIPを付与すると
きにエラーとなります。
 「インターフェースの追加」で作成されるのは、内部インターフェースなので注意しま
しょう。必ず、「ゲートウェイの設定」を行いましょう。
2014/11 37
publicが
追加されます。
内部ネットワークの作成⑪
 ここまで、以下のようなネットワーク環境が構築できています。
2014/11 38
ルーターが
追加されます。
内部ネットワークの作成⑫
 「プロジェクト」-「ルーター」を開き、ルーター「private-01-GW01」をクリックしま
す。
2014/11 39
クリック
内部ネットワークの作成⑬
 「ルーターの詳細」画面で、「インターフェースの追加」ができます。
2014/11 40
クリック
内部ネットワークの作成⑭
 インターフェースの設定をし、「インターフェースの追加」をクリックします。
2014/11 41
クリック
内部ネットワークを
選択します
サブネット作成時に
指定したGWのIPを
設定します
内部ネットワークの作成⑮
 これでネットワークが完成しました。
2014/11 42
外部ネットワークと内部ネットワークが
接続できました。
イメージの追加①
 インスタンスを追加して動作確認をしますが、まず、起動するためのインスタンスを
追加しましょう。
 「管理」-「イメージ」を開き、イメージの追加をクリックします。
2014/11 43
クリック
イメージの追加②
 イメージの作成を設定し、「イメージの作成」をクリックします。
2014/11 44
http://cloud.centos.org/centos/7/devel/CentO
S-7-x86_64-GenericCloud-20140917_02.qcow2
今回は、CentOS7のイメージを追加しました。
※注意事項
アーキテクチャーは、空にしておく方が良いです。
この情報をもとに、適切に判断して、どのコンピュータ
ノードに配置するかをスケジュールしています。
適切な文字列を設定しない場合は、どのコンピュータ
ノードでも起動できないと判断され、起動できません。
正しく設定するか、空にしておいてください。
※Imageについて
 RDOのページで確認することができます。
2014/11 45
https://openstack.redhat.com/Image_resources
イメージの追加③
 このように、ダウンロードして登録されます。
2014/11 46
登録中
インスタンスを起動するための前準備①
 インスタンスを起動するための前準備をします。
 キーペアを作ります。
 セキュリティグループを適切に設定します。
 フレーバーの修正を行います。
 「プロジェクト」-「アクセスとセキュリティ」を開きます。
2014/11 47
インスタンスを起動するための前準備②
 「キーペア」を作成します。
 キーペアを開き、「キーペアの作成」をクリックします。
2014/11 48
クリック
クリック
インスタンスを起動するための前準備③
 ダウンロードが始まりますので、大切に保存してください。
2014/11 49
インスタンスを起動するための前準備④
 次は、「セキュリティグループ」を設定します。
 ここでは、defaultの設定を変更しますが、本来は、適切に設定するためにも、セキュリティグ
ループを追加し、設定してください。
2014/11 50
クリック
インスタンスを起動するための前準備⑤
 defaultの設定を変更します。
 pingの許可とsshの許可を追加します。
2014/11 51
クリック
インスタンスを起動するための前準備⑥
 pingの許可(送信、受信)
2014/11 52
クリック
インスタンスを起動するための前準備⑦
 外部ネットワークからのssh許可
2014/11 53
クリック
インスタンスを起動するための前準備⑧
 フレーバーですが、パソコン上の環境にはあっていないので、以下のように修正し
ます。
 m1.tiny、m1.smallを修正します。
メモリー、ルートディスクの容量を変更しています。
2014/11 54
インスタンスの起動①
 では、インスタンスを起動します。
 「プロジェクト」-「イメージ」を開き、「起動」をクリックします。
2014/11 55
クリック
インスタンスの起動③
 「詳細」を設定します。
2014/11 56
動作確認のため
4つを起動します
インスタンスの起動④
 「アクセスとセキュリティ」を設定します。
2014/11 57
インスタンスの起動⑤
 「ネットワーク」を設定します。
2014/11 58
内部ネットワークを
指定します。
インスタンスの起動⑥
 今回は、sshをパスワードでログインできるように下記を設定します。
2014/11 59
#cloud-config
password: vmpass
chpasswd: { expire: False }
ssh_pwauth: True
ここを参考にしています。
http://d.hatena.ne.jp/ytooyama/20140201/1391186305
内部ネットワークを
指定します。
インスタンスの起動⑦
 起動中になります。
2014/11 60
起動済み
起動処理中
パソコン上の仮想環境では、スペックの問題で、うまく起動できない場合があります。
インスタンスをクリックして、ログから起動を確認してください。
本当は、1つずつ起動させる方が良いです。
また、だめな場合は、アクションで、ハードウェアリセットを選択し、実行してください。
ネットワークの動作確認①
 コマンドで確認します。
 ホスト#1(OPST-01)にログインします。
 namespaceを利用し、独立したネットワークを作り上げいるため、まず、namespaceの一覧
を確認します。
# ip netns
 以下の2つ出てきます。
qrouter-(ID) ルータ-
qdhcp-(ID) DHCP
 qrouter-(ID)のIDは、Horizonで確認してみましょう。
同じIDになっていることが確認できると思います。
2014/11 61
同じです。
ネットワークの動作確認②
 pingで、疎通を確認します。
 pingをうつ先は、各インスタンスのIPアドレスです。
 namespaceからpingをうつために以下のコマンドを使用します。
ip netns exec (namespace ID) ping (IPアドレス)
2014/11 62
ネットワークの動作確認②
2014/11 63
192.168.100.1に
pingはOKです。
192.168.100.50に
pingはOKです。
192.168.100.51に
pingはOKです。
192.168.100.52に
pingはOKです。
192.168.100.53に
pingはOKです。
ネットワークの動作確認③
 最後に外部ネットワークからアクセスできることを確認しましょう。
 外部ネットワークに接続するには、FloatingIPの設定が必要です。
 まずは、FloatingIPの設定をします。(FloatingIPとはNATを設定することです)
「プロジェクト」-「アクセスとセキュリティ」-「FloatingIP」を開きます。
「Floating IPの確保」を4回行ってください。
2014/11 64
クリック
ネットワークの動作確認④
 確保すると以下のようになります。
2014/11 65
ネットワークの動作確認⑤
 確保すると以下のようになります。
 「割り当て」をクリックし、設定します。
2014/11 66
ネットワークの動作確認⑥
 割り当てすると以下のようになります。
2014/11 67
ネットワークの動作確認⑦
 「インスタンス」でみると、2つのIPが表示されています。
 上にはprivate ip、下にはpublic ipが表示されます。
2014/11 68
ネットワークの動作確認⑧
 外部からpingを打つと問題なくpingが通ります。
2014/11 69
192.168.1.151に
pingはOKです。
192.168.1.152に
pingはOKです。
192.168.1.153に
pingはOKです。
192.168.1.154に
pingはOKです。
ネットワークの動作確認⑨
 SSHも問題なく接続できると思います。
 以下は、パスワードでログインできるようにしていますので、キーペアは使用していません。
2014/11 70
Open vSwitchについて
 今回使用したOpen vSwitchのVLAN構成は、以下のサイトが分かりやすいで
す。
 http://openvswitch.org/support/config-cookbooks/vlan-configuration-
cookbook/
 非常にわかりやすく書かれているので、見て頂ければ、理解できると思います。
2014/11 71

OpenStack マルチノード環境構築