openstack マルチノード環境構築
TRANSCRIPT
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
Opst01CentOS 7
Opst02CentOS 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 -yhttps://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/CentOS-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-configpassword: vmpasschpasswd: { 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