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

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

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