Help us understand the problem. What is going on with this article?

OpenStack Mitakaの導入 (Win7, Virtual Box, CentOS 7, RDO)

More than 3 years have passed since last update.

OpenStackを学ぶ必要があり、まずはいろいろと試す環境を構築するため、WindowsノートPCにAll-in-one(RDO)インストールで環境構築。その際のメモです。

流れは、Win7 PCにVirtual BoxでCentOSを導入し、Mitakaを導入。その後、GlanceでFedoraのImageを登録し、テストインスタンスを作成し、外部ネットワークにアクセスできるところまでを確認。

順調にいって、3~4時間、実際はいろいろハマるので、1日~2日はかかると思われる。

導入したPCのスペック

  • ノートPC
  • CPU: Corei7 2.9GH, 2コア
  • メモリ: 16GB
  • ディスク: 512GB SSD
  • OS: Windows 7 64bit

OpenStack環境の構成

  • Virtual BoxにてWindows 7上にCentOS7のVMを1台構築
  • OpenStackはRed HadのディストリビューションRDOを利用
  • Controller, Compute, Networkノードをすべて1台のマシンに導入(All-in-one構成)
  • 二つのネットワークをVirtual Boxで作成(ネットワーク構成ガイド
    • Provider Network
      • 外部アクセス用ネットワーク
      • 10.0.2.0/24 (Virtual BoxのNATネットワーク)
      • OpenStackのVMに与えるFloating IPはこのネットワークから与える
    • Management Network
      • Controller/Compute/Networkノードが所属する管理サーバー用ネットワーク
      • 外部にアクセスできないネットワーク
      • 192.168.56.0/24(Virtual Boxのホストオンリーネットワーク)

1. Virtual BoxでのVM作成

こちらを参考にVMを作成。
VMの設定は下記の通り(Virtual Boxでの設定順)

1.「新規作成」し、下記の設定でVMを作成

  • メモリ: 8GB
  • 仮想ディスク: 100GB, VDI, 可変

2.ホストオンリーネットワークアダプタの作成(Virtual Box側の設定)

ファイル → 環境設定 → ネットワーク でホストオンリーネットワークのタブで作成

  • 名前: 適当に
  • IP: 192.168.56.1
  • ネットマスク: 255.255.255.0
  • DHCPは無効とする

3.CPU数の設定(VMの設定)

  • VM設定パネルで「システム」を選択し、プロセッサーのタブで設定
  • 2コアのCPUなので、2コアまで使用するように設定

4.ネットワークアダプタの設定(VMの設定)

ネットワークアダプタは下記の二つ。ホストOS(Windows)から、ゲストOS(CentOS)にアクセスでき、かつ、CentOSから外部ネットワークにアクセスできる構成とした。

  1. NAT
    • デフォルト
    • VM(CetnOS7)が、外部ネットワークに接続するためのNATを行うアダプタ
    • Virtual Box(Win)のデフォルトでは10.0.5.0/24が割り当てられる
    • Provider Network
  2. ホストオンリー
    • ゲストOS(CentOS)とホストOSの間で通信するためのネットワークアダプタ
    • 192.168.56.1/24を設定
    • プロミスキャスモードを「すべて許可」に設定。(重要、ネストされたOpenStack上のVMが外部と通信するために必要な設定)
    • Management Netowrk

CentOS 7のインストール

1. CentOSダウンロード

2. VMの光学ドライブにCentOSのImage Fileをセット

VMの設定から「ストレージ」を選択し、ISOファイルをセット

3. VMを起動し、インストール実施

VMを起動すると、CentOSのインストーラーが自動で起動するので、ガイドに従って、インストール。こちらを参照。

  • 言語: English
  • Date & Time: Tokyo/Asia
  • キーボード: Japanese
  • Install タイプ: Minimal
  • rootのパスワードをセットし、新規Userを作成

インストール後、CentOSを起動。

CentOSの設定

OpenStackインストール前に、ネットワークの設定やFirewall無効化、OSのUpdate等を実施。

1. ネットワークの設定

1.1. NICの確認

enp0s3(NAT), enp0s8(ホストオンリー)の二つが認識されていることを確認

$ sudo ip addr
1.2. NICの設定

/etc/sysconfig/network-scripts/にある、ifcfg-enp0s3, ifcfg-enp0s8を下記の通り編集

[ifcfg-enp0s3]
DHCPでIPが割り振られるように設定

TYPE=Ethernet
BOOTPROTO=dhcp
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes

[ifcfg-enp0s8]
固定IPをセット。192.168.56.100とし、OpenStackの各サービスのエンドポイントはこのIPを使用する。

TYPE=Ethernet
BOOTPROTO=static
NAME=enp0s8
DEVICE=enp0s8
ONBOOT=yes
IPADDR=192.168.56.100
NETMASK=255.255.255.0
1.3. ネットワークの設定確認

ネットワークをリスタートし、設定内容を確認。その後、VMから外部へ接続が可能となるので、pingで確認。

また、ここまで設定できていると、TeraTerm等でSSH接続可能なので、SSH接続も確認する。

$ systemctl restart network.service
$ ip addr show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:d8:ae:9d brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 86134sec preferred_lft 86134sec
    inet6 fe80::a00:27ff:fed8:ae9d/64 scope link
       valid_lft forever preferred_lft forever

$ ip addr show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:88:36:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.100/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe88:3655/64 scope link
       valid_lft forever preferred_lft forever

$ ping yahoo.co.jp
PING yahoo.co.jp (183.79.135.206) 56(84) bytes of data.
64 bytes from f1.top.vip.kks.yahoo.co.jp (183.79.135.206): icmp_seq=1 ttl=43 time=38.8 ms
64 bytes from f1.top.vip.kks.yahoo.co.jp (183.79.135.206): icmp_seq=2 ttl=43 time=37.9 ms

2. CentOS Update

OSを最新の状態にし、reboot。

$ yum -y update
$ shutdown -r now

3. NTPのインストール

$ yum -y install ntp
$ systemctl start ntpd
$ systemctl enable ntpd

4. カーネルパラメータの変更

/etc/sysctl.conf ファイルを編集して、以下のパラメーターを追加

net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

設定を反映。

$ sysctl -p

5. SELINUXの無効化

/etc/selinux/configを編集して、enforcing をpermissiveに変更

SELINUX=permissive

6. Network Managerの無効化

$ systemctl disable NetworkManager
$ systemctl stop NetworkManager

RDOでのOpenStackのインストール

RDOのquick start guideを元に、OpenStackをインストールする。

1. RDOリポジトリのセットアップ

$ yum install -y https://rdoproject.org/repos/rdo-release.rpm

2. Packstack Installer セットアップ

$ yum install -y openstack-packstack

3. Answer file作成

$ packstack --gen-answer-file=answer.txt

4. Answerfileの編集

デフォルトでインストールされないサービスを必要に応じて、インストールするように設定

CONFIG_MANILA_INSTALL=y
CONFIG_SAHARA_INSTALL=y
CONFIG_HEAT_INSTALL=y
CONFIG_TROVE_INSTALL=y

各サービスのエンドポイントで使用されるIPアドレスを、管理用ネットワークのNICのIPアドレスに変更。
(Packstackで自動作成された、Answer fileでは、一つ目のNIC:enp0s3のIPアドレス(10.0.2.15)がデフォルトで設定される。
今回の構成では、二つ目のNIC:enp0s8のIPアドレス(192.168.56.100)を設定する。)

vi エディタで下記のように置換。

:%s/10.0.2.15/192.168.56.100/gc

各サービスのパスワードを変更。デフォルトのままでも良く、Answer Fileに記載されているので、わからなくなってもあとから確認は可能。

5. OpenStackのインストール

下記のコマンドを実行し、OpenStackをインストール。30分~1時間でインストールが完了。

$ packstack --answer-file=answer.txt

6. OpenStack Dashboardの確認

下記にアクセスして、User ID: admin、パスワードはAnswer Fileで設定したパスワードでLogin。
adminのパスワードは~/keystonerc_adminに書かれているので、確認可能。

http://192.168.56.100/dashboard/

ダッシュボード確認できれば、ひとまずインストールは成功。
2016-04-20_18h37_54.png

7. 各サービスのステータス確認

下記コマンドで、インストールしたOpenStackの各サービスのステータスがAliveであることを確認する。(OpenStackのコマンドラインツールでOpenstackを操作するために、admin用の環境変数を読み込み、ステータスを確認。)

$ source keystonerc_admin
$ openstack-status

8. 仮想ブリッジ: br-ex の設定

RDOでのOpenStackインストール直後は、インスタンスが外部ネットワークにアクセスするルートが設定されていないので、設定する。Open vSwitchで仮想ブリッジ:br-exを作成し、外部ネットワークに繋がっているenp0s3を接続するように設定する。

ifcfg-enp0s3をコピーして、ifcfg-br-exを作成。

cp ifcfg-enp0s3 ifcfg-br-ex

ifcfg-enp0s3を下記のように設定。

TYPE=OVSPort
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes
DEVICETYPE=ovs
OVS_BRIDGE=br-ex

ifcfg-br-exを下記のように設定。OVSの仮想ブリッジにDHCPでIPを割り当てるため、
OVSBOOTPROTO, OVSDHCPINTERFACESを設定。

 TYPE=OVSBridge
 OVSBOOTPROTO=dhcp
 OVSDHCPINTERFACES=enp0s3
 NAME=br-ex
 DEVICE=br-ex
 DEVICETYPE=ovs

設定後、ネットワークをリスタート。

$ systemctl restart network.service

仮想ブリッジbr-exにNIC enp0s3が接続されていることを確認。

$ ovs-vsctl show
・・・
Bridge br-ex
     Port br-ex
         Interface br-ex
             type: internal
     Port "enp0s3"
         Interface "enp0s3"
 ovs_version: "2.4.0"

テストインスタンスの作成

admin ユーザーでテストインスタンスを作成し、SSHで外部からアクセスできること、また、インスタンス内部から外部ネットワークにアクセスできることを確認する。

1. 既存ネットワークの削除

RDOでインストールすると、172.24.4.228/28というPublicネットワークが作成されていたが、ホストOSのWindowsからインスタンスにアクセスできるように、10.0.2.0/24をPublicネットワークとするように作り変える。

既存のPublic Networkには、demo tenantのルーター(router1)に接続されているため、このルーターとの接続を解除し、その後、Public Networkを削除する。削除は、adminでログインし、ルーター、および、ネットワークの設定画面(「管理」→「ルーター」「ネットワーク」)で行う。

2016-04-21_10h20_38.png

2. Public Networkの作成

同じ画面で、下記の通り外部接続用のPublic Networkを作成する。

2016-04-21_11h20_04.png

プロジェクトのネットワーク設定画面(「プロジェクト」→「ネットワーク」→「ネットワーク」)にて、サブネットを追加する。

2016-04-21_11h24_30.png

  • サブネット
    • ネットワーク名: Public_subnet
    • ネットワークアドレス: 10.0.2.0/24
    • ゲートウェイIP: 10.0.2.15
  • サブネット詳細
    • DHCP有効
    • IP割当プール: 10.0.2.20,10.0.2.50 (とりあえず、20個)
    • DSN IP: 8.8.8.8(Googleのネームサーバー)

3. Private Network作成

インスタンスに割り当てるプライベートネットワークを作成する。設定は下記のように行った。

  • ネットワーク
    • ネットワーク名: private
    • サブネット作成にチェック
  • サブネット
    • ネットワーク名: private_subnet
    • ネットワークアドレス: 192.168.1.0/24
    • ゲートウェイIP: 192.168.1.1
  • サブネット詳細
    • DHCP有効
    • IP割当プール: 192.168.1.10,192.168.1.30 (とりあえず、20個)
    • DSN IP: 8.8.8.8(Googleのネームサーバー)

4. 仮想ルーター作成

ルーター設定画面で、ルーターを新規作成。その後、「ゲートウェイの設定」でPublic Networkを、「インターフェースの追加」でPrivate Networkを接続する。

ネットワークトポロジーを見ると下記のように、ルーターにPublic/Private Networkが接続されていることが分かる。

2016-04-21_13h24_34.png

5. OS Imageの登録

Glanceに起動するインスタンスのImageを登録。FedoraのOpenStack向けの公式Imageをダウンロードして使用することにする。

2016-04-21_11h36_52.png

ダウンロード後、イメージ管理画面で、「イメージの作成」ボタンからImageを登録する。

2016-04-21_11h39_15.png

6. セキュリティーグループの設定

デフォルトで用意されている「default」にセキュリティーポリシーを追加し、ICMPとSSHの受信を許可するようにする。(これを行わないと、インスタンスにPing, SSH接続ができない。)

「コンピュート」→「アクセスとセキュリティー」→「セキュリティーグループ」とたどり、「ルールの管理」にてALL ICMPとSSHを追加。

2016-04-21_11h42_53.png

7. キーペアの追加

SSH接続するためのキーペアを追加する。Horizon上でキーペアを追加し、Windows PCへダウンロードするとWindows上でキーの変換を行う必要があるので、CentOS上でキーペアを作成し、OpenStackへ登録するようにする。ホームディレクトリに秘密鍵が作成されていることを確認。

$ source keystonerc_admin
$ nova keypair-add admin > admin_key.pem   → キーペア名: admin, 秘密鍵名: admin_key.pem
$ ls -l
-rw-r--r--. 1 root root  1688 Apr 17 23:40 admin_key.pem
-rw-------. 1 root root  1184 Feb 26 14:37 anaconda-ks.cfg
-rw-------. 1 root root 48576 Apr 17 20:26 answer.txt
-rw-r--r--. 1 root root  1684 Apr 17 22:44 demo_key.pem
-rw-------. 1 root root   233 Apr 17 23:40 keystonerc_admin
-rw-------. 1 root root   233 Apr 17 22:43 keystonerc_demo

8. インスタンス作成

「コンピュート」→「インスタンス」より「インスタンスの起動」を押して、起動するインスタンスのパラメータを設定し、インスタンスを作成。

  • ソース
    • Fedora
  • フレーバー
    • m1.small
  • ネットワーク
    • Private
  • セキュリティーグループ
    • default
  • キーペア
    • admin

2016-04-21_11h52_04.png

9. Floating IPの設定

作成したインスタンスのメニューから「Floating IPの割り当て」を選択し、IPの割当を行う。Private IPがNAT変換され、割り当てられたPublic IPで外部に接続しにいくことになる。

2016-04-21_12h59_18.png

結果、インスタンスには下記のIPが割り振られた。

  • Floating IP
    • 10.0.2.22
  • Private IP
    • 192.168.1.13

10. テストインスタンスへのアクセス

CentOS上から秘密鍵を使ってSSHで接続可能であることを確認する。Fedora公式ImageのUser IDは「fedora」が設定されているので、このIDでLogin。その後Login後、pingでインスタンスから外部にアクセス可能なことを確認。

$ ping 10.0.2.22
PING 10.0.2.22 (10.0.2.22) 56(84) bytes of data.
64 bytes from 10.0.2.22: icmp_seq=1 ttl=63 time=0.990 ms
64 bytes from 10.0.2.22: icmp_seq=2 ttl=63 time=0.559 ms
64 bytes from 10.0.2.22: icmp_seq=3 ttl=63 time=1.36 ms

$ chmod 600 admin_key.pem             → パーミッションを変更しないとSSHで接続できない。
$ ssh -i admin_key.pem fedora@10.0.2.22  → 公式イメージのUser IDは「fedora」

[fedora@test ~]$                      → ログイン成功
[fedora@test ~]$ ping www.yahoo.co.jp
PING www.g.yahoo.co.jp (182.22.71.251) 56(84) bytes of data.
64 bytes from f8.top.vip.ssk.yahoo.co.jp (182.22.71.251): icmp_seq=1 ttl=43 time=21.6 ms
64 bytes from f8.top.vip.ssk.yahoo.co.jp (182.22.71.251): icmp_seq=2 ttl=43 time=21.9 ms
64 bytes from f8.top.vip.ssk.yahoo.co.jp (182.22.71.251): icmp_seq=3 ttl=43 time=21.3 ms

RDOでAll-in-oneインストールといえど、いろいろはまりどころがある印象でした。特に仮想ネットワーク周りの知識が弱かったので、ネットワーク周りの設定に苦労しました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away