OpenStack Juno & CentOS7 で packstack マルチノードインストールを試す

  • 13
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

概要

本記事は OpenStack (2枚目) Advent Calendar 2014 23日目の記事です。

今まで公式手順に沿っての手動インストールしかマルチノードは試したことがなかったのですが、
ようやく手動インストールで動かせるようになったので自動化の機運が高まってきました。

今回は packstack でのマルチノードインストールに挑戦してみたいと思います。

前提となる環境

  • 物理マシン4台(Controller, Network, Compute, BlockStorage)
  • NIC は1つ
  • NIC 1つで頑張っているため複数のVLAN有り
  • L2SW に VLAN は作成済み
  • CentOS7 を最小構成でインストール後、IP,vlan は設定済み
    • インストール後の yum update も済み
  • selinux は全台 permissive
    • (disabled に設定していると packstack が途中でコケるので)
  • ntp サーバはインストール済み

network 図

本当にテキトーな図で申し訳ないですが...一応。。
アスキーアート難しい。

-----------------------------------------------  10.26.1.0/24 (vlan1260) ext network 
                      |                    
                      |                    
+-----------+    +----------+    +----------+
| controller|    | network  |    | compute  |
+-----------+    +----------+    +----------+
      |               |   |           |    |
      |               |   |           |    |
-----------------------------------------------  172.16.1.0/24 (vlan1300) mng network 
                      |               | 
                      |               |
-----------------------------------------------  172.16.200.0/24 (vlan1320) tunnel network 

なかなかの雑っぷりだけど...仕方ない。
上記でも触れているように NIC は1つなので VLAN を使っています。
あと図は OpenStack 部分のみでこれとは別に untag で各ホストへ ssh を行うためのセグメントも存在しています。(10.29.1...というのが後ほど出てきますがそれです)

packstack で OpenStackJuno をセットアップ

  • packstack のインストール
# yum install -y https://rdo.fedorapeople.org/rdo-release.rpm
# yum install -y openstack-packstack
  • answer file の作成
# packstack --gen-answer=juno_multinode
Packstack changed given value  to required value /root/.ssh/id_rsa.pub
  • 使用する answer file は こちら

  • answer file を実行

# packstack --answer-file=juno_multinode

インストール後のケア

external network の設定

packstack でインストールが終わったものの network node の外向き I/F と OVS の紐付けが行われていないため設定する。

br-ex が 外側のブリッジで、今回の構成では enp0s25.1260 という I/F が外側の I/F のためこれを紐付ける。

# ovs-vsctl add-port br-ex enp0s25.1260
# ovs-vsctl show (一部抜粋)
Bridge br-ex
        Port "enp0s25.1260"
            Interface "enp0s25.1260"
        Port br-ex
            Interface br-ex
                type: internal
        Port "qg-335e23cc-74"
            Interface "qg-335e23cc-74"
                type: internal
    ovs_version: "2.1.3"

external network は provider:network_typeflat で構築したかったのですが packstack では 両方vxlan で private, external を作成してしまうみたいなので external network を削除し再構築します。

dashboard でポチポチやってもいいですし、コマンドでやってもいいです。
結果だけ貼っておきます。

# neutron net-show 0d8cb8e1-40fc-4457-ba86-0b1813ba1a01
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | 0d8cb8e1-40fc-4457-ba86-0b1813ba1a01 |
| name                      | public_network                       |
| provider:network_type     | flat                                 |
| provider:physical_network | default                              |
| provider:segmentation_id  |                                      |
| router:external           | True                                 |
| shared                    | True                                 |
| status                    | ACTIVE                               |
| subnets                   | aa30b3e4-dbb6-45a0-86ac-09a9be999174 |
| tenant_id                 | b9743f9263b74539a490bab52793d894     |
+---------------------------+--------------------------------------+

cirros を boot して floating ip を付与し外から ssh でログインできれば OK。

Horizon のケア

今回の構成だとインストール終了後に下記の表示がされているように dashboard IPが http://172.16.1.119/dashboard となっている。

上記アドレスは管理セグメントで使用している IP のため、外向きの IP に置き換えたい。
そこで下記を修正する。

OPENSTACK_HOST = "10.29.1.119"
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v2.0" % OPENSTACK_HOST
#OPENSTACK_KEYSTONE_URL = "http://172.16.1.119:5000/v2.0"

そして httpd restart しておきます。

# systemctl restart httpd.service

OPENSTACK_HOST に設定した IP or domain でアクセスできると思います。

Nova のケア

cirros image でインスタンスを起動はできるがwebコンソールが使用できなかったので compute node の設定を変更する必要がある。
こちらも管理セグメントで使用している IP への設定となっているため外向きの IP へ置き換える。

/etc/nova/nova.conf
novncproxy_base_url = http://10.29.1.119:6080/vnc_auto.html

nova-compute を再起動しておきます。

# systemctl restart openstack-nova-compute.service

触ってみて分かったこと

packstack のパラメータである CONFIG_STORAGE_HOST を設定すれば cinder はストレージ用ホストにインストールされると思っていたがどうやらされないらしい。

packstack を使うとコントローラー用のホストに一緒にインストールされてしまうらしい。

しっかりと answer-file にこんな記述があった。

# (Unsupported!) The IP address of the server on which to install
# OpenStack services specific to storage servers such as Glance and
# Cinder.

あんさぽーてっどらしい。

cinder-volumes だけストレージホストに設定するのは手動で行うことにした。

所感

いくつか思い通りにいかず手動設定の箇所も残ってしまったが、それを差し引いても今までの作業がかなり簡略化されるのでこれからは積極的に使っていこうと思いました。

answer-file の書き方によってはいくつか効率化できそうな気もするのでもう少し触り込んでみたいですね。

さいごに

OpenStack ユーザ会にもちょいちょい参加しているので皆様よろしくお願いします!